Index: third_party/WebKit/Source/core/layout/LayoutTestHelper.h |
diff --git a/third_party/WebKit/Source/core/layout/LayoutTestHelper.h b/third_party/WebKit/Source/core/layout/LayoutTestHelper.h |
index fc6845cd305407e45370f903e25df9e939f45569..e8551fdac30124b3addaae2fcc170a30c5baad33 100644 |
--- a/third_party/WebKit/Source/core/layout/LayoutTestHelper.h |
+++ b/third_party/WebKit/Source/core/layout/LayoutTestHelper.h |
@@ -20,6 +20,55 @@ |
namespace blink { |
+class SingleChildFrameLoaderClient final : public EmptyFrameLoaderClient { |
+ public: |
+ static SingleChildFrameLoaderClient* create() { |
+ return new SingleChildFrameLoaderClient(); |
+ } |
+ |
+ void setChildHTML(const String& childHTML) { m_childHTML = childHTML; } |
+ |
+ DEFINE_INLINE_VIRTUAL_TRACE() { |
+ visitor->trace(m_child); |
+ EmptyFrameLoaderClient::trace(visitor); |
+ } |
+ |
+ // FrameLoaderClient overrides: |
+ LocalFrame* firstChild() const override { return m_child.get(); } |
+ LocalFrame* createFrame(const FrameLoadRequest&, |
+ const AtomicString& name, |
+ HTMLFrameOwnerElement*) override; |
+ |
+ void didDetachChild() { m_child = nullptr; } |
+ |
+ private: |
+ explicit SingleChildFrameLoaderClient() {} |
+ |
+ String m_childHTML; |
+ Member<LocalFrame> m_child; |
+}; |
+ |
+class FrameLoaderClientWithParent final : public EmptyFrameLoaderClient { |
+ public: |
+ static FrameLoaderClientWithParent* create(LocalFrame* parent) { |
+ return new FrameLoaderClientWithParent(parent); |
+ } |
+ |
+ DEFINE_INLINE_VIRTUAL_TRACE() { |
+ visitor->trace(m_parent); |
+ EmptyFrameLoaderClient::trace(visitor); |
+ } |
+ |
+ // FrameClient overrides: |
+ void detached(FrameDetachType) override; |
+ LocalFrame* parent() const override { return m_parent.get(); } |
+ |
+ private: |
+ explicit FrameLoaderClientWithParent(LocalFrame* parent) : m_parent(parent) {} |
+ |
+ Member<LocalFrame> m_parent; |
+}; |
+ |
class RenderingTest : public testing::Test { |
USING_FAST_MALLOC(RenderingTest); |
@@ -46,9 +95,18 @@ class RenderingTest : public testing::Test { |
document().view()->updateAllLifecyclePhases(); |
} |
- // Returns the Document for the iframe. |
- Document& setupChildIframe(const AtomicString& iframeElementId, |
- const String& htmlContentOfIframe); |
+ // Sets the content that will be loaded into the child iframe. |
+ void setChildFrameHTML(const String htmlContent) { |
+ static_cast<SingleChildFrameLoaderClient*>(m_frameLoaderClient.get()) |
+ ->setChildHTML(htmlContent); |
+ } |
+ |
+ Document& childDocument() { |
+ return *static_cast<SingleChildFrameLoaderClient*>( |
+ m_frameLoaderClient.get()) |
+ ->firstChild() |
+ ->document(); |
+ } |
// Both enables compositing and runs the document lifecycle. |
void enableCompositing() { |
@@ -64,52 +122,10 @@ class RenderingTest : public testing::Test { |
} |
private: |
- Persistent<LocalFrame> m_subframe; |
Persistent<FrameLoaderClient> m_frameLoaderClient; |
- Persistent<FrameLoaderClient> m_childFrameLoaderClient; |
std::unique_ptr<DummyPageHolder> m_pageHolder; |
}; |
-class SingleChildFrameLoaderClient final : public EmptyFrameLoaderClient { |
- public: |
- static SingleChildFrameLoaderClient* create() { |
- return new SingleChildFrameLoaderClient; |
- } |
- |
- DEFINE_INLINE_VIRTUAL_TRACE() { |
- visitor->trace(m_child); |
- EmptyFrameLoaderClient::trace(visitor); |
- } |
- |
- Frame* firstChild() const override { return m_child.get(); } |
- |
- void setChild(Frame* child) { m_child = child; } |
- |
- private: |
- SingleChildFrameLoaderClient() : m_child(nullptr) {} |
- |
- Member<Frame> m_child; |
-}; |
- |
-class FrameLoaderClientWithParent final : public EmptyFrameLoaderClient { |
- public: |
- static FrameLoaderClientWithParent* create(Frame* parent) { |
- return new FrameLoaderClientWithParent(parent); |
- } |
- |
- DEFINE_INLINE_VIRTUAL_TRACE() { |
- visitor->trace(m_parent); |
- EmptyFrameLoaderClient::trace(visitor); |
- } |
- |
- Frame* parent() const override { return m_parent.get(); } |
- |
- private: |
- explicit FrameLoaderClientWithParent(Frame* parent) : m_parent(parent) {} |
- |
- Member<Frame> m_parent; |
-}; |
- |
} // namespace blink |
#endif // LayoutTestHelper_h |