guest_view_manager_unittest.cc 2.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384
  1. // Copyright 2014 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. #include "components/guest_view/browser/guest_view_manager.h"
  5. #include <memory>
  6. #include <utility>
  7. #include "components/guest_view/browser/guest_view_manager_delegate.h"
  8. #include "components/guest_view/browser/test_guest_view_manager.h"
  9. #include "content/public/test/test_renderer_host.h"
  10. #include "content/public/test/web_contents_tester.h"
  11. #include "testing/gtest/include/gtest/gtest.h"
  12. using content::WebContents;
  13. using content::WebContentsTester;
  14. namespace guest_view {
  15. namespace {
  16. class GuestViewManagerTest : public content::RenderViewHostTestHarness {
  17. public:
  18. GuestViewManagerTest() {}
  19. GuestViewManagerTest(const GuestViewManagerTest&) = delete;
  20. GuestViewManagerTest& operator=(const GuestViewManagerTest&) = delete;
  21. ~GuestViewManagerTest() override {}
  22. std::unique_ptr<WebContents> CreateWebContents() {
  23. return WebContentsTester::CreateTestWebContents(browser_context(), nullptr);
  24. }
  25. };
  26. } // namespace
  27. TEST_F(GuestViewManagerTest, AddRemove) {
  28. std::unique_ptr<GuestViewManagerDelegate> delegate(
  29. new GuestViewManagerDelegate());
  30. std::unique_ptr<TestGuestViewManager> manager(
  31. new TestGuestViewManager(browser_context(), std::move(delegate)));
  32. std::unique_ptr<WebContents> web_contents1(CreateWebContents());
  33. std::unique_ptr<WebContents> web_contents2(CreateWebContents());
  34. std::unique_ptr<WebContents> web_contents3(CreateWebContents());
  35. EXPECT_EQ(0, manager->last_instance_id_removed());
  36. EXPECT_TRUE(manager->CanUseGuestInstanceID(1));
  37. EXPECT_TRUE(manager->CanUseGuestInstanceID(2));
  38. EXPECT_TRUE(manager->CanUseGuestInstanceID(3));
  39. manager->AddGuest(1, web_contents1.get());
  40. manager->AddGuest(2, web_contents2.get());
  41. manager->RemoveGuest(2);
  42. // Since we removed 2, it would be an invalid ID.
  43. EXPECT_TRUE(manager->CanUseGuestInstanceID(1));
  44. EXPECT_FALSE(manager->CanUseGuestInstanceID(2));
  45. EXPECT_TRUE(manager->CanUseGuestInstanceID(3));
  46. EXPECT_EQ(0, manager->last_instance_id_removed());
  47. EXPECT_TRUE(manager->CanUseGuestInstanceID(3));
  48. manager->AddGuest(3, web_contents3.get());
  49. manager->RemoveGuest(1);
  50. EXPECT_FALSE(manager->CanUseGuestInstanceID(1));
  51. EXPECT_FALSE(manager->CanUseGuestInstanceID(2));
  52. EXPECT_EQ(2, manager->last_instance_id_removed());
  53. manager->RemoveGuest(3);
  54. EXPECT_EQ(3, manager->last_instance_id_removed());
  55. EXPECT_FALSE(manager->CanUseGuestInstanceID(1));
  56. EXPECT_FALSE(manager->CanUseGuestInstanceID(2));
  57. EXPECT_FALSE(manager->CanUseGuestInstanceID(3));
  58. EXPECT_EQ(0u, manager->GetNumRemovedInstanceIDs());
  59. }
  60. } // namespace guest_view