Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(399)

Side by Side Diff: cc/trees/layer_tree_host_unittest_context.cc

Issue 1783613004: CC Animation: Erase cc::LayerSettings everywhere. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@eraseandroid
Patch Set: Rebase. Created 4 years, 9 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 // Copyright 2012 The Chromium Authors. All rights reserved. 1 // Copyright 2012 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "cc/trees/layer_tree_host.h" 5 #include "cc/trees/layer_tree_host.h"
6 6
7 #include <stddef.h> 7 #include <stddef.h>
8 #include <stdint.h> 8 #include <stdint.h>
9 9
10 #include "cc/layers/heads_up_display_layer.h" 10 #include "cc/layers/heads_up_display_layer.h"
(...skipping 599 matching lines...) Expand 10 before | Expand all | Expand 10 after
610 }; 610 };
611 611
612 // This test uses Composite() which only exists for single thread. 612 // This test uses Composite() which only exists for single thread.
613 SINGLE_THREAD_TEST_F(LayerTreeHostContextTestAvoidUnnecessaryComposite); 613 SINGLE_THREAD_TEST_F(LayerTreeHostContextTestAvoidUnnecessaryComposite);
614 614
615 // This test uses PictureLayer to check for a working context. 615 // This test uses PictureLayer to check for a working context.
616 class LayerTreeHostContextTestLostContextSucceedsWithContent 616 class LayerTreeHostContextTestLostContextSucceedsWithContent
617 : public LayerTreeHostContextTestLostContextSucceeds { 617 : public LayerTreeHostContextTestLostContextSucceeds {
618 public: 618 public:
619 void SetupTree() override { 619 void SetupTree() override {
620 root_ = Layer::Create(layer_settings()); 620 root_ = Layer::Create();
621 root_->SetBounds(gfx::Size(10, 10)); 621 root_->SetBounds(gfx::Size(10, 10));
622 root_->SetIsDrawable(true); 622 root_->SetIsDrawable(true);
623 623
624 // Paint non-solid color. 624 // Paint non-solid color.
625 SkPaint paint; 625 SkPaint paint;
626 paint.setColor(SkColorSetARGB(100, 80, 200, 200)); 626 paint.setColor(SkColorSetARGB(100, 80, 200, 200));
627 client_.add_draw_rect(gfx::Rect(5, 5), paint); 627 client_.add_draw_rect(gfx::Rect(5, 5), paint);
628 628
629 layer_ = FakePictureLayer::Create(layer_settings(), &client_); 629 layer_ = FakePictureLayer::Create(&client_);
630 layer_->SetBounds(gfx::Size(10, 10)); 630 layer_->SetBounds(gfx::Size(10, 10));
631 layer_->SetIsDrawable(true); 631 layer_->SetIsDrawable(true);
632 632
633 root_->AddChild(layer_); 633 root_->AddChild(layer_);
634 634
635 layer_tree_host()->SetRootLayer(root_); 635 layer_tree_host()->SetRootLayer(root_);
636 LayerTreeHostContextTest::SetupTree(); 636 LayerTreeHostContextTest::SetupTree();
637 client_.set_bounds(root_->bounds()); 637 client_.set_bounds(root_->bounds());
638 } 638 }
639 639
(...skipping 59 matching lines...) Expand 10 before | Expand all | Expand 10 after
699 num_commits_(0), 699 num_commits_(0),
700 lost_context_(false) {} 700 lost_context_(false) {}
701 701
702 void SetupTree() override { 702 void SetupTree() override {
703 // Paint non-solid color. 703 // Paint non-solid color.
704 SkPaint paint; 704 SkPaint paint;
705 paint.setColor(SkColorSetARGB(100, 80, 200, 200)); 705 paint.setColor(SkColorSetARGB(100, 80, 200, 200));
706 client_.add_draw_rect(gfx::Rect(5, 5), paint); 706 client_.add_draw_rect(gfx::Rect(5, 5), paint);
707 707
708 scoped_refptr<FakePictureLayer> picture_layer = 708 scoped_refptr<FakePictureLayer> picture_layer =
709 FakePictureLayer::Create(layer_settings(), &client_); 709 FakePictureLayer::Create(&client_);
710 picture_layer->SetBounds(gfx::Size(10, 20)); 710 picture_layer->SetBounds(gfx::Size(10, 20));
711 client_.set_bounds(picture_layer->bounds()); 711 client_.set_bounds(picture_layer->bounds());
712 layer_tree_host()->SetRootLayer(picture_layer); 712 layer_tree_host()->SetRootLayer(picture_layer);
713 713
714 LayerTreeHostContextTest::SetupTree(); 714 LayerTreeHostContextTest::SetupTree();
715 } 715 }
716 716
717 void BeginTest() override { PostSetNeedsCommitToMainThread(); } 717 void BeginTest() override { PostSetNeedsCommitToMainThread(); }
718 718
719 void PostEvictTextures() { 719 void PostEvictTextures() {
(...skipping 107 matching lines...) Expand 10 before | Expand all | Expand 10 after
827 lose_after_evict_ = false; 827 lose_after_evict_ = false;
828 RunTest(CompositorMode::THREADED, true); 828 RunTest(CompositorMode::THREADED, true);
829 } 829 }
830 830
831 class LayerTreeHostContextTestLayersNotified : public LayerTreeHostContextTest { 831 class LayerTreeHostContextTestLayersNotified : public LayerTreeHostContextTest {
832 public: 832 public:
833 LayerTreeHostContextTestLayersNotified() 833 LayerTreeHostContextTestLayersNotified()
834 : LayerTreeHostContextTest(), num_commits_(0) {} 834 : LayerTreeHostContextTest(), num_commits_(0) {}
835 835
836 void SetupTree() override { 836 void SetupTree() override {
837 root_ = FakePictureLayer::Create(layer_settings(), &client_); 837 root_ = FakePictureLayer::Create(&client_);
838 child_ = FakePictureLayer::Create(layer_settings(), &client_); 838 child_ = FakePictureLayer::Create(&client_);
839 grandchild_ = FakePictureLayer::Create(layer_settings(), &client_); 839 grandchild_ = FakePictureLayer::Create(&client_);
840 840
841 root_->AddChild(child_); 841 root_->AddChild(child_);
842 child_->AddChild(grandchild_); 842 child_->AddChild(grandchild_);
843 843
844 layer_tree_host()->SetRootLayer(root_); 844 layer_tree_host()->SetRootLayer(root_);
845 LayerTreeHostContextTest::SetupTree(); 845 LayerTreeHostContextTest::SetupTree();
846 client_.set_bounds(root_->bounds()); 846 client_.set_bounds(root_->bounds());
847 } 847 }
848 848
849 void BeginTest() override { PostSetNeedsCommitToMainThread(); } 849 void BeginTest() override { PostSetNeedsCommitToMainThread(); }
(...skipping 97 matching lines...) Expand 10 before | Expand all | Expand 10 after
947 947
948 gpu::Mailbox mailbox; 948 gpu::Mailbox mailbox;
949 gl->GenMailboxCHROMIUM(mailbox.name); 949 gl->GenMailboxCHROMIUM(mailbox.name);
950 950
951 const GLuint64 fence_sync = gl->InsertFenceSyncCHROMIUM(); 951 const GLuint64 fence_sync = gl->InsertFenceSyncCHROMIUM();
952 gl->ShallowFlushCHROMIUM(); 952 gl->ShallowFlushCHROMIUM();
953 953
954 gpu::SyncToken sync_token; 954 gpu::SyncToken sync_token;
955 gl->GenSyncTokenCHROMIUM(fence_sync, sync_token.GetData()); 955 gl->GenSyncTokenCHROMIUM(fence_sync, sync_token.GetData());
956 956
957 scoped_refptr<Layer> root = Layer::Create(layer_settings()); 957 scoped_refptr<Layer> root = Layer::Create();
958 root->SetBounds(gfx::Size(10, 10)); 958 root->SetBounds(gfx::Size(10, 10));
959 root->SetIsDrawable(true); 959 root->SetIsDrawable(true);
960 960
961 scoped_refptr<PictureLayer> layer = 961 scoped_refptr<PictureLayer> layer = PictureLayer::Create(&client_);
962 PictureLayer::Create(layer_settings(), &client_);
963 layer->SetBounds(gfx::Size(10, 10)); 962 layer->SetBounds(gfx::Size(10, 10));
964 layer->SetIsDrawable(true); 963 layer->SetIsDrawable(true);
965 root->AddChild(layer); 964 root->AddChild(layer);
966 965
967 scoped_refptr<TextureLayer> texture = 966 scoped_refptr<TextureLayer> texture = TextureLayer::CreateForMailbox(NULL);
968 TextureLayer::CreateForMailbox(layer_settings_, NULL);
969 texture->SetBounds(gfx::Size(10, 10)); 967 texture->SetBounds(gfx::Size(10, 10));
970 texture->SetIsDrawable(true); 968 texture->SetIsDrawable(true);
971 texture->SetTextureMailbox( 969 texture->SetTextureMailbox(
972 TextureMailbox(mailbox, sync_token, GL_TEXTURE_2D), 970 TextureMailbox(mailbox, sync_token, GL_TEXTURE_2D),
973 SingleReleaseCallback::Create( 971 SingleReleaseCallback::Create(
974 base::Bind(&LayerTreeHostContextTestDontUseLostResources:: 972 base::Bind(&LayerTreeHostContextTestDontUseLostResources::
975 EmptyReleaseCallback))); 973 EmptyReleaseCallback)));
976 root->AddChild(texture); 974 root->AddChild(texture);
977 975
978 scoped_refptr<PictureLayer> mask = 976 scoped_refptr<PictureLayer> mask = PictureLayer::Create(&client_);
979 PictureLayer::Create(layer_settings_, &client_);
980 mask->SetBounds(gfx::Size(10, 10)); 977 mask->SetBounds(gfx::Size(10, 10));
981 client_.set_bounds(mask->bounds()); 978 client_.set_bounds(mask->bounds());
982 979
983 scoped_refptr<PictureLayer> layer_with_mask = 980 scoped_refptr<PictureLayer> layer_with_mask =
984 PictureLayer::Create(layer_settings_, &client_); 981 PictureLayer::Create(&client_);
985 layer_with_mask->SetBounds(gfx::Size(10, 10)); 982 layer_with_mask->SetBounds(gfx::Size(10, 10));
986 layer_with_mask->SetIsDrawable(true); 983 layer_with_mask->SetIsDrawable(true);
987 layer_with_mask->SetMaskLayer(mask.get()); 984 layer_with_mask->SetMaskLayer(mask.get());
988 root->AddChild(layer_with_mask); 985 root->AddChild(layer_with_mask);
989 986
990 scoped_refptr<VideoLayer> video_color = VideoLayer::Create( 987 scoped_refptr<VideoLayer> video_color =
991 layer_settings_, &color_frame_provider_, media::VIDEO_ROTATION_0); 988 VideoLayer::Create(&color_frame_provider_, media::VIDEO_ROTATION_0);
992 video_color->SetBounds(gfx::Size(10, 10)); 989 video_color->SetBounds(gfx::Size(10, 10));
993 video_color->SetIsDrawable(true); 990 video_color->SetIsDrawable(true);
994 root->AddChild(video_color); 991 root->AddChild(video_color);
995 992
996 scoped_refptr<VideoLayer> video_hw = VideoLayer::Create( 993 scoped_refptr<VideoLayer> video_hw =
997 layer_settings_, &hw_frame_provider_, media::VIDEO_ROTATION_0); 994 VideoLayer::Create(&hw_frame_provider_, media::VIDEO_ROTATION_0);
998 video_hw->SetBounds(gfx::Size(10, 10)); 995 video_hw->SetBounds(gfx::Size(10, 10));
999 video_hw->SetIsDrawable(true); 996 video_hw->SetIsDrawable(true);
1000 root->AddChild(video_hw); 997 root->AddChild(video_hw);
1001 998
1002 scoped_refptr<VideoLayer> video_scaled_hw = VideoLayer::Create( 999 scoped_refptr<VideoLayer> video_scaled_hw =
1003 layer_settings_, &scaled_hw_frame_provider_, media::VIDEO_ROTATION_0); 1000 VideoLayer::Create(&scaled_hw_frame_provider_, media::VIDEO_ROTATION_0);
1004 video_scaled_hw->SetBounds(gfx::Size(10, 10)); 1001 video_scaled_hw->SetBounds(gfx::Size(10, 10));
1005 video_scaled_hw->SetIsDrawable(true); 1002 video_scaled_hw->SetIsDrawable(true);
1006 root->AddChild(video_scaled_hw); 1003 root->AddChild(video_scaled_hw);
1007 1004
1008 color_video_frame_ = VideoFrame::CreateColorFrame( 1005 color_video_frame_ = VideoFrame::CreateColorFrame(
1009 gfx::Size(4, 4), 0x80, 0x80, 0x80, base::TimeDelta()); 1006 gfx::Size(4, 4), 0x80, 0x80, 0x80, base::TimeDelta());
1010 ASSERT_TRUE(color_video_frame_); 1007 ASSERT_TRUE(color_video_frame_);
1011 hw_video_frame_ = VideoFrame::WrapNativeTexture( 1008 hw_video_frame_ = VideoFrame::WrapNativeTexture(
1012 media::PIXEL_FORMAT_ARGB, 1009 media::PIXEL_FORMAT_ARGB,
1013 gpu::MailboxHolder(mailbox, sync_token, GL_TEXTURE_2D), 1010 gpu::MailboxHolder(mailbox, sync_token, GL_TEXTURE_2D),
1014 media::VideoFrame::ReleaseMailboxCB(), gfx::Size(4, 4), 1011 media::VideoFrame::ReleaseMailboxCB(), gfx::Size(4, 4),
1015 gfx::Rect(0, 0, 4, 4), gfx::Size(4, 4), base::TimeDelta()); 1012 gfx::Rect(0, 0, 4, 4), gfx::Size(4, 4), base::TimeDelta());
1016 ASSERT_TRUE(hw_video_frame_); 1013 ASSERT_TRUE(hw_video_frame_);
1017 scaled_hw_video_frame_ = VideoFrame::WrapNativeTexture( 1014 scaled_hw_video_frame_ = VideoFrame::WrapNativeTexture(
1018 media::PIXEL_FORMAT_ARGB, 1015 media::PIXEL_FORMAT_ARGB,
1019 gpu::MailboxHolder(mailbox, sync_token, GL_TEXTURE_2D), 1016 gpu::MailboxHolder(mailbox, sync_token, GL_TEXTURE_2D),
1020 media::VideoFrame::ReleaseMailboxCB(), gfx::Size(4, 4), 1017 media::VideoFrame::ReleaseMailboxCB(), gfx::Size(4, 4),
1021 gfx::Rect(0, 0, 3, 2), gfx::Size(4, 4), base::TimeDelta()); 1018 gfx::Rect(0, 0, 3, 2), gfx::Size(4, 4), base::TimeDelta());
1022 ASSERT_TRUE(scaled_hw_video_frame_); 1019 ASSERT_TRUE(scaled_hw_video_frame_);
1023 1020
1024 color_frame_provider_.set_frame(color_video_frame_); 1021 color_frame_provider_.set_frame(color_video_frame_);
1025 hw_frame_provider_.set_frame(hw_video_frame_); 1022 hw_frame_provider_.set_frame(hw_video_frame_);
1026 scaled_hw_frame_provider_.set_frame(scaled_hw_video_frame_); 1023 scaled_hw_frame_provider_.set_frame(scaled_hw_video_frame_);
1027 1024
1028 scoped_refptr<IOSurfaceLayer> io_surface = 1025 scoped_refptr<IOSurfaceLayer> io_surface = IOSurfaceLayer::Create();
1029 IOSurfaceLayer::Create(layer_settings_);
1030 io_surface->SetBounds(gfx::Size(10, 10)); 1026 io_surface->SetBounds(gfx::Size(10, 10));
1031 io_surface->SetIsDrawable(true); 1027 io_surface->SetIsDrawable(true);
1032 io_surface->SetIOSurfaceProperties(1, gfx::Size(10, 10)); 1028 io_surface->SetIOSurfaceProperties(1, gfx::Size(10, 10));
1033 root->AddChild(io_surface); 1029 root->AddChild(io_surface);
1034 1030
1035 // Enable the hud. 1031 // Enable the hud.
1036 LayerTreeDebugState debug_state; 1032 LayerTreeDebugState debug_state;
1037 debug_state.show_property_changed_rects = true; 1033 debug_state.show_property_changed_rects = true;
1038 layer_tree_host()->SetDebugState(debug_state); 1034 layer_tree_host()->SetDebugState(debug_state);
1039 1035
1040 scoped_refptr<PaintedScrollbarLayer> scrollbar = 1036 scoped_refptr<PaintedScrollbarLayer> scrollbar =
1041 PaintedScrollbarLayer::Create(layer_settings_, 1037 PaintedScrollbarLayer::Create(scoped_ptr<Scrollbar>(new FakeScrollbar),
1042 scoped_ptr<Scrollbar>(new FakeScrollbar),
1043 layer->id()); 1038 layer->id());
1044 scrollbar->SetBounds(gfx::Size(10, 10)); 1039 scrollbar->SetBounds(gfx::Size(10, 10));
1045 scrollbar->SetIsDrawable(true); 1040 scrollbar->SetIsDrawable(true);
1046 root->AddChild(scrollbar); 1041 root->AddChild(scrollbar);
1047 1042
1048 layer_tree_host()->SetRootLayer(root); 1043 layer_tree_host()->SetRootLayer(root);
1049 LayerTreeHostContextTest::SetupTree(); 1044 LayerTreeHostContextTest::SetupTree();
1050 } 1045 }
1051 1046
1052 void BeginTest() override { PostSetNeedsCommitToMainThread(); } 1047 void BeginTest() override { PostSetNeedsCommitToMainThread(); }
(...skipping 53 matching lines...) Expand 10 before | Expand all | Expand 10 after
1106 scoped_ptr<SharedBitmapManager> shared_bitmap_manager_; 1101 scoped_ptr<SharedBitmapManager> shared_bitmap_manager_;
1107 scoped_ptr<ResourceProvider> child_resource_provider_; 1102 scoped_ptr<ResourceProvider> child_resource_provider_;
1108 1103
1109 scoped_refptr<VideoFrame> color_video_frame_; 1104 scoped_refptr<VideoFrame> color_video_frame_;
1110 scoped_refptr<VideoFrame> hw_video_frame_; 1105 scoped_refptr<VideoFrame> hw_video_frame_;
1111 scoped_refptr<VideoFrame> scaled_hw_video_frame_; 1106 scoped_refptr<VideoFrame> scaled_hw_video_frame_;
1112 1107
1113 FakeVideoFrameProvider color_frame_provider_; 1108 FakeVideoFrameProvider color_frame_provider_;
1114 FakeVideoFrameProvider hw_frame_provider_; 1109 FakeVideoFrameProvider hw_frame_provider_;
1115 FakeVideoFrameProvider scaled_hw_frame_provider_; 1110 FakeVideoFrameProvider scaled_hw_frame_provider_;
1116
1117 LayerSettings layer_settings_;
1118 }; 1111 };
1119 1112
1120 SINGLE_AND_MULTI_THREAD_TEST_F(LayerTreeHostContextTestDontUseLostResources); 1113 SINGLE_AND_MULTI_THREAD_TEST_F(LayerTreeHostContextTestDontUseLostResources);
1121 1114
1122 class LayerTreeHostContextTestImplSidePainting 1115 class LayerTreeHostContextTestImplSidePainting
1123 : public LayerTreeHostContextTest { 1116 : public LayerTreeHostContextTest {
1124 public: 1117 public:
1125 void SetupTree() override { 1118 void SetupTree() override {
1126 scoped_refptr<Layer> root = Layer::Create(layer_settings()); 1119 scoped_refptr<Layer> root = Layer::Create();
1127 root->SetBounds(gfx::Size(10, 10)); 1120 root->SetBounds(gfx::Size(10, 10));
1128 root->SetIsDrawable(true); 1121 root->SetIsDrawable(true);
1129 1122
1130 scoped_refptr<PictureLayer> picture = 1123 scoped_refptr<PictureLayer> picture = PictureLayer::Create(&client_);
1131 PictureLayer::Create(layer_settings(), &client_);
1132 picture->SetBounds(gfx::Size(10, 10)); 1124 picture->SetBounds(gfx::Size(10, 10));
1133 client_.set_bounds(picture->bounds()); 1125 client_.set_bounds(picture->bounds());
1134 picture->SetIsDrawable(true); 1126 picture->SetIsDrawable(true);
1135 root->AddChild(picture); 1127 root->AddChild(picture);
1136 1128
1137 layer_tree_host()->SetRootLayer(root); 1129 layer_tree_host()->SetRootLayer(root);
1138 LayerTreeHostContextTest::SetupTree(); 1130 LayerTreeHostContextTest::SetupTree();
1139 } 1131 }
1140 1132
1141 void BeginTest() override { 1133 void BeginTest() override {
1142 times_to_lose_during_commit_ = 1; 1134 times_to_lose_during_commit_ = 1;
1143 PostSetNeedsCommitToMainThread(); 1135 PostSetNeedsCommitToMainThread();
1144 } 1136 }
1145 1137
1146 void AfterTest() override {} 1138 void AfterTest() override {}
1147 1139
1148 void DidInitializeOutputSurface() override { EndTest(); } 1140 void DidInitializeOutputSurface() override { EndTest(); }
1149 1141
1150 private: 1142 private:
1151 FakeContentLayerClient client_; 1143 FakeContentLayerClient client_;
1152 }; 1144 };
1153 1145
1154 SINGLE_AND_MULTI_THREAD_TEST_F(LayerTreeHostContextTestImplSidePainting); 1146 SINGLE_AND_MULTI_THREAD_TEST_F(LayerTreeHostContextTestImplSidePainting);
1155 1147
1156 class ScrollbarLayerLostContext : public LayerTreeHostContextTest { 1148 class ScrollbarLayerLostContext : public LayerTreeHostContextTest {
1157 public: 1149 public:
1158 ScrollbarLayerLostContext() : commits_(0) {} 1150 ScrollbarLayerLostContext() : commits_(0) {}
1159 1151
1160 void BeginTest() override { 1152 void BeginTest() override {
1161 scoped_refptr<Layer> scroll_layer = Layer::Create(layer_settings()); 1153 scoped_refptr<Layer> scroll_layer = Layer::Create();
1162 scrollbar_layer_ = FakePaintedScrollbarLayer::Create( 1154 scrollbar_layer_ =
1163 layer_settings(), false, true, scroll_layer->id()); 1155 FakePaintedScrollbarLayer::Create(false, true, scroll_layer->id());
1164 scrollbar_layer_->SetBounds(gfx::Size(10, 100)); 1156 scrollbar_layer_->SetBounds(gfx::Size(10, 100));
1165 layer_tree_host()->root_layer()->AddChild(scrollbar_layer_); 1157 layer_tree_host()->root_layer()->AddChild(scrollbar_layer_);
1166 layer_tree_host()->root_layer()->AddChild(scroll_layer); 1158 layer_tree_host()->root_layer()->AddChild(scroll_layer);
1167 PostSetNeedsCommitToMainThread(); 1159 PostSetNeedsCommitToMainThread();
1168 } 1160 }
1169 1161
1170 void AfterTest() override {} 1162 void AfterTest() override {}
1171 1163
1172 void CommitCompleteOnThread(LayerTreeHostImpl* impl) override { 1164 void CommitCompleteOnThread(LayerTreeHostImpl* impl) override {
1173 LayerTreeHostContextTest::CommitCompleteOnThread(impl); 1165 LayerTreeHostContextTest::CommitCompleteOnThread(impl);
(...skipping 444 matching lines...) Expand 10 before | Expand all | Expand 10 after
1618 void AfterTest() override {} 1610 void AfterTest() override {}
1619 1611
1620 bool deferred_; 1612 bool deferred_;
1621 }; 1613 };
1622 1614
1623 SINGLE_AND_MULTI_THREAD_TEST_F( 1615 SINGLE_AND_MULTI_THREAD_TEST_F(
1624 LayerTreeHostContextTestLoseAfterSendingBeginMainFrame); 1616 LayerTreeHostContextTestLoseAfterSendingBeginMainFrame);
1625 1617
1626 } // namespace 1618 } // namespace
1627 } // namespace cc 1619 } // namespace cc
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698