| OLD | NEW | 
|    1 // Copyright 2016 The Chromium Authors. All rights reserved. |    1 // Copyright 2016 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 "blimp/client/core/contents/blimp_contents_manager.h" |    5 #include "blimp/client/core/contents/blimp_contents_manager.h" | 
|    6  |    6  | 
|    7 #include "base/memory/ptr_util.h" |    7 #include "base/memory/ptr_util.h" | 
|    8 #include "base/message_loop/message_loop.h" |    8 #include "base/message_loop/message_loop.h" | 
|    9 #include "blimp/client/core/compositor/blimp_compositor_dependencies.h" |    9 #include "blimp/client/core/compositor/blimp_compositor_dependencies.h" | 
|   10 #include "blimp/client/core/contents/blimp_contents_impl.h" |   10 #include "blimp/client/core/contents/blimp_contents_impl.h" | 
|   11 #include "blimp/client/core/contents/tab_control_feature.h" |   11 #include "blimp/client/core/contents/tab_control_feature.h" | 
|   12 #include "blimp/client/core/render_widget/render_widget_feature.h" |   12 #include "blimp/client/core/render_widget/render_widget_feature.h" | 
|   13 #include "blimp/client/support/compositor/mock_compositor_dependencies.h" |   13 #include "blimp/client/support/compositor/mock_compositor_dependencies.h" | 
|   14 #include "testing/gmock/include/gmock/gmock.h" |   14 #include "testing/gmock/include/gmock/gmock.h" | 
|   15 #include "testing/gtest/include/gtest/gtest.h" |   15 #include "testing/gtest/include/gtest/gtest.h" | 
 |   16 #include "ui/gfx/native_widget_types.h" | 
 |   17  | 
 |   18 #if defined(OS_ANDROID) | 
 |   19 #include "ui/android/window_android.h" | 
 |   20 #endif  // defined(OS_ANDROID) | 
|   16  |   21  | 
|   17 using testing::_; |   22 using testing::_; | 
|   18  |   23  | 
|   19 namespace { |   24 namespace { | 
|   20 const int kDummyTabId = 0; |   25 const int kDummyTabId = 0; | 
|   21 } |   26 } | 
|   22  |   27  | 
|   23 namespace blimp { |   28 namespace blimp { | 
|   24 namespace client { |   29 namespace client { | 
|   25 namespace { |   30 namespace { | 
|   26  |   31  | 
 |   32 class BlimpContentsManagerTest : public testing::Test { | 
 |   33  public: | 
 |   34   BlimpContentsManagerTest() = default; | 
 |   35  | 
 |   36 #if defined(OS_ANDROID) | 
 |   37   void SetUp() override { window_ = ui::WindowAndroid::CreateForTesting(); } | 
 |   38  | 
 |   39   void TearDown() override { window_->DestroyForTesting(); } | 
 |   40 #endif  // defined(OS_ANDROID) | 
 |   41  | 
 |   42  protected: | 
 |   43   gfx::NativeWindow window_ = nullptr; | 
 |   44  | 
 |   45  private: | 
 |   46   DISALLOW_COPY_AND_ASSIGN(BlimpContentsManagerTest); | 
 |   47 }; | 
 |   48  | 
|   27 class MockTabControlFeature : public TabControlFeature { |   49 class MockTabControlFeature : public TabControlFeature { | 
|   28  public: |   50  public: | 
|   29   MockTabControlFeature() {} |   51   MockTabControlFeature() {} | 
|   30   ~MockTabControlFeature() override = default; |   52   ~MockTabControlFeature() override = default; | 
|   31  |   53  | 
|   32   MOCK_METHOD1(CreateTab, void(int)); |   54   MOCK_METHOD1(CreateTab, void(int)); | 
|   33   MOCK_METHOD1(CloseTab, void(int)); |   55   MOCK_METHOD1(CloseTab, void(int)); | 
|   34  |   56  | 
|   35  private: |   57  private: | 
|   36   DISALLOW_COPY_AND_ASSIGN(MockTabControlFeature); |   58   DISALLOW_COPY_AND_ASSIGN(MockTabControlFeature); | 
|   37 }; |   59 }; | 
|   38  |   60  | 
|   39 TEST(BlimpContentsManagerUnittest, GetExistingBlimpContents) { |   61 TEST_F(BlimpContentsManagerTest, GetExistingBlimpContents) { | 
|   40   base::MessageLoop loop; |   62   base::MessageLoop loop; | 
|   41   RenderWidgetFeature render_widget_feature; |   63   RenderWidgetFeature render_widget_feature; | 
|   42   MockTabControlFeature tab_control_feature; |   64   MockTabControlFeature tab_control_feature; | 
|   43  |   65  | 
|   44   BlimpCompositorDependencies compositor_deps( |   66   BlimpCompositorDependencies compositor_deps( | 
|   45       base::MakeUnique<MockCompositorDependencies>()); |   67       base::MakeUnique<MockCompositorDependencies>()); | 
|   46   BlimpContentsManager blimp_contents_manager(&compositor_deps, nullptr, |   68   BlimpContentsManager blimp_contents_manager(&compositor_deps, nullptr, | 
|   47                                               nullptr, &render_widget_feature, |   69                                               nullptr, &render_widget_feature, | 
|   48                                               &tab_control_feature); |   70                                               &tab_control_feature); | 
|   49  |   71  | 
|   50   EXPECT_CALL(tab_control_feature, CreateTab(_)).Times(1); |   72   EXPECT_CALL(tab_control_feature, CreateTab(_)).Times(1); | 
|   51   std::unique_ptr<BlimpContentsImpl> blimp_contents = |   73   std::unique_ptr<BlimpContentsImpl> blimp_contents = | 
|   52       blimp_contents_manager.CreateBlimpContents(); |   74       blimp_contents_manager.CreateBlimpContents(window_); | 
|   53   int id = blimp_contents->id(); |   75   int id = blimp_contents->id(); | 
|   54   BlimpContentsImpl* existing_contents = |   76   BlimpContentsImpl* existing_contents = | 
|   55       blimp_contents_manager.GetBlimpContents(id); |   77       blimp_contents_manager.GetBlimpContents(id); | 
|   56   EXPECT_EQ(blimp_contents.get(), existing_contents); |   78   EXPECT_EQ(blimp_contents.get(), existing_contents); | 
|   57 } |   79 } | 
|   58  |   80  | 
|   59 TEST(BlimpContentsManagerUnittest, GetNonExistingBlimpContents) { |   81 TEST_F(BlimpContentsManagerTest, GetNonExistingBlimpContents) { | 
|   60   RenderWidgetFeature render_widget_feature; |   82   RenderWidgetFeature render_widget_feature; | 
|   61   MockTabControlFeature tab_control_feature; |   83   MockTabControlFeature tab_control_feature; | 
|   62  |   84  | 
|   63   BlimpCompositorDependencies compositor_deps( |   85   BlimpCompositorDependencies compositor_deps( | 
|   64       base::MakeUnique<MockCompositorDependencies>()); |   86       base::MakeUnique<MockCompositorDependencies>()); | 
|   65   BlimpContentsManager blimp_contents_manager(&compositor_deps, nullptr, |   87   BlimpContentsManager blimp_contents_manager(&compositor_deps, nullptr, | 
|   66                                               nullptr, &render_widget_feature, |   88                                               nullptr, &render_widget_feature, | 
|   67                                               &tab_control_feature); |   89                                               &tab_control_feature); | 
|   68  |   90  | 
|   69   BlimpContentsImpl* existing_contents = |   91   BlimpContentsImpl* existing_contents = | 
|   70       blimp_contents_manager.GetBlimpContents(kDummyTabId); |   92       blimp_contents_manager.GetBlimpContents(kDummyTabId); | 
|   71   EXPECT_EQ(nullptr, existing_contents); |   93   EXPECT_EQ(nullptr, existing_contents); | 
|   72 } |   94 } | 
|   73  |   95  | 
|   74 TEST(BlimpContentsManagerUnittest, GetDestroyedBlimpContents) { |   96 TEST_F(BlimpContentsManagerTest, GetDestroyedBlimpContents) { | 
|   75   base::MessageLoop loop; |   97   base::MessageLoop loop; | 
|   76   RenderWidgetFeature render_widget_feature; |   98   RenderWidgetFeature render_widget_feature; | 
|   77   MockTabControlFeature tab_control_feature; |   99   MockTabControlFeature tab_control_feature; | 
|   78   BlimpCompositorDependencies compositor_deps( |  100   BlimpCompositorDependencies compositor_deps( | 
|   79       base::MakeUnique<MockCompositorDependencies>()); |  101       base::MakeUnique<MockCompositorDependencies>()); | 
|   80   BlimpContentsManager blimp_contents_manager(&compositor_deps, nullptr, |  102   BlimpContentsManager blimp_contents_manager(&compositor_deps, nullptr, | 
|   81                                               nullptr, &render_widget_feature, |  103                                               nullptr, &render_widget_feature, | 
|   82                                               &tab_control_feature); |  104                                               &tab_control_feature); | 
|   83   int id; |  105   int id; | 
|   84  |  106  | 
|   85   EXPECT_CALL(tab_control_feature, CreateTab(_)).Times(1); |  107   EXPECT_CALL(tab_control_feature, CreateTab(_)).Times(1); | 
|   86   std::unique_ptr<BlimpContentsImpl> blimp_contents = |  108   std::unique_ptr<BlimpContentsImpl> blimp_contents = | 
|   87       blimp_contents_manager.CreateBlimpContents(); |  109       blimp_contents_manager.CreateBlimpContents(window_); | 
|   88   id = blimp_contents.get()->id(); |  110   id = blimp_contents.get()->id(); | 
|   89   BlimpContentsImpl* existing_contents = |  111   BlimpContentsImpl* existing_contents = | 
|   90       blimp_contents_manager.GetBlimpContents(id); |  112       blimp_contents_manager.GetBlimpContents(id); | 
|   91   EXPECT_EQ(blimp_contents.get(), existing_contents); |  113   EXPECT_EQ(blimp_contents.get(), existing_contents); | 
|   92  |  114  | 
|   93   EXPECT_CALL(tab_control_feature, CloseTab(id)).Times(1); |  115   EXPECT_CALL(tab_control_feature, CloseTab(id)).Times(1); | 
|   94   blimp_contents.reset(); |  116   blimp_contents.reset(); | 
|   95  |  117  | 
|   96   loop.RunUntilIdle(); |  118   loop.RunUntilIdle(); | 
|   97   EXPECT_EQ(nullptr, blimp_contents_manager.GetBlimpContents(id)); |  119   EXPECT_EQ(nullptr, blimp_contents_manager.GetBlimpContents(id)); | 
|   98 } |  120 } | 
|   99  |  121  | 
|  100 // TODO(mlliu): remove this test case (http://crbug.com/642558) |  122 // TODO(mlliu): remove this test case (http://crbug.com/642558) | 
|  101 TEST(BlimpContentsManagerUnittest, CreateTwoBlimpContentsDestroyAndCreate) { |  123 TEST_F(BlimpContentsManagerTest, CreateTwoBlimpContentsDestroyAndCreate) { | 
|  102   base::MessageLoop loop; |  124   base::MessageLoop loop; | 
|  103   RenderWidgetFeature render_widget_feature; |  125   RenderWidgetFeature render_widget_feature; | 
|  104   MockTabControlFeature tab_control_feature; |  126   MockTabControlFeature tab_control_feature; | 
|  105   BlimpCompositorDependencies compositor_deps( |  127   BlimpCompositorDependencies compositor_deps( | 
|  106       base::MakeUnique<MockCompositorDependencies>()); |  128       base::MakeUnique<MockCompositorDependencies>()); | 
|  107   BlimpContentsManager blimp_contents_manager(&compositor_deps, nullptr, |  129   BlimpContentsManager blimp_contents_manager(&compositor_deps, nullptr, | 
|  108                                               nullptr, &render_widget_feature, |  130                                               nullptr, &render_widget_feature, | 
|  109                                               &tab_control_feature); |  131                                               &tab_control_feature); | 
|  110  |  132  | 
|  111   EXPECT_CALL(tab_control_feature, CreateTab(_)).Times(2); |  133   EXPECT_CALL(tab_control_feature, CreateTab(_)).Times(2); | 
|  112   std::unique_ptr<BlimpContentsImpl> blimp_contents = |  134   std::unique_ptr<BlimpContentsImpl> blimp_contents = | 
|  113       blimp_contents_manager.CreateBlimpContents(); |  135       blimp_contents_manager.CreateBlimpContents(window_); | 
|  114   EXPECT_NE(blimp_contents, nullptr); |  136   EXPECT_NE(blimp_contents, nullptr); | 
|  115  |  137  | 
|  116   std::unique_ptr<BlimpContentsImpl> second_blimp_contents = |  138   std::unique_ptr<BlimpContentsImpl> second_blimp_contents = | 
|  117       blimp_contents_manager.CreateBlimpContents(); |  139       blimp_contents_manager.CreateBlimpContents(window_); | 
|  118   EXPECT_EQ(second_blimp_contents, nullptr); |  140   EXPECT_EQ(second_blimp_contents, nullptr); | 
|  119  |  141  | 
|  120   blimp_contents.reset(); |  142   blimp_contents.reset(); | 
|  121   std::unique_ptr<BlimpContentsImpl> third_blimp_contents = |  143   std::unique_ptr<BlimpContentsImpl> third_blimp_contents = | 
|  122       blimp_contents_manager.CreateBlimpContents(); |  144       blimp_contents_manager.CreateBlimpContents(window_); | 
|  123   EXPECT_NE(third_blimp_contents, nullptr); |  145   EXPECT_NE(third_blimp_contents, nullptr); | 
|  124 } |  146 } | 
|  125  |  147  | 
|  126 }  // namespace |  148 }  // namespace | 
|  127 }  // namespace client |  149 }  // namespace client | 
|  128 }  // namespace blimp |  150 }  // namespace blimp | 
| OLD | NEW |