WebKit/mac/WebView/WebViewData.mm
changeset 0 4f2f89ce4247
equal deleted inserted replaced
-1:000000000000 0:4f2f89ce4247
       
     1 /*
       
     2  * Copyright (C) 2005, 2006, 2007, 2008, 2009 Apple Inc. All rights reserved.
       
     3  * Copyright (C) 2006 David Smith (catfish.man@gmail.com)
       
     4  *
       
     5  * Redistribution and use in source and binary forms, with or without
       
     6  * modification, are permitted provided that the following conditions
       
     7  * are met:
       
     8  *
       
     9  * 1.  Redistributions of source code must retain the above copyright
       
    10  *     notice, this list of conditions and the following disclaimer. 
       
    11  * 2.  Redistributions in binary form must reproduce the above copyright
       
    12  *     notice, this list of conditions and the following disclaimer in the
       
    13  *     documentation and/or other materials provided with the distribution. 
       
    14  * 3.  Neither the name of Apple Computer, Inc. ("Apple") nor the names of
       
    15  *     its contributors may be used to endorse or promote products derived
       
    16  *     from this software without specific prior written permission. 
       
    17  *
       
    18  * THIS SOFTWARE IS PROVIDED BY APPLE AND ITS CONTRIBUTORS "AS IS" AND ANY
       
    19  * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
       
    20  * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
       
    21  * DISCLAIMED. IN NO EVENT SHALL APPLE OR ITS CONTRIBUTORS BE LIABLE FOR ANY
       
    22  * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
       
    23  * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
       
    24  * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
       
    25  * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
       
    26  * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
       
    27  * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
       
    28  */
       
    29 
       
    30 #import "WebViewData.h"
       
    31 
       
    32 #import "WebKitLogging.h"
       
    33 #import "WebPreferenceKeysPrivate.h"
       
    34 #import <WebCore/WebCoreObjCExtras.h>
       
    35 #import <objc/objc-auto.h>
       
    36 #import <runtime/InitializeThreading.h>
       
    37 #import <wtf/Threading.h>
       
    38 
       
    39 BOOL applicationIsTerminating = NO;
       
    40 int pluginDatabaseClientCount = 0;
       
    41 
       
    42 @implementation WebViewPrivate
       
    43 
       
    44 + (void)initialize
       
    45 {
       
    46     JSC::initializeThreading();
       
    47     WTF::initializeMainThreadToProcessMainThread();
       
    48 #ifndef BUILDING_ON_TIGER
       
    49     WebCoreObjCFinalizeOnMainThread(self);
       
    50 #endif
       
    51 }
       
    52 
       
    53 - (id)init 
       
    54 {
       
    55     self = [super init];
       
    56     if (!self)
       
    57         return nil;
       
    58 
       
    59     allowsUndo = YES;
       
    60     usesPageCache = YES;
       
    61     shouldUpdateWhileOffscreen = YES;
       
    62     cssAnimationsSuspended = NO;
       
    63 
       
    64     zoomMultiplier = 1;
       
    65 
       
    66 #if ENABLE(DASHBOARD_SUPPORT)
       
    67     dashboardBehaviorAllowWheelScrolling = YES;
       
    68 #endif
       
    69 
       
    70 #if !defined(BUILDING_ON_TIGER)
       
    71     shouldCloseWithWindow = objc_collectingEnabled();
       
    72 #else
       
    73     shouldCloseWithWindow = NO;
       
    74 #endif
       
    75 
       
    76     smartInsertDeleteEnabled = ![[NSUserDefaults standardUserDefaults] objectForKey:WebSmartInsertDeleteEnabled]
       
    77         || [[NSUserDefaults standardUserDefaults] boolForKey:WebSmartInsertDeleteEnabled];
       
    78 
       
    79 
       
    80     pluginDatabaseClientCount++;
       
    81 
       
    82     return self;
       
    83 }
       
    84 
       
    85 - (void)dealloc
       
    86 {    
       
    87     ASSERT(applicationIsTerminating || !page);
       
    88     ASSERT(applicationIsTerminating || !preferences);
       
    89     ASSERT(!insertionPasteboard);
       
    90 #if ENABLE(VIDEO)
       
    91     ASSERT(!fullscreenController);
       
    92 #endif
       
    93 
       
    94     [applicationNameForUserAgent release];
       
    95     [backgroundColor release];
       
    96     [inspector release];
       
    97     [currentNodeHighlight release];
       
    98     [hostWindow release];
       
    99     [policyDelegateForwarder release];
       
   100     [UIDelegateForwarder release];
       
   101     [frameLoadDelegateForwarder release];
       
   102     [editingDelegateForwarder release];
       
   103     [mediaStyle release];
       
   104 
       
   105     [super dealloc];
       
   106 }
       
   107 
       
   108 - (void)finalize
       
   109 {
       
   110     ASSERT_MAIN_THREAD();
       
   111     ASSERT(!insertionPasteboard);
       
   112 #if ENABLE(VIDEO)
       
   113     ASSERT(!fullscreenController);
       
   114 #endif
       
   115 
       
   116     [super finalize];
       
   117 }
       
   118 
       
   119 @end