| // Copyright 2020 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 COMPONENTS_PERFORMANCE_MANAGER_EXECUTION_CONTEXT_EXECUTION_CONTEXT_IMPL_H_ | 
 | #define COMPONENTS_PERFORMANCE_MANAGER_EXECUTION_CONTEXT_EXECUTION_CONTEXT_IMPL_H_ | 
 |  | 
 | namespace performance_manager { | 
 |  | 
 | class FrameNode; | 
 | class WorkerNode; | 
 |  | 
 | namespace execution_context { | 
 |  | 
 | class ExecutionContext; | 
 |  | 
 | // Constructs ExecutionContext wrappers (implemented as NodeAttachedData) for | 
 | // FrameNodes and WorkerNodes. Once created the objects will live until the | 
 | // underlying node disappears. These should only be called from the graph | 
 | // sequence, like the underlying objects they wrap. The public interface of | 
 | // this is via ExecutionContextRegistry::GetExecutionContextFor*Node(). | 
 | const ExecutionContext* GetOrCreateExecutionContextForFrameNode( | 
 |     const FrameNode* frame_node); | 
 | const ExecutionContext* GetOrCreateExecutionContextForWorkerNode( | 
 |     const WorkerNode* worker_node); | 
 |  | 
 | }  // namespace execution_context | 
 | }  // namespace performance_manager | 
 |  | 
 | #endif  // COMPONENTS_PERFORMANCE_MANAGER_EXECUTION_CONTEXT_EXECUTION_CONTEXT_IMPL_H_ |