Home | History | Annotate | Download | only in debug
      1 // Copyright 2013 The Chromium Authors. All rights reserved.
      2 // Use of this source code is governed by a BSD-style license that can be
      3 // found in the LICENSE file.
      4 
      5 #ifndef CC_DEBUG_DEVTOOLS_INSTRUMENTATION_H_
      6 #define CC_DEBUG_DEVTOOLS_INSTRUMENTATION_H_
      7 
      8 #include "base/debug/trace_event.h"
      9 
     10 namespace cc {
     11 namespace devtools_instrumentation {
     12 
     13 namespace internal {
     14 const char kCategory[] = "cc,devtools";
     15 const char kLayerId[] = "layerId";
     16 const char kLayerTreeId[] = "layerTreeId";
     17 }
     18 
     19 const char kPaintLayer[] = "PaintLayer";
     20 const char kRasterTask[] = "RasterTask";
     21 const char kImageDecodeTask[] = "ImageDecodeTask";
     22 const char kPaintSetup[] = "PaintSetup";
     23 const char kUpdateLayer[] = "UpdateLayer";
     24 
     25 class ScopedLayerTask {
     26  public:
     27   ScopedLayerTask(const char* event_name, int layer_id)
     28     : event_name_(event_name) {
     29     TRACE_EVENT_BEGIN1(internal::kCategory, event_name_,
     30         internal::kLayerId, layer_id);
     31   }
     32   ~ScopedLayerTask() {
     33     TRACE_EVENT_END0(internal::kCategory, event_name_);
     34   }
     35  private:
     36   const char* event_name_;
     37 
     38   DISALLOW_COPY_AND_ASSIGN(ScopedLayerTask);
     39 };
     40 
     41 class ScopedLayerTreeTask {
     42  public:
     43   ScopedLayerTreeTask(const char* event_name,
     44                       int layer_id,
     45                       uint64 tree_id)
     46     : event_name_(event_name) {
     47     TRACE_EVENT_BEGIN2(internal::kCategory, event_name_,
     48         internal::kLayerId, layer_id, internal::kLayerTreeId, tree_id);
     49   }
     50   ~ScopedLayerTreeTask() {
     51     TRACE_EVENT_END0(internal::kCategory, event_name_);
     52   }
     53  private:
     54   const char* event_name_;
     55 
     56   DISALLOW_COPY_AND_ASSIGN(ScopedLayerTreeTask);
     57 };
     58 
     59 struct ScopedLayerObjectTracker
     60     : public base::debug::TraceScopedTrackableObject<int> {
     61   explicit ScopedLayerObjectTracker(int layer_id)
     62       : base::debug::TraceScopedTrackableObject<int>(
     63             internal::kCategory,
     64             internal::kLayerId,
     65             layer_id) {
     66   }
     67 
     68  private:
     69   DISALLOW_COPY_AND_ASSIGN(ScopedLayerObjectTracker);
     70 };
     71 
     72 }  // namespace devtools_instrumentation
     73 }  // namespace cc
     74 
     75 #endif  // CC_DEBUG_DEVTOOLS_INSTRUMENTATION_H_
     76