diff options
author | caseq <caseq@chromium.org> | 2015-02-04 08:43:27 -0800 |
---|---|---|
committer | Commit bot <commit-bot@chromium.org> | 2015-02-04 16:44:17 +0000 |
commit | 7d2f4c95e904d0b2592a67672bc00c3387a694e1 (patch) | |
tree | 789495107f335b867b5ad5c267a8f80def195a7d /cc | |
parent | 2d6463e4820c51c9852e276c4690db0ae8350f30 (diff) | |
download | chromium_src-7d2f4c95e904d0b2592a67672bc00c3387a694e1.zip chromium_src-7d2f4c95e904d0b2592a67672bc00c3387a694e1.tar.gz chromium_src-7d2f4c95e904d0b2592a67672bc00c3387a694e1.tar.bz2 |
DevTools: unwire WebDevToolsAgent from CC, emit trace events directly in CC
This removes plumbing for InstrumentWillBeginFrame(), InstrumentDidBeginFrame(),
InstrumentDidCancelFrame() and InstrumentWillComposite() between CC and
WebDevToolsAgent and replaces it with trace events emitted directly from CC.
Note all related methods of LayerTreeHostClient still remain, as they're used
in tests.
TBR=jamesr
(for mojo/)
BUG=
Review URL: https://codereview.chromium.org/892203002
Cr-Commit-Position: refs/heads/master@{#314571}
Diffstat (limited to 'cc')
-rw-r--r-- | cc/debug/devtools_instrumentation.h | 33 | ||||
-rw-r--r-- | cc/test/fake_layer_tree_host_client.h | 2 | ||||
-rw-r--r-- | cc/test/layer_tree_test.cc | 4 | ||||
-rw-r--r-- | cc/trees/layer_tree_host.cc | 6 | ||||
-rw-r--r-- | cc/trees/layer_tree_host.h | 4 | ||||
-rw-r--r-- | cc/trees/layer_tree_host_client.h | 2 | ||||
-rw-r--r-- | cc/trees/layer_tree_host_unittest_no_message_loop.cc | 2 | ||||
-rw-r--r-- | cc/trees/single_thread_proxy.cc | 3 | ||||
-rw-r--r-- | cc/trees/thread_proxy.cc | 2 |
9 files changed, 49 insertions, 9 deletions
diff --git a/cc/debug/devtools_instrumentation.h b/cc/debug/devtools_instrumentation.h index cfe3e5a..73788a5 100644 --- a/cc/debug/devtools_instrumentation.h +++ b/cc/debug/devtools_instrumentation.h @@ -6,6 +6,7 @@ #define CC_DEBUG_DEVTOOLS_INSTRUMENTATION_H_ #include "base/trace_event/trace_event.h" +#include "base/trace_event/trace_event_argument.h" namespace cc { namespace devtools_instrumentation { @@ -14,6 +15,7 @@ namespace internal { const char kCategory[] = TRACE_DISABLED_BY_DEFAULT("devtools.timeline"); const char kCategoryFrame[] = TRACE_DISABLED_BY_DEFAULT("devtools.timeline.frame"); +const char kData[] = "data"; const char kFrameId[] = "frameId"; const char kLayerId[] = "layerId"; const char kLayerTreeId[] = "layerTreeId"; @@ -23,7 +25,9 @@ const char kImageDecodeTask[] = "ImageDecodeTask"; const char kBeginFrame[] = "BeginFrame"; const char kActivateLayerTree[] = "ActivateLayerTree"; const char kRequestMainThreadFrame[] = "RequestMainThreadFrame"; +const char kBeginMainThreadFrame[] = "BeginMainThreadFrame"; const char kDrawFrame[] = "DrawFrame"; +const char kCompositeLayers[] = "CompositeLayers"; } // namespace internal const char kPaintSetup[] = "PaintSetup"; @@ -77,6 +81,20 @@ class ScopedLayerTreeTask { DISALLOW_COPY_AND_ASSIGN(ScopedLayerTreeTask); }; +struct ScopedCommitTrace { + public: + explicit ScopedCommitTrace(int layer_tree_host_id) { + TRACE_EVENT_BEGIN1(internal::kCategory, internal::kCompositeLayers, + internal::kLayerTreeId, layer_tree_host_id); + } + ~ScopedCommitTrace() { + TRACE_EVENT_END0(internal::kCategory, internal::kCompositeLayers); + } + + private: + DISALLOW_COPY_AND_ASSIGN(ScopedCommitTrace); +}; + struct ScopedLayerObjectTracker : public base::debug::TraceScopedTrackableObject<int> { explicit ScopedLayerObjectTracker(int layer_id) @@ -124,6 +142,21 @@ inline void DidRequestMainThreadFrame(int layer_tree_host_id) { layer_tree_host_id); } +inline scoped_refptr<base::debug::ConvertableToTraceFormat> +BeginMainThreadFrameData(int frame_id) { + scoped_refptr<base::debug::TracedValue> value = + new base::debug::TracedValue(); + value->SetInteger("frameId", frame_id); + return value; +} + +inline void WillBeginMainThreadFrame(int layer_tree_host_id, int frame_id) { + TRACE_EVENT_INSTANT2( + internal::kCategoryFrame, internal::kBeginMainThreadFrame, + TRACE_EVENT_SCOPE_THREAD, internal::kLayerTreeId, layer_tree_host_id, + internal::kData, BeginMainThreadFrameData(frame_id)); +} + } // namespace devtools_instrumentation } // namespace cc diff --git a/cc/test/fake_layer_tree_host_client.h b/cc/test/fake_layer_tree_host_client.h index 5f7afa5..8fcafdb 100644 --- a/cc/test/fake_layer_tree_host_client.h +++ b/cc/test/fake_layer_tree_host_client.h @@ -30,7 +30,7 @@ class FakeLayerTreeHostClient : public LayerTreeHostClient, void SetLayerTreeHost(LayerTreeHost* host) { host_ = host; } // LayerTreeHostClient implementation. - void WillBeginMainFrame(int frame_id) override {} + void WillBeginMainFrame() override {} void DidBeginMainFrame() override {} void BeginMainFrame(const BeginFrameArgs& args) override {} void Layout() override {} diff --git a/cc/test/layer_tree_test.cc b/cc/test/layer_tree_test.cc index d02b510..5f69c35 100644 --- a/cc/test/layer_tree_test.cc +++ b/cc/test/layer_tree_test.cc @@ -381,9 +381,7 @@ class LayerTreeHostClientForTesting : public LayerTreeHostClient, } ~LayerTreeHostClientForTesting() override {} - void WillBeginMainFrame(int frame_id) override { - test_hooks_->WillBeginMainFrame(); - } + void WillBeginMainFrame() override { test_hooks_->WillBeginMainFrame(); } void DidBeginMainFrame() override { test_hooks_->DidBeginMainFrame(); } diff --git a/cc/trees/layer_tree_host.cc b/cc/trees/layer_tree_host.cc index 0f48cb2..2567122 100644 --- a/cc/trees/layer_tree_host.cc +++ b/cc/trees/layer_tree_host.cc @@ -222,6 +222,12 @@ void LayerTreeHost::DeleteContentsTexturesOnImplThread( contents_texture_manager_->ClearAllMemory(resource_provider); } +void LayerTreeHost::WillBeginMainFrame() { + devtools_instrumentation::WillBeginMainThreadFrame(id(), + source_frame_number()); + client_->WillBeginMainFrame(); +} + void LayerTreeHost::DidBeginMainFrame() { client_->DidBeginMainFrame(); } diff --git a/cc/trees/layer_tree_host.h b/cc/trees/layer_tree_host.h index 7db722f..f41e023 100644 --- a/cc/trees/layer_tree_host.h +++ b/cc/trees/layer_tree_host.h @@ -110,9 +110,7 @@ class CC_EXPORT LayerTreeHost { void SetLayerTreeHostClientReady(); // LayerTreeHost interface to Proxy. - void WillBeginMainFrame() { - client_->WillBeginMainFrame(source_frame_number_); - } + void WillBeginMainFrame(); void DidBeginMainFrame(); void BeginMainFrame(const BeginFrameArgs& args); void AnimateLayers(base::TimeTicks monotonic_frame_begin_time); diff --git a/cc/trees/layer_tree_host_client.h b/cc/trees/layer_tree_host_client.h index ac025f2..a712534 100644 --- a/cc/trees/layer_tree_host_client.h +++ b/cc/trees/layer_tree_host_client.h @@ -22,7 +22,7 @@ struct BeginFrameArgs; class LayerTreeHostClient { public: - virtual void WillBeginMainFrame(int frame_id) = 0; + virtual void WillBeginMainFrame() = 0; // Marks finishing compositing-related tasks on the main thread. In threaded // mode, this corresponds to DidCommit(). virtual void BeginMainFrame(const BeginFrameArgs& args) = 0; diff --git a/cc/trees/layer_tree_host_unittest_no_message_loop.cc b/cc/trees/layer_tree_host_unittest_no_message_loop.cc index 75eda92..260bfbe 100644 --- a/cc/trees/layer_tree_host_unittest_no_message_loop.cc +++ b/cc/trees/layer_tree_host_unittest_no_message_loop.cc @@ -54,7 +54,7 @@ class LayerTreeHostNoMessageLoopTest ~LayerTreeHostNoMessageLoopTest() override {} // LayerTreeHostClient overrides. - void WillBeginMainFrame(int frame_id) override {} + void WillBeginMainFrame() override {} void BeginMainFrame(const BeginFrameArgs& args) override {} void DidBeginMainFrame() override {} void Layout() override {} diff --git a/cc/trees/single_thread_proxy.cc b/cc/trees/single_thread_proxy.cc index dc58d39..f913c1f 100644 --- a/cc/trees/single_thread_proxy.cc +++ b/cc/trees/single_thread_proxy.cc @@ -7,6 +7,7 @@ #include "base/auto_reset.h" #include "base/trace_event/trace_event.h" #include "cc/debug/benchmark_instrumentation.h" +#include "cc/debug/devtools_instrumentation.h" #include "cc/output/context_provider.h" #include "cc/output/output_surface.h" #include "cc/quads/draw_quad.h" @@ -204,6 +205,8 @@ void SingleThreadProxy::DoCommit() { commit_requested_ = false; layer_tree_host_->WillCommit(); + devtools_instrumentation::ScopedCommitTrace commit_task( + layer_tree_host_->id()); // Commit immediately. { diff --git a/cc/trees/thread_proxy.cc b/cc/trees/thread_proxy.cc index 88f1314..5ee43ab 100644 --- a/cc/trees/thread_proxy.cc +++ b/cc/trees/thread_proxy.cc @@ -796,6 +796,8 @@ void ThreadProxy::BeginMainFrame( bool updated = layer_tree_host()->UpdateLayers(queue.get()); layer_tree_host()->WillCommit(); + devtools_instrumentation::ScopedCommitTrace commit_task( + layer_tree_host()->id()); // Before calling animate, we set main().animate_requested to false. If it is // true now, it means SetNeedAnimate was called again, but during a state when |