10bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch/*
20bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch * Copyright (C) 2005, 2006, 2007, 2008, 2009 Apple Inc. All rights reserved.
30bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch * Copyright (C) 2006 David Smith (catfish.man@gmail.com)
40bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch *
50bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch * Redistribution and use in source and binary forms, with or without
60bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch * modification, are permitted provided that the following conditions
70bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch * are met:
80bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch *
90bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch * 1.  Redistributions of source code must retain the above copyright
100bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch *     notice, this list of conditions and the following disclaimer.
110bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch * 2.  Redistributions in binary form must reproduce the above copyright
120bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch *     notice, this list of conditions and the following disclaimer in the
130bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch *     documentation and/or other materials provided with the distribution.
140bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch * 3.  Neither the name of Apple Computer, Inc. ("Apple") nor the names of
150bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch *     its contributors may be used to endorse or promote products derived
160bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch *     from this software without specific prior written permission.
170bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch *
180bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch * THIS SOFTWARE IS PROVIDED BY APPLE AND ITS CONTRIBUTORS "AS IS" AND ANY
190bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
200bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
210bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch * DISCLAIMED. IN NO EVENT SHALL APPLE OR ITS CONTRIBUTORS BE LIABLE FOR ANY
220bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
230bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
240bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
250bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
260bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
270bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
280bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch */
290bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch
300bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch#import "WebViewData.h"
310bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch
320bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch#import "WebKitLogging.h"
330bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch#import "WebPreferenceKeysPrivate.h"
340bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch#import <WebCore/WebCoreObjCExtras.h>
3581bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdoch#import <WebCore/HistoryItem.h>
360bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch#import <objc/objc-auto.h>
370bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch#import <runtime/InitializeThreading.h>
3821939df44de1705786c545cd1bf519d47250322dBen Murdoch#import <wtf/Threading.h>
390bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch
400bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben MurdochBOOL applicationIsTerminating = NO;
410bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdochint pluginDatabaseClientCount = 0;
420bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch
430bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch@implementation WebViewPrivate
440bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch
450bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch+ (void)initialize
460bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch{
470bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch    JSC::initializeThreading();
4821939df44de1705786c545cd1bf519d47250322dBen Murdoch    WTF::initializeMainThreadToProcessMainThread();
490bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch#ifndef BUILDING_ON_TIGER
500bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch    WebCoreObjCFinalizeOnMainThread(self);
510bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch#endif
520bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch}
530bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch
540bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch- (id)init
550bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch{
560bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch    self = [super init];
570bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch    if (!self)
580bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch        return nil;
590bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch
600bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch    allowsUndo = YES;
610bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch    usesPageCache = YES;
620bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch    shouldUpdateWhileOffscreen = YES;
63231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block    cssAnimationsSuspended = NO;
640bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch
650bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch    zoomMultiplier = 1;
6668513a70bcd92384395513322f1b801e7bf9c729Steve Block    zoomsTextOnly = NO;
670bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch
682bde8e466a4451c7319e3a072d118917957d6554Steve Block    interactiveFormValidationEnabled = NO;
692bde8e466a4451c7319e3a072d118917957d6554Steve Block    // The default value should be synchronized with WebCore/page/Settings.cpp.
702bde8e466a4451c7319e3a072d118917957d6554Steve Block    validationMessageTimerMagnification = 50;
712bde8e466a4451c7319e3a072d118917957d6554Steve Block
720bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch#if ENABLE(DASHBOARD_SUPPORT)
730bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch    dashboardBehaviorAllowWheelScrolling = YES;
740bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch#endif
750bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch
76dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block#if !defined(BUILDING_ON_TIGER)
77dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block    shouldCloseWithWindow = objc_collectingEnabled();
78dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block#else
79dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block    shouldCloseWithWindow = NO;
80dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block#endif
810bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch
820bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch    smartInsertDeleteEnabled = ![[NSUserDefaults standardUserDefaults] objectForKey:WebSmartInsertDeleteEnabled]
830bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch        || [[NSUserDefaults standardUserDefaults] boolForKey:WebSmartInsertDeleteEnabled];
840bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch
850bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch
860bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch    pluginDatabaseClientCount++;
870bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch
880bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch    return self;
890bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch}
900bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch
910bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch- (void)dealloc
920bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch{
930bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch    ASSERT(applicationIsTerminating || !page);
940bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch    ASSERT(applicationIsTerminating || !preferences);
950bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch    ASSERT(!insertionPasteboard);
96d0825bca7fe65beaee391d30da42e937db621564Steve Block#if ENABLE(VIDEO)
97231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block    ASSERT(!fullscreenController);
98d0825bca7fe65beaee391d30da42e937db621564Steve Block#endif
990bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch
1000bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch    [applicationNameForUserAgent release];
1010bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch    [backgroundColor release];
1020bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch    [inspector release];
1030bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch    [currentNodeHighlight release];
1040bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch    [hostWindow release];
1050bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch    [policyDelegateForwarder release];
1060bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch    [UIDelegateForwarder release];
1070bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch    [frameLoadDelegateForwarder release];
1080bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch    [editingDelegateForwarder release];
1090bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch    [mediaStyle release];
1100bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch
1110bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch    [super dealloc];
1120bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch}
1130bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch
1140bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch- (void)finalize
1150bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch{
1160bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch    ASSERT_MAIN_THREAD();
1170bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch    ASSERT(!insertionPasteboard);
118d0825bca7fe65beaee391d30da42e937db621564Steve Block#if ENABLE(VIDEO)
119231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block    ASSERT(!fullscreenController);
120d0825bca7fe65beaee391d30da42e937db621564Steve Block#endif
1210bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch
1220bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch    [super finalize];
1230bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch}
1240bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch
1250bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch@end
126