331ff94fdd46929e78f4e8d249e915da83c4cc4b
[WebKit-https.git] / WebKit / Plugins.subproj / WebPluginPackage.m
1 //
2 //  WebPluginPackage.m
3 //  WebKit
4 //
5 //  Created by Chris Blumenberg on Tue Oct 22 2002.
6 //  Copyright (c) 2002 Apple Computer, Inc. All rights reserved.
7 //
8
9 #import <WebKit/WebPluginPackage.h>
10
11 #import <WebKit/WebKitLogging.h>
12 #import <WebKit/WebKitNSStringExtras.h>
13
14 #import <Foundation/NSPrivateDecls.h>
15
16 NSString *WebPlugInBaseURLKey =     @"WebPlugInBaseURLKey";
17 NSString *WebPlugInAttributesKey =  @"WebPlugInAttributesKey";
18 NSString *WebPlugInContainerKey =   @"WebPlugInContainerKey";
19 NSString *WebPlugInModeKey =        @"WebPlugInModeKey";
20
21 /*!
22         @constant WebPlugInContainingElementKey The DOMElement that was used to specify
23         the plug-in.  May be nil.
24 */
25 extern NSString *WebPlugInContainingElementKey;
26
27 @implementation WebPluginPackage
28
29 - initWithPath:(NSString *)pluginPath
30 {
31     [super initWithPath:pluginPath];
32
33     if (bundle == nil) {
34         [self release];
35         return nil;
36     }
37     
38     if (![[pluginPath pathExtension] _webkit_isCaseInsensitiveEqualToString:@"webplugin"]) {
39         UInt32 type = 0;
40         CFBundleGetPackageInfo([bundle _cfBundle], &type, NULL);
41         if (type != FOUR_CHAR_CODE('WBPL')) {
42             [self release];
43             return nil;
44         }
45     }
46
47     if (![self getPluginInfoFromPLists]) {
48         [self release];
49         return nil;
50     }
51
52     return self;
53 }
54
55 - (Class)viewFactory
56 {
57     return [bundle principalClass];
58 }
59
60 - (BOOL)load
61 {
62     if (isLoaded) {
63         return YES;
64     }
65     
66 #if !LOG_DISABLED
67     CFAbsoluteTime start = CFAbsoluteTimeGetCurrent();
68 #endif
69     
70     [bundle principalClass];
71     isLoaded = [bundle isLoaded];
72     if (!isLoaded) {
73         return NO;
74     }
75
76 #if !LOG_DISABLED
77     CFAbsoluteTime duration = CFAbsoluteTimeGetCurrent() - start;
78     LOG(Plugins, "principalClass took %f seconds for: %@", duration, [self name]);
79 #endif
80     return [super load];
81 }
82
83 - (void)unload
84 {
85 }
86
87 - (BOOL)isLoaded
88 {
89     return [bundle isLoaded];
90 }
91
92 @end
93
94 @implementation NSObject (WebScripting)
95
96 + (BOOL)isSelectorExcludedFromWebScript:(SEL)aSelector
97 {
98     return YES;
99 }
100
101 + (BOOL)isKeyExcludedFromWebScript:(const char *)name
102 {
103     return YES;
104 }
105
106 @end
107