18e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project/*
28e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * Copyright (C) 2005, 2007 Apple Inc. All rights reserved.
38e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project *
48e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * Redistribution and use in source and binary forms, with or without
58e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * modification, are permitted provided that the following conditions
68e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * are met:
78e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project *
88e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * 1.  Redistributions of source code must retain the above copyright
98e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project *     notice, this list of conditions and the following disclaimer.
108e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * 2.  Redistributions in binary form must reproduce the above copyright
118e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project *     notice, this list of conditions and the following disclaimer in the
128e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project *     documentation and/or other materials provided with the distribution.
138e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * 3.  Neither the name of Apple Computer, Inc. ("Apple") nor the names of
148e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project *     its contributors may be used to endorse or promote products derived
158e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project *     from this software without specific prior written permission.
168e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project *
178e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * THIS SOFTWARE IS PROVIDED BY APPLE AND ITS CONTRIBUTORS "AS IS" AND ANY
188e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
198e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
208e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * DISCLAIMED. IN NO EVENT SHALL APPLE OR ITS CONTRIBUTORS BE LIABLE FOR ANY
218e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
228e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
238e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
248e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
258e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
268e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
278e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project */
288e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
298e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#if ENABLE(NETSCAPE_PLUGIN_API)
308e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#import <Cocoa/Cocoa.h>
318e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
32635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project#import "WebNetscapePluginPackage.h"
330bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch#import "WebPluginContainerCheck.h"
34dd8bb3de4f353a81954234999f1fea748aee2ea9Ben Murdoch#import <wtf/Forward.h>
35231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block#import <wtf/OwnPtr.h>
36563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark#import <wtf/PassRefPtr.h>
37563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark#import <wtf/RefPtr.h>
38635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project#import <wtf/RetainPtr.h>
398e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
408e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project@class DOMElement;
418e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project@class WebDataSource;
428e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project@class WebFrame;
438e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project@class WebView;
448e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
45dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Blocknamespace WebCore {
46563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark    class HTMLPlugInElement;
47563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark}
48563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark
49231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Blockclass WebHaltablePlugin;
50231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block
51dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block// Also declared in WebCore/WidgetMac.mm
52dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block@interface NSView (Widget)
53dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block- (void)visibleRectDidChange;
54dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block@end
55dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block
56635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project@interface WebBaseNetscapePluginView : NSView
578e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project{
58635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project    RetainPtr<WebNetscapePluginPackage> _pluginPackage;
598e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
608e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    WebFrame *_webFrame;
618e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
62635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project    int _mode;
638e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
640bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch    BOOL _triedAndFailedToCreatePlugin;
65635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project    BOOL _loadManually;
66635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project    BOOL _shouldFireTimers;
67635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project    BOOL _isStarted;
68635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project    BOOL _hasFocus;
69635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project    BOOL _isCompletelyObscured;
70cac0f67c402d107cdb10971b95719e2ff9c7c76bSteve Block    BOOL _isPrivateBrowsingEnabled;
71cac0f67c402d107cdb10971b95719e2ff9c7c76bSteve Block    BOOL _isHalted;
72cac0f67c402d107cdb10971b95719e2ff9c7c76bSteve Block    BOOL _hasBeenHalted;
73f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch    BOOL _snapshotting;
748e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
75563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark    RefPtr<WebCore::HTMLPlugInElement> _element;
76635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project    RetainPtr<NSString> _MIMEType;
77635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project    RetainPtr<NSURL> _baseURL;
78635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project    RetainPtr<NSURL> _sourceURL;
79f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch    RetainPtr<NSImage> _cachedSnapshot;
808e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
81231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block    OwnPtr<WebHaltablePlugin> _haltable;
82231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block
83635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project    NSTrackingRectTag _trackingTag;
848e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project}
858e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
868e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project- (id)initWithFrame:(NSRect)r
878e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project      pluginPackage:(WebNetscapePluginPackage *)thePluginPackage
888e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project                URL:(NSURL *)URL
898e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project            baseURL:(NSURL *)baseURL
908e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project           MIMEType:(NSString *)MIME
918e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project      attributeKeys:(NSArray *)keys
928e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    attributeValues:(NSArray *)values
938e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project       loadManually:(BOOL)loadManually
94563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark            element:(PassRefPtr<WebCore::HTMLPlugInElement>)element;
958e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
96635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project- (WebNetscapePluginPackage *)pluginPackage;
978e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
980bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch- (NSURL *)URLWithCString:(const char *)URLCString;
99635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project- (NSMutableURLRequest *)requestWithURLCString:(const char *)URLCString;
100635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project
101635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project// Subclasses must override these.
102692e5dbf12901edacf14812a6fae25462920af42Steve Block// The "handle" prefix is needed to avoid overriding NSView methods.
103635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project- (void)handleMouseMoved:(NSEvent *)event;
104692e5dbf12901edacf14812a6fae25462920af42Steve Block- (void)handleMouseEntered:(NSEvent *)event;
105692e5dbf12901edacf14812a6fae25462920af42Steve Block- (void)handleMouseExited:(NSEvent *)event;
106635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project- (void)setAttributeKeys:(NSArray *)keys andValues:(NSArray *)values;
107635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project- (void)focusChanged;
1088e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
1098e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project- (WebFrame *)webFrame;
1108e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project- (WebDataSource *)dataSource;
1118e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project- (WebView *)webView;
1128e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project- (NSWindow *)currentWindow;
113563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark- (WebCore::HTMLPlugInElement*)element;
1148e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
115635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project- (void)removeTrackingRect;
116635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project- (void)resetTrackingRect;
1178e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
118635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project- (void)stopTimers;
119635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project- (void)startTimers;
120635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project- (void)restartTimers;
1218e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
122231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block- (void)start;
123635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project- (void)stop;
1248e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
125cac0f67c402d107cdb10971b95719e2ff9c7c76bSteve Block- (void)halt;
126cac0f67c402d107cdb10971b95719e2ff9c7c76bSteve Block- (void)resumeFromHalt;
127cac0f67c402d107cdb10971b95719e2ff9c7c76bSteve Block- (BOOL)isHalted;
128cac0f67c402d107cdb10971b95719e2ff9c7c76bSteve Block- (BOOL)hasBeenHalted;
129cac0f67c402d107cdb10971b95719e2ff9c7c76bSteve Block
130635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project- (void)addWindowObservers;
131635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project- (void)removeWindowObservers;
1328a0914b749bbe7da7768e07a7db5c6d4bb09472bSteve Block- (BOOL)shouldClipOutPlugin;
133dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block- (BOOL)inFlatteningPaint;
134f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch
135dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block- (BOOL)supportsSnapshotting;
136f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch- (void)cacheSnapshot;
137f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch- (void)clearCachedSnapshot;
1380bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch
1390bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch- (BOOL)convertFromX:(double)sourceX andY:(double)sourceY space:(NPCoordinateSpace)sourceSpace
1400bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch                 toX:(double *)destX andY:(double *)destY space:(NPCoordinateSpace)destSpace;
141dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block- (WTF::CString)resolvedURLStringForURL:(const char*)url target:(const char*)target;
1420bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch
1430bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch- (void)invalidatePluginContentRect:(NSRect)rect;
1440bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch
14565f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch- (NSRect)actualVisibleRectInWindow; // takes transforms into account.
14665f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch
147967717af5423377c967781471ee106e2bb4e11c8Ben Murdoch#ifndef BUILDING_ON_TIGER
148967717af5423377c967781471ee106e2bb4e11c8Ben Murdoch- (CALayer *)pluginLayer;
149967717af5423377c967781471ee106e2bb4e11c8Ben Murdoch#endif
150967717af5423377c967781471ee106e2bb4e11c8Ben Murdoch
1518e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project@end
1528e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
1530bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch
1540bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdochnamespace WebKit {
1550bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdochbool getAuthenticationInfo(const char* protocolStr, const char* hostStr, int32_t port, const char* schemeStr, const char* realmStr,
156dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block                           WTF::CString& username, WTF::CString& password);
1570bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch}
1580bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch
1598e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#endif
1608e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
161