diff options
author | initial.commit <initial.commit@0039d316-1c4b-4281-b951-d872f2087c98> | 2008-07-27 00:20:51 +0000 |
---|---|---|
committer | initial.commit <initial.commit@0039d316-1c4b-4281-b951-d872f2087c98> | 2008-07-27 00:20:51 +0000 |
commit | f5b16fed647e941aa66933178da85db2860d639b (patch) | |
tree | f00e9856c04aad3b558a140955e7674add33f051 /webkit/pending/Settings.cpp | |
parent | 920c091ac3ee15079194c82ae8a7a18215f3f23c (diff) | |
download | chromium_src-f5b16fed647e941aa66933178da85db2860d639b.zip chromium_src-f5b16fed647e941aa66933178da85db2860d639b.tar.gz chromium_src-f5b16fed647e941aa66933178da85db2860d639b.tar.bz2 |
Add webkit to the repository.
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@18 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'webkit/pending/Settings.cpp')
-rw-r--r-- | webkit/pending/Settings.cpp | 332 |
1 files changed, 332 insertions, 0 deletions
diff --git a/webkit/pending/Settings.cpp b/webkit/pending/Settings.cpp new file mode 100644 index 0000000..8bcd6be --- /dev/null +++ b/webkit/pending/Settings.cpp @@ -0,0 +1,332 @@ +/* + * 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 "Page.h" +#include "PageCache.h" +#include "HistoryItem.h" + +#if ENABLE(DATABASE) +#include "DatabaseTracker.h" +#endif + +namespace WebCore { + +static void setNeedsReapplyStylesInAllFrames(Page* page) +{ + for (Frame* frame = page->mainFrame(); frame; frame = frame->tree()->traverseNext()) + frame->setNeedsReapplyStyles(); +} + +Settings::Settings(Page* page) + : m_page(page) + , m_editableLinkBehavior(EditableLinkDefaultBehavior) + , 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_isJavaScriptEnabled(false) + , m_javaScriptCanOpenWindowsAutomatically(false) + , m_shouldPrintBackgrounds(false) + , m_textAreasAreResizable(false) + , m_usesDashboardBackwardCompatibilityMode(false) + , 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_usesEncodingDetector(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::setJavaEnabled(bool isJavaEnabled) +{ + m_isJavaEnabled = isJavaEnabled; +} + +void Settings::setPluginsEnabled(bool arePluginsEnabled) +{ + m_arePluginsEnabled = arePluginsEnabled; +} + +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::setUsesDashboardBackwardCompatibilityMode(bool usesDashboardBackwardCompatibilityMode) +{ + m_usesDashboardBackwardCompatibilityMode = usesDashboardBackwardCompatibilityMode; +} + +// 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::setUsesUniversalDetector(bool usesEncodingDetector) +{ + m_usesEncodingDetector = usesEncodingDetector; +} + +} // namespace WebCore |