|
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 |