void WMLPrevElement::executeTask(Event*) { WMLPageState* pageState = wmlPageStateForDocument(document()); if (!pageState) return; WMLCardElement* card = pageState->activeCard(); if (!card) return; storeVariableState(pageState); // Stop the timer of the current card if it is active if (WMLTimerElement* eventTimer = card->eventTimer()) eventTimer->stop(); pageState->page()->goBack(); }
void WMLDoElement::defaultEventHandler(Event* event) { if (m_isOptional) return; if (event->type() == eventNames().keypressEvent) { WMLElement::defaultEventHandler(event); return; } if (event->type() != eventNames().clickEvent && event->type() != eventNames().keydownEvent) return; if (event->isKeyboardEvent() && static_cast<KeyboardEvent*>(event)->keyIdentifier() != "Enter") return; if (m_type == "accept" || m_type == "options") { if (m_task) m_task->executeTask(); } else if (m_type == "prev") { ASSERT(document()->isWMLDocument()); WMLDocument* document = static_cast<WMLDocument*>(this->document()); WMLPageState* pageState = wmlPageStateForDocument(document); if (!pageState) return; // Stop the timer of the current card if it is active if (WMLCardElement* card = document->activeCard()) { if (WMLTimerElement* eventTimer = card->eventTimer()) eventTimer->stop(); } pageState->page()->goBack(); } else if (m_type == "reset") { WMLPageState* pageState = wmlPageStateForDocument(document()); if (!pageState) return; pageState->reset(); } }
void WMLDocument::finishedParsing() { if (ScriptableDocumentParser* parser = this->scriptableDocumentParser()) { if (!parser->wellFormed()) { Document::finishedParsing(); return; } } bool hasAccess = initialize(true); Document::finishedParsing(); if (!hasAccess) { m_activeCard = 0; WMLPageState* wmlPageState = wmlPageStateForDocument(this); if (!wmlPageState) return; Page* page = wmlPageState->page(); if (!page) return; HistoryItem* item = page->backForward()->backItem(); if (!item) return; page->goToItem(item, FrameLoadTypeBackWMLDeckNotAccessible); return; } /// M: ALPS00439551 set a flag to prevent infinite loop in WMLDocument @{ if (m_policyDownloadError) { m_policyDownloadError = false; return; } /// @} /// M: ALPS00439551 use a timer to trigger handleIntrinsicEventIfNeeded() m_intrinsicEventTimer.startOneShot(0.0f); }
void WMLPrevElement::executeTask() { ASSERT(document()->isWMLDocument()); WMLDocument* document = static_cast<WMLDocument*>(this->document()); WMLPageState* pageState = wmlPageStateForDocument(document); if (!pageState) return; WMLCardElement* card = document->activeCard(); if (!card) return; storeVariableState(pageState); // Stop the timer of the current card if it is active if (WMLTimerElement* eventTimer = card->eventTimer()) eventTimer->stop(); pageState->page()->goBack(); }
void WMLDocument::finishedParsing() { if (Tokenizer* tokenizer = this->tokenizer()) { if (!tokenizer->wellFormed()) { Document::finishedParsing(); return; } } bool hasAccess = initialize(true); Document::finishedParsing(); if (!hasAccess) { m_activeCard = 0; WMLPageState* wmlPageState = wmlPageStateForDocument(this); if (!wmlPageState) return; Page* page = wmlPageState->page(); if (!page) return; BackForwardList* list = page->backForwardList(); if (!list) return; HistoryItem* item = list->backItem(); if (!item) return; page->goToItem(item, FrameLoadTypeBackWMLDeckNotAccessible); return; } if (m_activeCard) { m_activeCard->handleIntrinsicEventIfNeeded(); m_activeCard = 0; } }