| 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
|
|
|