Home | History | Annotate | Download | only in frame
      1 /*
      2  * Copyright (C) 2006, 2007, 2008, 2009, 2011, 2012 Apple Inc. All rights reserved.
      3  *
      4  * Redistribution and use in source and binary forms, with or without
      5  * modification, are permitted provided that the following conditions
      6  * are met:
      7  * 1. Redistributions of source code must retain the above copyright
      8  *    notice, this list of conditions and the following disclaimer.
      9  * 2. Redistributions in binary form must reproduce the above copyright
     10  *    notice, this list of conditions and the following disclaimer in the
     11  *    documentation and/or other materials provided with the distribution.
     12  *
     13  * THIS SOFTWARE IS PROVIDED BY APPLE COMPUTER, INC. ``AS IS'' AND ANY
     14  * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
     15  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
     16  * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL APPLE COMPUTER, INC. OR
     17  * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
     18  * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
     19  * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
     20  * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
     21  * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
     22  * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
     23  * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
     24  */
     25 
     26 #include "config.h"
     27 #include "core/frame/Settings.h"
     28 
     29 #include "platform/RuntimeEnabledFeatures.h"
     30 #include "platform/scroll/ScrollbarTheme.h"
     31 
     32 namespace blink {
     33 
     34 // NOTEs
     35 //  1) EditingMacBehavior comprises builds on Mac;
     36 //  2) EditingWindowsBehavior comprises builds on Windows;
     37 //  3) EditingUnixBehavior comprises all unix-based systems, but Darwin/MacOS/Android (and then abusing the terminology);
     38 //  4) EditingAndroidBehavior comprises Android builds.
     39 // 99) MacEditingBehavior is used a fallback.
     40 static EditingBehaviorType editingBehaviorTypeForPlatform()
     41 {
     42     return
     43 #if OS(MACOSX)
     44     EditingMacBehavior
     45 #elif OS(WIN)
     46     EditingWindowsBehavior
     47 #elif OS(ANDROID)
     48     EditingAndroidBehavior
     49 #else // Rest of the UNIX-like systems
     50     EditingUnixBehavior
     51 #endif
     52     ;
     53 }
     54 
     55 static const bool defaultUnifiedTextCheckerEnabled = false;
     56 #if OS(MACOSX)
     57 static const bool defaultSmartInsertDeleteEnabled = true;
     58 #else
     59 static const bool defaultSmartInsertDeleteEnabled = false;
     60 #endif
     61 #if OS(WIN)
     62 static const bool defaultSelectTrailingWhitespaceEnabled = true;
     63 #else
     64 static const bool defaultSelectTrailingWhitespaceEnabled = false;
     65 #endif
     66 
     67 Settings::Settings()
     68     : m_openGLMultisamplingEnabled(false)
     69 #if HACK_FORCE_TEXT_AUTOSIZING_ON_DESKTOP
     70     , m_textAutosizingWindowSizeOverride(320, 480)
     71     , m_textAutosizingEnabled(true)
     72 #else
     73     , m_textAutosizingEnabled(false)
     74 #endif
     75     SETTINGS_INITIALIZER_LIST
     76 {
     77 }
     78 
     79 PassOwnPtr<Settings> Settings::create()
     80 {
     81     return adoptPtr(new Settings);
     82 }
     83 
     84 SETTINGS_SETTER_BODIES
     85 
     86 void Settings::setDelegate(SettingsDelegate* delegate)
     87 {
     88     m_delegate = delegate;
     89 }
     90 
     91 void Settings::invalidate(SettingsDelegate::ChangeType changeType)
     92 {
     93     if (m_delegate)
     94         m_delegate->settingsChanged(changeType);
     95 }
     96 
     97 void Settings::setTextAutosizingEnabled(bool textAutosizingEnabled)
     98 {
     99     if (m_textAutosizingEnabled == textAutosizingEnabled)
    100         return;
    101 
    102     m_textAutosizingEnabled = textAutosizingEnabled;
    103     invalidate(SettingsDelegate::TextAutosizingChange);
    104 }
    105 
    106 // FIXME: Move to Settings.in once make_settings can understand IntSize.
    107 void Settings::setTextAutosizingWindowSizeOverride(const IntSize& textAutosizingWindowSizeOverride)
    108 {
    109     if (m_textAutosizingWindowSizeOverride == textAutosizingWindowSizeOverride)
    110         return;
    111 
    112     m_textAutosizingWindowSizeOverride = textAutosizingWindowSizeOverride;
    113     invalidate(SettingsDelegate::TextAutosizingChange);
    114 }
    115 
    116 void Settings::setMockScrollbarsEnabled(bool flag)
    117 {
    118     ScrollbarTheme::setMockScrollbarsEnabled(flag);
    119 }
    120 
    121 bool Settings::mockScrollbarsEnabled()
    122 {
    123     return ScrollbarTheme::mockScrollbarsEnabled();
    124 }
    125 
    126 void Settings::setOpenGLMultisamplingEnabled(bool flag)
    127 {
    128     if (m_openGLMultisamplingEnabled == flag)
    129         return;
    130 
    131     m_openGLMultisamplingEnabled = flag;
    132     invalidate(SettingsDelegate::MultisamplingChange);
    133 }
    134 
    135 } // namespace blink
    136