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

Unified Diff: third_party/WebKit/Source/core/html/shadow/MediaControlsLeakTest.cpp

Issue 2729613007: Fixing a crash in MediaCustomControlsFullscreenDetector when the page is destroyed (Closed)
Patch Set: rebased Created 3 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 side-by-side diff with in-line comments
Download patch
Index: third_party/WebKit/Source/core/html/shadow/MediaControlsLeakTest.cpp
diff --git a/third_party/WebKit/Source/core/html/shadow/MediaControlsLeakTest.cpp b/third_party/WebKit/Source/core/html/shadow/MediaControlsLeakTest.cpp
deleted file mode 100644
index 7094d8bb48b5b2e5159bc5c9453da309254baa26..0000000000000000000000000000000000000000
--- a/third_party/WebKit/Source/core/html/shadow/MediaControlsLeakTest.cpp
+++ /dev/null
@@ -1,82 +0,0 @@
-// Copyright 2017 The Chromium Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-#include "core/html/shadow/MediaControls.h"
-
-#include "core/dom/Document.h"
-#include "core/html/HTMLVideoElement.h"
-#include "core/testing/DummyPageHolder.h"
-#include "platform/geometry/IntSize.h"
-#include "platform/heap/ThreadState.h"
-#include "testing/gtest/include/gtest/gtest.h"
-
-namespace blink {
-
-class MediaControlsLeakTest : public ::testing::Test {
- protected:
- virtual void SetUp() {
- m_pageHolder = DummyPageHolder::create(IntSize(800, 600));
- Document& document = this->document();
-
- document.write("<body><video controls></video></body>");
- m_video = toHTMLVideoElement(document.querySelector("video"));
- m_controls = m_video->mediaControls();
- }
-
- Document& document() { return m_pageHolder->document(); }
- HTMLVideoElement* video() { return m_video; }
- MediaControls* controls() { return m_controls; }
-
- private:
- std::unique_ptr<DummyPageHolder> m_pageHolder;
- WeakPersistent<HTMLVideoElement> m_video;
- WeakPersistent<MediaControls> m_controls;
-};
-
-TEST_F(MediaControlsLeakTest, RemovingFromDocumentCollectsAll) {
- ASSERT_NE(video(), nullptr);
- EXPECT_TRUE(video()->hasEventListeners());
- EXPECT_NE(controls(), nullptr);
- EXPECT_TRUE(document().hasEventListeners());
-
- document().body()->setInnerHTML("");
-
- // When removed from the document, the event listeners should have been
- // dropped.
- EXPECT_FALSE(document().hasEventListeners());
- // The video element should still have some event listeners.
- EXPECT_TRUE(video()->hasEventListeners());
-
- ThreadState::current()->collectAllGarbage();
-
- // They have been GC'd.
- EXPECT_EQ(video(), nullptr);
- EXPECT_EQ(controls(), nullptr);
-}
-
-TEST_F(MediaControlsLeakTest, ReInsertingInDocumentCollectsControls) {
- ASSERT_NE(video(), nullptr);
- EXPECT_TRUE(video()->hasEventListeners());
- EXPECT_NE(controls(), nullptr);
- EXPECT_TRUE(document().hasEventListeners());
-
- // This should be a no-op. We keep a reference on the VideoElement to avoid an
- // unexpected GC.
- {
- Persistent<HTMLVideoElement> videoHolder = video();
- document().body()->removeChild(video());
- document().body()->appendChild(video());
- }
-
- EXPECT_TRUE(document().hasEventListeners());
- EXPECT_TRUE(video()->hasEventListeners());
-
- ThreadState::current()->collectAllGarbage();
-
- ASSERT_NE(video(), nullptr);
- EXPECT_NE(controls(), nullptr);
- EXPECT_EQ(controls(), video()->mediaControls());
-}
-
-} // namespace blink

Powered by Google App Engine
This is Rietveld 408576698