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

📄 settings.cpp

📁 linux下开源浏览器WebKit的源码,市面上的很多商用浏览器都是移植自WebKit
💻 CPP
字号:
/* * Copyright (C) 2006, 2007, 2008 Apple Inc. 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 APPLE COMPUTER, INC. ``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 APPLE COMPUTER, INC. OR * CONTRIBUTORS 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 "Settings.h"#include "Frame.h"#include "FrameTree.h"#include "HistoryItem.h"#include "Page.h"#include "PageCache.h"#include <limits>namespace WebCore {static void setNeedsReapplyStylesInAllFrames(Page* page){    for (Frame* frame = page->mainFrame(); frame; frame = frame->tree()->traverseNext())        frame->setNeedsReapplyStyles();}#if USE(SAFARI_THEME)bool Settings::gShouldPaintNativeControls = false;#endifSettings::Settings(Page* page)    : m_page(page)    , m_editableLinkBehavior(EditableLinkDefaultBehavior)    , m_textDirectionSubmenuInclusionBehavior(TextDirectionSubmenuAutomaticallyIncluded)    , m_minimumFontSize(0)    , m_minimumLogicalFontSize(0)    , m_defaultFontSize(0)    , m_defaultFixedFontSize(0)    , m_isJavaEnabled(false)    , m_loadsImagesAutomatically(false)    , m_privateBrowsingEnabled(false)    , m_arePluginsEnabled(false)    , m_databasesEnabled(false)    , m_localStorageEnabled(false)    , m_isJavaScriptEnabled(false)    , m_isWebSecurityEnabled(true)    , m_allowUniversalAccessFromFileURLs(true)    , m_javaScriptCanOpenWindowsAutomatically(false)    , m_shouldPrintBackgrounds(false)    , m_textAreasAreResizable(false)#if ENABLE(DASHBOARD_SUPPORT)    , m_usesDashboardBackwardCompatibilityMode(false)#endif    , m_needsAdobeFrameReloadingQuirk(false)    , m_needsKeyboardEventDisambiguationQuirks(false)    , m_isDOMPasteAllowed(false)    , m_shrinksStandaloneImagesToFit(true)    , m_usesPageCache(false)    , m_showsURLsInToolTips(false)    , m_forceFTPDirectoryListings(false)    , m_developerExtrasEnabled(false)    , m_authorAndUserStylesEnabled(true)    , m_needsSiteSpecificQuirks(false)    , m_fontRenderingMode(0)    , m_webArchiveDebugModeEnabled(false)    , m_inApplicationChromeMode(false)    , m_offlineWebApplicationCacheEnabled(false)    , m_rangeMutationDisabledForOldAppleMail(false)    , m_shouldPaintCustomScrollbars(false)    , m_zoomsTextOnly(false)    , m_enforceCSSMIMETypeInStrictMode(true)    , m_maximumDecodedImageSize(std::numeric_limits<size_t>::max())    , m_allowScriptsToCloseWindows(false){    // A Frame may not have been created yet, so we initialize the AtomicString     // hash before trying to use it.    AtomicString::init();}void Settings::setStandardFontFamily(const AtomicString& standardFontFamily){    if (standardFontFamily == m_standardFontFamily)        return;    m_standardFontFamily = standardFontFamily;    setNeedsReapplyStylesInAllFrames(m_page);}void Settings::setFixedFontFamily(const AtomicString& fixedFontFamily){    if (m_fixedFontFamily == fixedFontFamily)        return;            m_fixedFontFamily = fixedFontFamily;    setNeedsReapplyStylesInAllFrames(m_page);}void Settings::setSerifFontFamily(const AtomicString& serifFontFamily){    if (m_serifFontFamily == serifFontFamily)        return;            m_serifFontFamily = serifFontFamily;    setNeedsReapplyStylesInAllFrames(m_page);}void Settings::setSansSerifFontFamily(const AtomicString& sansSerifFontFamily){    if (m_sansSerifFontFamily == sansSerifFontFamily)        return;            m_sansSerifFontFamily = sansSerifFontFamily;     setNeedsReapplyStylesInAllFrames(m_page);}void Settings::setCursiveFontFamily(const AtomicString& cursiveFontFamily){    if (m_cursiveFontFamily == cursiveFontFamily)        return;            m_cursiveFontFamily = cursiveFontFamily;    setNeedsReapplyStylesInAllFrames(m_page);}void Settings::setFantasyFontFamily(const AtomicString& fantasyFontFamily){    if (m_fantasyFontFamily == fantasyFontFamily)        return;            m_fantasyFontFamily = fantasyFontFamily;    setNeedsReapplyStylesInAllFrames(m_page);}void Settings::setMinimumFontSize(int minimumFontSize){    if (m_minimumFontSize == minimumFontSize)        return;    m_minimumFontSize = minimumFontSize;    setNeedsReapplyStylesInAllFrames(m_page);}void Settings::setMinimumLogicalFontSize(int minimumLogicalFontSize){    if (m_minimumLogicalFontSize == minimumLogicalFontSize)        return;    m_minimumLogicalFontSize = minimumLogicalFontSize;    setNeedsReapplyStylesInAllFrames(m_page);}void Settings::setDefaultFontSize(int defaultFontSize){    if (m_defaultFontSize == defaultFontSize)        return;    m_defaultFontSize = defaultFontSize;    setNeedsReapplyStylesInAllFrames(m_page);}void Settings::setDefaultFixedFontSize(int defaultFontSize){    if (m_defaultFixedFontSize == defaultFontSize)        return;    m_defaultFixedFontSize = defaultFontSize;    setNeedsReapplyStylesInAllFrames(m_page);}void Settings::setLoadsImagesAutomatically(bool loadsImagesAutomatically){    m_loadsImagesAutomatically = loadsImagesAutomatically;}void Settings::setJavaScriptEnabled(bool isJavaScriptEnabled){    m_isJavaScriptEnabled = isJavaScriptEnabled;}void Settings::setWebSecurityEnabled(bool isWebSecurityEnabled){    m_isWebSecurityEnabled = isWebSecurityEnabled;}void Settings::setAllowUniversalAccessFromFileURLs(bool allowUniversalAccessFromFileURLs){    m_allowUniversalAccessFromFileURLs = allowUniversalAccessFromFileURLs;}void Settings::setJavaEnabled(bool isJavaEnabled){    m_isJavaEnabled = isJavaEnabled;}void Settings::setPluginsEnabled(bool arePluginsEnabled){    m_arePluginsEnabled = arePluginsEnabled;}void Settings::setDatabasesEnabled(bool databasesEnabled){    m_databasesEnabled = databasesEnabled;}void Settings::setLocalStorageEnabled(bool localStorageEnabled){    m_localStorageEnabled = localStorageEnabled;}void Settings::setPrivateBrowsingEnabled(bool privateBrowsingEnabled){    m_privateBrowsingEnabled = privateBrowsingEnabled;}void Settings::setJavaScriptCanOpenWindowsAutomatically(bool javaScriptCanOpenWindowsAutomatically){    m_javaScriptCanOpenWindowsAutomatically = javaScriptCanOpenWindowsAutomatically;}void Settings::setDefaultTextEncodingName(const String& defaultTextEncodingName){    m_defaultTextEncodingName = defaultTextEncodingName;}void Settings::setUserStyleSheetLocation(const KURL& userStyleSheetLocation){    if (m_userStyleSheetLocation == userStyleSheetLocation)        return;    m_userStyleSheetLocation = userStyleSheetLocation;    m_page->userStyleSheetLocationChanged();    setNeedsReapplyStylesInAllFrames(m_page);}void Settings::setShouldPrintBackgrounds(bool shouldPrintBackgrounds){    m_shouldPrintBackgrounds = shouldPrintBackgrounds;}void Settings::setTextAreasAreResizable(bool textAreasAreResizable){    if (m_textAreasAreResizable == textAreasAreResizable)        return;    m_textAreasAreResizable = textAreasAreResizable;    setNeedsReapplyStylesInAllFrames(m_page);}void Settings::setEditableLinkBehavior(EditableLinkBehavior editableLinkBehavior){    m_editableLinkBehavior = editableLinkBehavior;}void Settings::setTextDirectionSubmenuInclusionBehavior(TextDirectionSubmenuInclusionBehavior behavior){    m_textDirectionSubmenuInclusionBehavior = behavior;}#if ENABLE(DASHBOARD_SUPPORT)void Settings::setUsesDashboardBackwardCompatibilityMode(bool usesDashboardBackwardCompatibilityMode){    m_usesDashboardBackwardCompatibilityMode = usesDashboardBackwardCompatibilityMode;}#endif// FIXME: This quirk is needed because of Radar 4674537 and 5211271. We need to phase it out once Adobe// can fix the bug from their end.void Settings::setNeedsAdobeFrameReloadingQuirk(bool shouldNotReloadIFramesForUnchangedSRC){    m_needsAdobeFrameReloadingQuirk = shouldNotReloadIFramesForUnchangedSRC;}// This is a quirk we are pro-actively applying to old applications. It changes keyboard event dispatching,// making keyIdentifier available on keypress events, making charCode available on keydown/keyup events,// and getting keypress dispatched in more cases.void Settings::setNeedsKeyboardEventDisambiguationQuirks(bool needsQuirks){    m_needsKeyboardEventDisambiguationQuirks = needsQuirks;}void Settings::setDOMPasteAllowed(bool DOMPasteAllowed){    m_isDOMPasteAllowed = DOMPasteAllowed;}void Settings::setUsesPageCache(bool usesPageCache){    if (m_usesPageCache == usesPageCache)        return;            m_usesPageCache = usesPageCache;    if (!m_usesPageCache) {        HistoryItemVector& historyItems = m_page->backForwardList()->entries();        for (unsigned i = 0; i < historyItems.size(); i++)            pageCache()->remove(historyItems[i].get());        pageCache()->releaseAutoreleasedPagesNow();    }}void Settings::setShrinksStandaloneImagesToFit(bool shrinksStandaloneImagesToFit){    m_shrinksStandaloneImagesToFit = shrinksStandaloneImagesToFit;}void Settings::setShowsURLsInToolTips(bool showsURLsInToolTips){    m_showsURLsInToolTips = showsURLsInToolTips;}void Settings::setFTPDirectoryTemplatePath(const String& path){    m_ftpDirectoryTemplatePath = path;}void Settings::setForceFTPDirectoryListings(bool force){    m_forceFTPDirectoryListings = force;}void Settings::setDeveloperExtrasEnabled(bool developerExtrasEnabled){    m_developerExtrasEnabled = developerExtrasEnabled;}void Settings::setAuthorAndUserStylesEnabled(bool authorAndUserStylesEnabled){    if (m_authorAndUserStylesEnabled == authorAndUserStylesEnabled)        return;    m_authorAndUserStylesEnabled = authorAndUserStylesEnabled;    setNeedsReapplyStylesInAllFrames(m_page);}void Settings::setFontRenderingMode(FontRenderingMode mode){    if (fontRenderingMode() == mode)        return;    m_fontRenderingMode = mode;    setNeedsReapplyStylesInAllFrames(m_page);}FontRenderingMode Settings::fontRenderingMode() const{    return static_cast<FontRenderingMode>(m_fontRenderingMode);}void Settings::setNeedsSiteSpecificQuirks(bool needsQuirks){    m_needsSiteSpecificQuirks = needsQuirks;}void Settings::setWebArchiveDebugModeEnabled(bool enabled){    m_webArchiveDebugModeEnabled = enabled;}void Settings::setLocalStorageDatabasePath(const String& path){    m_localStorageDatabasePath = path;}void Settings::disableRangeMutationForOldAppleMail(bool disable){    m_rangeMutationDisabledForOldAppleMail = disable;}void Settings::setApplicationChromeMode(bool mode){    m_inApplicationChromeMode = mode;}void Settings::setOfflineWebApplicationCacheEnabled(bool enabled){    m_offlineWebApplicationCacheEnabled = enabled;}void Settings::setShouldPaintCustomScrollbars(bool shouldPaintCustomScrollbars){    m_shouldPaintCustomScrollbars = shouldPaintCustomScrollbars;}void Settings::setZoomsTextOnly(bool zoomsTextOnly){    if (zoomsTextOnly == m_zoomsTextOnly)        return;        m_zoomsTextOnly = zoomsTextOnly;    setNeedsReapplyStylesInAllFrames(m_page);}void Settings::setEnforceCSSMIMETypeInStrictMode(bool enforceCSSMIMETypeInStrictMode){    m_enforceCSSMIMETypeInStrictMode = enforceCSSMIMETypeInStrictMode;}#if USE(SAFARI_THEME)void Settings::setShouldPaintNativeControls(bool shouldPaintNativeControls){    gShouldPaintNativeControls = shouldPaintNativeControls;}#endifvoid Settings::setAllowScriptsToCloseWindows(bool allowScriptsToCloseWindows){    m_allowScriptsToCloseWindows = allowScriptsToCloseWindows;}} // namespace WebCore

⌨️ 快捷键说明

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