From ab0a50979b9eb4dfa3320eff7e187e41efedf7a9 Mon Sep 17 00:00:00 2001 From: Jocelyn Turcotte Date: Fri, 8 Aug 2014 14:30:41 +0200 Subject: Update Chromium to beta version 37.0.2062.68 Change-Id: I188e3b5aff1bec75566014291b654eb19f5bc8ca Reviewed-by: Andras Becsi --- .../core/html/shadow/PickerIndicatorElement.cpp | 24 +++++++++++++++++----- 1 file changed, 19 insertions(+), 5 deletions(-) (limited to 'chromium/third_party/WebKit/Source/core/html/shadow/PickerIndicatorElement.cpp') diff --git a/chromium/third_party/WebKit/Source/core/html/shadow/PickerIndicatorElement.cpp b/chromium/third_party/WebKit/Source/core/html/shadow/PickerIndicatorElement.cpp index 40aec28a852..1c838a2683a 100644 --- a/chromium/third_party/WebKit/Source/core/html/shadow/PickerIndicatorElement.cpp +++ b/chromium/third_party/WebKit/Source/core/html/shadow/PickerIndicatorElement.cpp @@ -37,6 +37,7 @@ #include "core/page/Chrome.h" #include "core/page/Page.h" #include "core/rendering/RenderDetailsMarker.h" +#include "wtf/TemporaryChange.h" using namespace WTF::Unicode; @@ -47,21 +48,20 @@ using namespace HTMLNames; inline PickerIndicatorElement::PickerIndicatorElement(Document& document, PickerIndicatorOwner& pickerIndicatorOwner) : HTMLDivElement(document) , m_pickerIndicatorOwner(&pickerIndicatorOwner) + , m_isInOpenPopup(false) { } -PassRefPtr PickerIndicatorElement::create(Document& document, PickerIndicatorOwner& pickerIndicatorOwner) +PassRefPtrWillBeRawPtr PickerIndicatorElement::create(Document& document, PickerIndicatorOwner& pickerIndicatorOwner) { - RefPtr element = adoptRef(new PickerIndicatorElement(document, pickerIndicatorOwner)); - element->setPseudo(AtomicString("-webkit-calendar-picker-indicator", AtomicString::ConstructFromLiteral)); + RefPtrWillBeRawPtr element = adoptRefWillBeNoop(new PickerIndicatorElement(document, pickerIndicatorOwner)); + element->setShadowPseudoId(AtomicString("-webkit-calendar-picker-indicator", AtomicString::ConstructFromLiteral)); element->setAttribute(idAttr, ShadowElementNames::pickerIndicator()); return element.release(); } PickerIndicatorElement::~PickerIndicatorElement() { - closePopup(); - ASSERT(!m_chooser); } RenderObject* PickerIndicatorElement::createRenderer(RenderStyle*) @@ -113,6 +113,12 @@ void PickerIndicatorElement::didEndChooser() void PickerIndicatorElement::openPopup() { + // The m_isInOpenPopup flag is unnecessary in production. + // MockPagePopupDriver allows to execute JavaScript code in + // DateTimeChooserImpl constructor. It might create another DateTimeChooser. + if (m_isInOpenPopup) + return; + TemporaryChange reentrancyProtector(m_isInOpenPopup, true); if (m_chooser) return; if (!document().page()) @@ -143,6 +149,14 @@ bool PickerIndicatorElement::isPickerIndicatorElement() const return true; } +void PickerIndicatorElement::trace(Visitor* visitor) +{ + visitor->trace(m_pickerIndicatorOwner); + visitor->trace(m_chooser); + HTMLDivElement::trace(visitor); + DateTimeChooserClient::trace(visitor); +} + } #endif -- cgit v1.2.3