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