| Index: Source/core/dom/NamedFlow.cpp
|
| diff --git a/Source/core/dom/NamedFlow.cpp b/Source/core/dom/NamedFlow.cpp
|
| deleted file mode 100644
|
| index 04f1c08d1f72ba99210477bc1babce560dc88881..0000000000000000000000000000000000000000
|
| --- a/Source/core/dom/NamedFlow.cpp
|
| +++ /dev/null
|
| @@ -1,249 +0,0 @@
|
| -/*
|
| - * Copyright (C) 2011 Adobe Systems Incorporated. All rights reserved.
|
| - *
|
| - * Redistribution and use in source and binary forms, with or without
|
| - * modification, are permitted provided that the following conditions
|
| - * are met:
|
| - *
|
| - * 1. Redistributions of source code must retain the above
|
| - * copyright notice, this list of conditions and the following
|
| - * disclaimer.
|
| - * 2. Redistributions in binary form must reproduce the above
|
| - * copyright notice, this list of conditions and the following
|
| - * disclaimer in the documentation and/or other materials
|
| - * provided with the distribution.
|
| - *
|
| - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDER "AS IS" AND ANY
|
| - * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
| - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
|
| - * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER BE
|
| - * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY,
|
| - * OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
|
| - * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
|
| - * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
|
| - * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR
|
| - * TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF
|
| - * THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
|
| - * SUCH DAMAGE.
|
| - */
|
| -
|
| -#include "config.h"
|
| -#include "core/dom/NamedFlow.h"
|
| -
|
| -#include "RuntimeEnabledFeatures.h"
|
| -#include "core/dom/NamedFlowCollection.h"
|
| -#include "core/dom/StaticNodeList.h"
|
| -#include "core/events/ThreadLocalEventNames.h"
|
| -#include "core/events/UIEvent.h"
|
| -#include "core/rendering/RenderNamedFlowFragment.h"
|
| -#include "core/rendering/RenderNamedFlowThread.h"
|
| -
|
| -namespace WebCore {
|
| -
|
| -NamedFlow::NamedFlow(PassRefPtr<NamedFlowCollection> manager, const AtomicString& flowThreadName)
|
| - : m_flowThreadName(flowThreadName)
|
| - , m_flowManager(manager)
|
| - , m_parentFlowThread(0)
|
| -{
|
| - ASSERT(RuntimeEnabledFeatures::cssRegionsEnabled());
|
| - ScriptWrappable::init(this);
|
| -}
|
| -
|
| -NamedFlow::~NamedFlow()
|
| -{
|
| - // The named flow is not "strong" referenced from anywhere at this time so it shouldn't be reused if the named flow is recreated.
|
| - m_flowManager->discardNamedFlow(this);
|
| -}
|
| -
|
| -PassRefPtr<NamedFlow> NamedFlow::create(PassRefPtr<NamedFlowCollection> manager, const AtomicString& flowThreadName)
|
| -{
|
| - return adoptRef(new NamedFlow(manager, flowThreadName));
|
| -}
|
| -
|
| -const AtomicString& NamedFlow::name() const
|
| -{
|
| - return m_flowThreadName;
|
| -}
|
| -
|
| -bool NamedFlow::overset() const
|
| -{
|
| - if (m_flowManager->document())
|
| - m_flowManager->document()->updateLayoutIgnorePendingStylesheets();
|
| -
|
| - // The renderer may be destroyed or created after the style update.
|
| - // Because this is called from JS, where the wrapper keeps a reference to the NamedFlow, no guard is necessary.
|
| - return m_parentFlowThread ? m_parentFlowThread->overset() : true;
|
| -}
|
| -
|
| -static inline bool inFlowThread(RenderObject* renderer, RenderNamedFlowThread* flowThread)
|
| -{
|
| - if (!renderer)
|
| - return false;
|
| - RenderFlowThread* currentFlowThread = renderer->flowThreadContainingBlock();
|
| - if (flowThread == currentFlowThread)
|
| - return true;
|
| - if (renderer->flowThreadState() != RenderObject::InsideInFlowThread)
|
| - return false;
|
| -
|
| - // An in-flow flow thread can be nested inside an out-of-flow one, so we have to recur up to check.
|
| - return inFlowThread(currentFlowThread->containingBlock(), flowThread);
|
| -}
|
| -
|
| -int NamedFlow::firstEmptyRegionIndex() const
|
| -{
|
| - if (m_flowManager->document())
|
| - m_flowManager->document()->updateLayoutIgnorePendingStylesheets();
|
| -
|
| - if (!m_parentFlowThread)
|
| - return -1;
|
| -
|
| - const RenderRegionList& regionList = m_parentFlowThread->renderRegionList();
|
| - if (regionList.isEmpty())
|
| - return -1;
|
| -
|
| - int countNonPseudoRegions = -1;
|
| - RenderRegionList::const_iterator iter = regionList.begin();
|
| - for (int index = 0; iter != regionList.end(); ++index, ++iter) {
|
| - const RenderNamedFlowFragment* renderRegion = toRenderNamedFlowFragment(*iter);
|
| - // FIXME: Pseudo-elements are not included in the list.
|
| - // They will be included when we will properly support the Region interface
|
| - // http://dev.w3.org/csswg/css-regions/#the-region-interface
|
| - if (!renderRegion->isElementBasedRegion())
|
| - continue;
|
| - countNonPseudoRegions++;
|
| - if (renderRegion->regionOversetState() == RegionEmpty)
|
| - return countNonPseudoRegions;
|
| - }
|
| - return -1;
|
| -}
|
| -
|
| -PassRefPtr<NodeList> NamedFlow::getRegionsByContent(Node* contentNode)
|
| -{
|
| - Vector<RefPtr<Node> > regionNodes;
|
| -
|
| - if (!contentNode)
|
| - return StaticNodeList::adopt(regionNodes);
|
| -
|
| - if (m_flowManager->document())
|
| - m_flowManager->document()->updateLayoutIgnorePendingStylesheets();
|
| -
|
| - // The renderer may be destroyed or created after the style update.
|
| - // Because this is called from JS, where the wrapper keeps a reference to the NamedFlow, no guard is necessary.
|
| - if (!m_parentFlowThread)
|
| - return StaticNodeList::adopt(regionNodes);
|
| -
|
| - if (inFlowThread(contentNode->renderer(), m_parentFlowThread)) {
|
| - const RenderRegionList& regionList = m_parentFlowThread->renderRegionList();
|
| - for (RenderRegionList::const_iterator iter = regionList.begin(); iter != regionList.end(); ++iter) {
|
| - const RenderNamedFlowFragment* renderRegion = toRenderNamedFlowFragment(*iter);
|
| - // They will be included when we will properly support the Region interface
|
| - // http://dev.w3.org/csswg/css-regions/#the-region-interface
|
| - if (!renderRegion->isElementBasedRegion())
|
| - continue;
|
| - if (m_parentFlowThread->objectInFlowRegion(contentNode->renderer(), renderRegion))
|
| - regionNodes.append(renderRegion->nodeForRegion());
|
| - }
|
| - }
|
| -
|
| - return StaticNodeList::adopt(regionNodes);
|
| -}
|
| -
|
| -PassRefPtr<NodeList> NamedFlow::getRegions()
|
| -{
|
| - Vector<RefPtr<Node> > regionNodes;
|
| -
|
| - if (m_flowManager->document())
|
| - m_flowManager->document()->updateLayoutIgnorePendingStylesheets();
|
| -
|
| - // The renderer may be destroyed or created after the style update.
|
| - // Because this is called from JS, where the wrapper keeps a reference to the NamedFlow, no guard is necessary.
|
| - if (!m_parentFlowThread)
|
| - return StaticNodeList::adopt(regionNodes);
|
| -
|
| - const RenderRegionList& regionList = m_parentFlowThread->renderRegionList();
|
| - for (RenderRegionList::const_iterator iter = regionList.begin(); iter != regionList.end(); ++iter) {
|
| - const RenderNamedFlowFragment* renderRegion = toRenderNamedFlowFragment(*iter);
|
| - // They will be included when we will properly support the Region interface
|
| - // http://dev.w3.org/csswg/css-regions/#the-region-interface
|
| - if (!renderRegion->isElementBasedRegion())
|
| - continue;
|
| - regionNodes.append(renderRegion->nodeForRegion());
|
| - }
|
| -
|
| - return StaticNodeList::adopt(regionNodes);
|
| -}
|
| -
|
| -PassRefPtr<NodeList> NamedFlow::getContent()
|
| -{
|
| - Vector<RefPtr<Node> > contentNodes;
|
| -
|
| - if (m_flowManager->document())
|
| - m_flowManager->document()->updateLayoutIgnorePendingStylesheets();
|
| -
|
| - // The renderer may be destroyed or created after the style update.
|
| - // Because this is called from JS, where the wrapper keeps a reference to the NamedFlow, no guard is necessary.
|
| - if (!m_parentFlowThread)
|
| - return StaticNodeList::adopt(contentNodes);
|
| -
|
| - const NamedFlowContentNodes& contentNodesList = m_parentFlowThread->contentNodes();
|
| - for (NamedFlowContentNodes::const_iterator it = contentNodesList.begin(); it != contentNodesList.end(); ++it) {
|
| - Node* node = *it;
|
| - ASSERT(node->computedStyle()->flowThread() == m_parentFlowThread->flowThreadName());
|
| - contentNodes.append(node);
|
| - }
|
| -
|
| - return StaticNodeList::adopt(contentNodes);
|
| -}
|
| -
|
| -void NamedFlow::setRenderer(RenderNamedFlowThread* parentFlowThread)
|
| -{
|
| - // The named flow can either go from a no_renderer->renderer or renderer->no_renderer state; anything else could indicate a bug.
|
| - ASSERT((!m_parentFlowThread && parentFlowThread) || (m_parentFlowThread && !parentFlowThread));
|
| -
|
| - // If parentFlowThread is 0, the flow thread will move in the "NULL" state.
|
| - m_parentFlowThread = parentFlowThread;
|
| -}
|
| -
|
| -void NamedFlow::dispatchRegionLayoutUpdateEvent()
|
| -{
|
| - ASSERT(!NoEventDispatchAssertion::isEventDispatchForbidden());
|
| -
|
| - // If the flow is in the "NULL" state the event should not be dispatched any more.
|
| - if (flowState() == FlowStateNull)
|
| - return;
|
| -
|
| - RefPtr<Event> event = UIEvent::create(EventTypeNames::webkitregionlayoutupdate, false, false, m_flowManager->document()->domWindow(), 0);
|
| -
|
| - dispatchEvent(event);
|
| -}
|
| -
|
| -void NamedFlow::dispatchRegionOversetChangeEvent()
|
| -{
|
| - ASSERT(!NoEventDispatchAssertion::isEventDispatchForbidden());
|
| -
|
| - // If the flow is in the "NULL" state the event should not be dispatched any more.
|
| - if (flowState() == FlowStateNull)
|
| - return;
|
| -
|
| - RefPtr<Event> event = UIEvent::create(EventTypeNames::webkitregionoversetchange, false, false, m_flowManager->document()->domWindow(), 0);
|
| -
|
| - dispatchEvent(event);
|
| -}
|
| -
|
| -const AtomicString& NamedFlow::interfaceName() const
|
| -{
|
| - return EventTargetNames::NamedFlow;
|
| -}
|
| -
|
| -ExecutionContext* NamedFlow::executionContext() const
|
| -{
|
| - return m_flowManager->document();
|
| -}
|
| -
|
| -Node* NamedFlow::ownerNode() const
|
| -{
|
| - return m_flowManager->document();
|
| -}
|
| -
|
| -} // namespace WebCore
|
| -
|
|
|