| Index: Source/core/frame/FrameView.cpp | 
| diff --git a/Source/core/frame/FrameView.cpp b/Source/core/frame/FrameView.cpp | 
| index 5fced74a6cef13722d53860fc67b4800d8797fdd..330539b9069115fdfa18d254f314829cfc1c64eb 100644 | 
| --- a/Source/core/frame/FrameView.cpp | 
| +++ b/Source/core/frame/FrameView.cpp | 
| @@ -595,11 +595,7 @@ void FrameView::calculateScrollbarModesForLayout(ScrollbarMode& hMode, Scrollbar | 
|  | 
| if (m_canHaveScrollbars || strategy == RulesFromWebContentOnly) { | 
| hMode = ScrollbarAuto; | 
| -        // Seamless documents begin with heights of 0; we special case that here | 
| -        // to correctly render documents that don't need scrollbars. | 
| -        IntSize fullVisibleSize = visibleContentRect(IncludeScrollbars).size(); | 
| -        bool isSeamlessDocument = frame().document() && frame().document()->shouldDisplaySeamlesslyWithParent(); | 
| -        vMode = (isSeamlessDocument && !fullVisibleSize.height()) ? ScrollbarAlwaysOff : ScrollbarAuto; | 
| +        vMode = ScrollbarAuto; | 
| } else { | 
| hMode = ScrollbarAlwaysOff; | 
| vMode = ScrollbarAlwaysOff; | 
| @@ -785,7 +781,7 @@ void FrameView::performPreLayoutTasks() | 
| // Don't schedule more layouts, we're in one. | 
| TemporaryChange<bool> changeSchedulingEnabled(m_layoutSchedulingEnabled, false); | 
|  | 
| -    if (!m_nestedLayoutCount && !m_inSynchronousPostLayout && m_postLayoutTasksTimer.isActive() && !frame().document()->shouldDisplaySeamlesslyWithParent()) { | 
| +    if (!m_nestedLayoutCount && !m_inSynchronousPostLayout && m_postLayoutTasksTimer.isActive()) { | 
| // This is a new top-level layout. If there are any remaining tasks from the previous layout, finish them now. | 
| m_inSynchronousPostLayout = true; | 
| performPostLayoutTasks(); | 
| @@ -871,17 +867,13 @@ void FrameView::scheduleOrPerformPostLayoutTasks() | 
| ASSERT(!(m_inSynchronousPostLayout && partialLayout().isStopping())); | 
|  | 
| if (!m_inSynchronousPostLayout) { | 
| -        if (frame().document()->shouldDisplaySeamlesslyWithParent()) { | 
| -            updateWidgetPositions(); | 
| -        } else { | 
| -            m_inSynchronousPostLayout = true; | 
| -            // Calls resumeScheduledEvents() | 
| -            performPostLayoutTasks(); | 
| -            m_inSynchronousPostLayout = false; | 
| -        } | 
| +        m_inSynchronousPostLayout = true; | 
| +        // Calls resumeScheduledEvents() | 
| +        performPostLayoutTasks(); | 
| +        m_inSynchronousPostLayout = false; | 
| } | 
|  | 
| -    if (!m_postLayoutTasksTimer.isActive() && (needsLayout() || m_inSynchronousPostLayout || frame().document()->shouldDisplaySeamlesslyWithParent())) { | 
| +    if (!m_postLayoutTasksTimer.isActive() && (needsLayout() || m_inSynchronousPostLayout)) { | 
| // If we need layout or are already in a synchronous call to postLayoutTasks(), | 
| // defer widget updates and event dispatch until after we return. postLayoutTasks() | 
| // can make us need to update again, and we can get stuck in a nasty cycle unless | 
| @@ -1789,11 +1781,6 @@ void FrameView::scheduleRelayout() | 
| return; | 
| InspectorInstrumentation::didInvalidateLayout(m_frame.get()); | 
|  | 
| -    // When frame seamless is enabled, the contents of the frame could affect the layout of the parent frames. | 
| -    // Also invalidate parent frame starting from the owner element of this frame. | 
| -    if (m_frame->ownerRenderer() && m_frame->document()->shouldDisplaySeamlesslyWithParent()) | 
| -        m_frame->ownerRenderer()->setNeedsLayout(); | 
| - | 
| int delay = m_frame->document()->minimumLayoutDelay(); | 
| if (m_layoutTimer.isActive() && m_delayedLayout && !delay) | 
| unscheduleRelayout(); | 
| @@ -2809,8 +2796,6 @@ void FrameView::updateLayoutAndStyleIfNeededRecursive() | 
| for (Vector<RefPtr<FrameView> >::iterator it = frameViews.begin(); it != end; ++it) | 
| (*it)->updateLayoutAndStyleIfNeededRecursive(); | 
|  | 
| -    // When seamless is on, child frame can mark parent frame dirty. In such case, child frame | 
| -    // needs to call layout on parent frame recursively. | 
| // This assert ensures that parent frames are clean, when child frames finished updating layout and style. | 
| ASSERT(!needsLayout()); | 
| } | 
|  |