⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 webdatabasemanager.mm

📁 linux下开源浏览器WebKit的源码,市面上的很多商用浏览器都是移植自WebKit
💻 MM
字号:
/* * Copyright (C) 2007, 2008 Apple Inc. All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1.  Redistributions of source code must retain the above copyright *     notice, this list of conditions and the following disclaimer. * 2.  Redistributions in binary form must reproduce the above copyright *     notice, this list of conditions and the following disclaimer in the *     documentation and/or other materials provided with the distribution. * 3.  Neither the name of Apple Computer, Inc. ("Apple") nor the names of *     its contributors may be used to endorse or promote products derived *     from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY APPLE AND ITS CONTRIBUTORS "AS IS" AND ANY * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE * DISCLAIMED. IN NO EVENT SHALL APPLE OR ITS CONTRIBUTORS BE LIABLE FOR ANY * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */#import "WebDatabaseManagerPrivate.h"#import "WebDatabaseManagerInternal.h"#import "WebDatabaseTrackerClient.h"#import "WebSecurityOriginInternal.h"#import <WebCore/DatabaseTracker.h>#import <WebCore/SecurityOrigin.h>using namespace WebCore;NSString *WebDatabaseDirectoryDefaultsKey = @"WebDatabaseDirectory";NSString *WebDatabaseDisplayNameKey = @"WebDatabaseDisplayNameKey";NSString *WebDatabaseExpectedSizeKey = @"WebDatabaseExpectedSizeKey";NSString *WebDatabaseUsageKey = @"WebDatabaseUsageKey";NSString *WebDatabaseDidModifyOriginNotification = @"WebDatabaseDidModifyOriginNotification";NSString *WebDatabaseDidModifyDatabaseNotification = @"WebDatabaseDidModifyDatabaseNotification";NSString *WebDatabaseIdentifierKey = @"WebDatabaseIdentifierKey";@implementation WebDatabaseManager+ (WebDatabaseManager *) sharedWebDatabaseManager{    static WebDatabaseManager *sharedManager = [[WebDatabaseManager alloc] init];    return sharedManager;}- (NSArray *)origins{    Vector<RefPtr<SecurityOrigin> > coreOrigins;    DatabaseTracker::tracker().origins(coreOrigins);    NSMutableArray *webOrigins = [[NSMutableArray alloc] initWithCapacity:coreOrigins.size()];    for (unsigned i = 0; i < coreOrigins.size(); ++i) {        WebSecurityOrigin *webOrigin = [[WebSecurityOrigin alloc] _initWithWebCoreSecurityOrigin:coreOrigins[i].get()];        [webOrigins addObject:webOrigin];        [webOrigin release];    }    return [webOrigins autorelease];}- (NSArray *)databasesWithOrigin:(WebSecurityOrigin *)origin{    Vector<String> nameVector;    if (!DatabaseTracker::tracker().databaseNamesForOrigin([origin _core], nameVector))        return nil;        NSMutableArray *names = [[NSMutableArray alloc] initWithCapacity:nameVector.size()];    for (unsigned i = 0; i < nameVector.size(); ++i)        [names addObject:(NSString *)nameVector[i]];    return [names autorelease];}- (NSDictionary *)detailsForDatabase:(NSString *)databaseIdentifier withOrigin:(WebSecurityOrigin *)origin{    static id keys[3] = {WebDatabaseDisplayNameKey, WebDatabaseExpectedSizeKey, WebDatabaseUsageKey};        DatabaseDetails details = DatabaseTracker::tracker().detailsForNameAndOrigin(databaseIdentifier, [origin _core]);    if (details.name().isNull())        return nil;            id objects[3];    objects[0] = details.displayName().isEmpty() ? databaseIdentifier : (NSString *)details.displayName();    objects[1] = [NSNumber numberWithUnsignedLongLong:details.expectedUsage()];    objects[2] = [NSNumber numberWithUnsignedLongLong:details.currentUsage()];        return [[[NSDictionary alloc] initWithObjects:objects forKeys:keys count:3] autorelease];}- (void)deleteAllDatabases{    DatabaseTracker::tracker().deleteAllDatabases();}- (void)deleteOrigin:(WebSecurityOrigin *)origin{    DatabaseTracker::tracker().deleteOrigin([origin _core]);}- (void)deleteDatabase:(NSString *)databaseIdentifier withOrigin:(WebSecurityOrigin *)origin{    DatabaseTracker::tracker().deleteDatabase([origin _core], databaseIdentifier);}@endvoid WebKitInitializeDatabasesIfNecessary(){    static BOOL initialized = NO;    if (initialized)        return;    // Set the database root path in WebCore    NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];    NSString *databasesDirectory = [defaults objectForKey:WebDatabaseDirectoryDefaultsKey];    if (!databasesDirectory || ![databasesDirectory isKindOfClass:[NSString class]])        databasesDirectory = @"~/Library/WebKit/Databases";    DatabaseTracker::tracker().setDatabaseDirectoryPath([databasesDirectory stringByStandardizingPath]);    // Set the DatabaseTrackerClient    DatabaseTracker::tracker().setClient(WebDatabaseTrackerClient::sharedWebDatabaseTrackerClient());        initialized = YES;}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -