• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1/*
2 * Copyright (C) 2005 Apple Computer, Inc.  All rights reserved.
3 *
4 * Redistribution and use in source and binary forms, with or without
5 * modification, are permitted provided that the following conditions
6 * are met:
7 *
8 * 1.  Redistributions of source code must retain the above copyright
9 *     notice, this list of conditions and the following disclaimer.
10 * 2.  Redistributions in binary form must reproduce the above copyright
11 *     notice, this list of conditions and the following disclaimer in the
12 *     documentation and/or other materials provided with the distribution.
13 * 3.  Neither the name of Apple Computer, Inc. ("Apple") nor the names of
14 *     its contributors may be used to endorse or promote products derived
15 *     from this software without specific prior written permission.
16 *
17 * THIS SOFTWARE IS PROVIDED BY APPLE AND ITS CONTRIBUTORS "AS IS" AND ANY
18 * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
19 * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
20 * DISCLAIMED. IN NO EVENT SHALL APPLE OR ITS CONTRIBUTORS BE LIABLE FOR ANY
21 * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
22 * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
23 * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
24 * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
25 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
26 * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
27 */
28
29#import <WebKit/WebPluginPackage.h>
30
31#import <WebKit/WebKitLogging.h>
32#import <WebKit/WebKitNSStringExtras.h>
33
34NSString *WebPlugInBaseURLKey =                 @"WebPlugInBaseURLKey";
35NSString *WebPlugInAttributesKey =              @"WebPlugInAttributesKey";
36NSString *WebPlugInContainerKey =               @"WebPlugInContainerKey";
37NSString *WebPlugInModeKey =                    @"WebPlugInModeKey";
38NSString *WebPlugInShouldLoadMainResourceKey =  @"WebPlugInShouldLoadMainResourceKey";
39NSString *WebPlugInContainingElementKey =       @"WebPlugInContainingElementKey";
40
41@implementation WebPluginPackage
42
43- initWithPath:(NSString *)pluginPath
44{
45    if (!(self = [super initWithPath:pluginPath]))
46        return nil;
47
48    if (bundle == nil) {
49        [self release];
50        return nil;
51    }
52
53    if (![[pluginPath pathExtension] _webkit_isCaseInsensitiveEqualToString:@"webplugin"]) {
54        UInt32 type = 0;
55        CFBundleGetPackageInfo(cfBundle, &type, NULL);
56        if (type != FOUR_CHAR_CODE('WBPL')) {
57            [self release];
58            return nil;
59        }
60    }
61
62    NSFileHandle *executableFile = [NSFileHandle fileHandleForReadingAtPath:[bundle executablePath]];
63    NSData *data = [executableFile readDataOfLength:512];
64    [executableFile closeFile];
65    if (![self isNativeLibraryData:data]) {
66        [self release];
67        return nil;
68    }
69
70    if (![self getPluginInfoFromPLists]) {
71        [self release];
72        return nil;
73    }
74
75    return self;
76}
77
78- (Class)viewFactory
79{
80    return [bundle principalClass];
81}
82
83- (BOOL)load
84{
85#if !LOG_DISABLED
86    CFAbsoluteTime start = CFAbsoluteTimeGetCurrent();
87#endif
88
89    // Load the bundle
90    if (![bundle isLoaded]) {
91        if (![bundle load])
92            return NO;
93    }
94
95#if !LOG_DISABLED
96    CFAbsoluteTime duration = CFAbsoluteTimeGetCurrent() - start;
97    LOG(Plugins, "principalClass took %f seconds for: %@", duration, [self name]);
98#endif
99    return [super load];
100}
101
102@end
103
104@implementation NSObject (WebScripting)
105
106+ (BOOL)isSelectorExcludedFromWebScript:(SEL)aSelector
107{
108    return YES;
109}
110
111+ (BOOL)isKeyExcludedFromWebScript:(const char *)name
112{
113    return YES;
114}
115
116@end
117