⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 wmlpagestate.cpp

📁 linux下开源浏览器WebKit的源码,市面上的很多商用浏览器都是移植自WebKit
💻 CPP
字号:
/* * Copyright (C) 2008 Torch Mobile Inc. All rights reserved. (http://www.torchmobile.com/) * * Copyright (C) 2004-2007 Apple Inc. All rights reserved. * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Library General Public * License as published by the Free Software Foundation; either * version 2 of the License, or (at your option) any later version. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU * Library General Public License for more details. * * You should have received a copy of the GNU Library General Public License * along with this library; see the file COPYING.LIB.  If not, write to * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, * Boston, MA 02110-1301, USA. * */#include "config.h"#if ENABLE(WML)#include "WMLPageState.h"#include "HistoryItem.h"#include "KURL.h"#include "Page.h"namespace WebCore {WMLPageState::WMLPageState(Page* page)    : m_page(page)    , m_historyLength(0)    , m_activeCard(0)    , m_hasDeckAccess(false){}WMLPageState::~WMLPageState(){    m_variables.clear();}void WMLPageState::reset(){    // remove all the variables in the current browser context    m_variables.clear();    // clear the navigation history state     if (m_page)        m_page->backForwardList()->clearWmlPageHistory();    // reset implementation-specfic state if UA has    m_historyLength = 1;}bool WMLPageState::setNeedCheckDeckAccess(bool need){    if (m_hasDeckAccess && need)        return false;    m_hasDeckAccess = need;    m_accessPath = String();    m_accessDomain = String();    return true;}// FIXME: We may want another name, it does far more than just checking wheter the deck is accessablebool WMLPageState::isDeckAccessible(){    if (!m_hasDeckAccess || !m_page || !m_page->backForwardList() || !m_page->backForwardList()->backItem())        return true;    HistoryItem* histItem = m_page->backForwardList()->backItem();    KURL url(histItem->urlString());    String prevHost = url.host();    String prevPath = url.path();    // for 'file' URI, the host part may be empty, so we should complete it.    if (prevHost.isEmpty())        prevHost = "localhost";    histItem = m_page->backForwardList()->currentItem();    KURL curUrl(histItem->urlString());    String curPath = curUrl.path();    if (equalIgnoringRef(url, curUrl))       return true;    // "/" is the default value if not specified    if (m_accessPath.isEmpty())          m_accessPath = "/";    else if (m_accessPath.endsWith("/") && (m_accessPath != "/"))        m_accessPath = m_accessPath.left((m_accessPath.length()-1));    // current deck domain is the default value if not specified    if (m_accessDomain.isEmpty())        m_accessDomain = prevHost;    // convert relative URL to absolute URL before performing path matching    if (prevHost == m_accessDomain) {        if (!m_accessPath.startsWith("/")) {           int index = curPath.reverseFind('/');           if (index != -1) {               curPath = curPath.left(index + 1);               curPath += m_accessPath;               curUrl.setPath(curPath);               m_accessPath = curUrl.path();           }        }    }    // path prefix matching    if (prevPath.startsWith(m_accessPath) &&        (prevPath[m_accessPath.length()] == '/' || prevPath.length() == m_accessPath.length())) {        // domain suffix matching        unsigned domainLength = m_accessDomain.length();        unsigned hostLength = prevHost.length();        return (prevHost.endsWith(m_accessDomain) && prevHost[hostLength - domainLength - 1] == '.') || hostLength == domainLength;    }    return false;}}#endif

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -