123456789101112131415161718192021222324252627282930313233343536373839404142434445464748 |
- // Copyright 2013 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 GIN_PER_CONTEXT_DATA_H_
- #define GIN_PER_CONTEXT_DATA_H_
- #include "base/memory/raw_ptr.h"
- #include "base/supports_user_data.h"
- #include "gin/gin_export.h"
- #include "v8/include/v8-forward.h"
- namespace gin {
- class ContextHolder;
- class Runner;
- // There is one instance of PerContextData per v8::Context managed by Gin. This
- // class stores all the Gin-related data that varies per context. Arbitrary data
- // can be associated with this class by way of the SupportsUserData methods.
- // Instances of this class (and any associated user data) are destroyed before
- // the associated v8::Context.
- class GIN_EXPORT PerContextData : public base::SupportsUserData {
- public:
- PerContextData(ContextHolder* context_holder,
- v8::Local<v8::Context> context);
- PerContextData(const PerContextData&) = delete;
- PerContextData& operator=(const PerContextData&) = delete;
- ~PerContextData() override;
- // Can return NULL after the ContextHolder has detached from context.
- static PerContextData* From(v8::Local<v8::Context> context);
- // The Runner associated with this context. To execute script in this context,
- // please use the appropriate API on Runner.
- Runner* runner() const { return runner_; }
- void set_runner(Runner* runner) { runner_ = runner; }
- ContextHolder* context_holder() { return context_holder_; }
- private:
- raw_ptr<ContextHolder> context_holder_;
- raw_ptr<Runner> runner_;
- };
- } // namespace gin
- #endif // GIN_PER_CONTEXT_DATA_H_
|