Remove NPAPI Examples
authorachristensen@apple.com <achristensen@apple.com@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Mon, 26 Aug 2019 16:48:21 +0000 (16:48 +0000)
committerachristensen@apple.com <achristensen@apple.com@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Mon, 26 Aug 2019 16:48:21 +0000 (16:48 +0000)
https://bugs.webkit.org/show_bug.cgi?id=201089

Reviewed by Alexey Proskuryakov.

We are only supporting NPAPI for flash until its upcoming end of life.
We don't need to encourage the creation of new NPAPI plugins by having examples.

* Examples: Removed.

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@249098 268f45cc-cd09-0410-ab3c-d52691b4dbfc

42 files changed:
ChangeLog
Examples/ChangeLog [deleted file]
Examples/NetscapeCocoaPlugin/English.lproj/InfoPlist.strings [deleted file]
Examples/NetscapeCocoaPlugin/Info.plist [deleted file]
Examples/NetscapeCocoaPlugin/MenuHandler.h [deleted file]
Examples/NetscapeCocoaPlugin/MenuHandler.m [deleted file]
Examples/NetscapeCocoaPlugin/NetscapeCocoaPlugin.xcodeproj/project.pbxproj [deleted file]
Examples/NetscapeCocoaPlugin/main.m [deleted file]
Examples/NetscapeCocoaPlugin/test.html [deleted file]
Examples/NetscapeCoreAnimationMoviePlugin/English.lproj/InfoPlist.strings [deleted file]
Examples/NetscapeCoreAnimationMoviePlugin/Info.plist [deleted file]
Examples/NetscapeCoreAnimationMoviePlugin/MovieControllerLayer.h [deleted file]
Examples/NetscapeCoreAnimationMoviePlugin/MovieControllerLayer.m [deleted file]
Examples/NetscapeCoreAnimationMoviePlugin/NetscapeCoreAnimationMoviePlugin.xcodeproj/project.pbxproj [deleted file]
Examples/NetscapeCoreAnimationMoviePlugin/Pause.tiff [deleted file]
Examples/NetscapeCoreAnimationMoviePlugin/Play.tiff [deleted file]
Examples/NetscapeCoreAnimationMoviePlugin/SliderTrackCenter.tiff [deleted file]
Examples/NetscapeCoreAnimationMoviePlugin/SliderTrackLeft.tiff [deleted file]
Examples/NetscapeCoreAnimationMoviePlugin/SliderTrackRight.tiff [deleted file]
Examples/NetscapeCoreAnimationMoviePlugin/Thumb.tiff [deleted file]
Examples/NetscapeCoreAnimationMoviePlugin/main.m [deleted file]
Examples/NetscapeCoreAnimationMoviePlugin/test.html [deleted file]
Examples/NetscapeCoreAnimationPlugin/Composition.qtz [deleted file]
Examples/NetscapeCoreAnimationPlugin/English.lproj/InfoPlist.strings [deleted file]
Examples/NetscapeCoreAnimationPlugin/Info.plist [deleted file]
Examples/NetscapeCoreAnimationPlugin/NetscapeCoreAnimationPlugin.xcodeproj/project.pbxproj [deleted file]
Examples/NetscapeCoreAnimationPlugin/main.m [deleted file]
Examples/NetscapeCoreAnimationPlugin/test.html [deleted file]
Examples/NetscapeInputMethodPlugin/English.lproj/InfoPlist.strings [deleted file]
Examples/NetscapeInputMethodPlugin/Info.plist [deleted file]
Examples/NetscapeInputMethodPlugin/NetscapeInputMethodPlugin.xcodeproj/project.pbxproj [deleted file]
Examples/NetscapeInputMethodPlugin/main.m [deleted file]
Examples/NetscapeInputMethodPlugin/test.html [deleted file]
Examples/NetscapeMuteAPIPlugin/AudioPlayer.h [deleted file]
Examples/NetscapeMuteAPIPlugin/AudioPlayer.mm [deleted file]
Examples/NetscapeMuteAPIPlugin/English.lproj/InfoPlist.strings [deleted file]
Examples/NetscapeMuteAPIPlugin/Info.plist [deleted file]
Examples/NetscapeMuteAPIPlugin/MenuHandler.h [deleted file]
Examples/NetscapeMuteAPIPlugin/MenuHandler.m [deleted file]
Examples/NetscapeMuteAPIPlugin/NetscapeMuteAPIPlugin.xcodeproj/project.pbxproj [deleted file]
Examples/NetscapeMuteAPIPlugin/main.m [deleted file]
Examples/NetscapeMuteAPIPlugin/test.html [deleted file]

index 484faa1..5f37180 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,15 @@
+2019-08-23  Alex Christensen  <achristensen@webkit.org>
+
+        Remove NPAPI Examples
+        https://bugs.webkit.org/show_bug.cgi?id=201089
+
+        Reviewed by Alexey Proskuryakov.
+
+        We are only supporting NPAPI for flash until its upcoming end of life.
+        We don't need to encourage the creation of new NPAPI plugins by having examples.
+
+        * Examples: Removed.
+
 2019-08-21  Adrian Perez de Castro  <aperez@igalia.com>
 
         [GTK][WPE] Gtk-Doc fails with build options which need cooperation between CFLAGS and LDFLAGS
diff --git a/Examples/ChangeLog b/Examples/ChangeLog
deleted file mode 100644 (file)
index c7375e7..0000000
+++ /dev/null
@@ -1,476 +0,0 @@
-2019-08-02  Keith Rollin  <krollin@apple.com>
-
-        Consistently use Obj-C boolean literals
-        https://bugs.webkit.org/show_bug.cgi?id=200405
-        <rdar://problem/53880043>
-
-        Reviewed by Simon Fraser, Joseph Pecoraro.
-
-        There are places where we use equivalent but different expressions for
-        Obj-C boolean objects. For example, we use both [NSNumber
-        numberWithBool:YES] and @YES. There are places where both are used in
-        the same function, such as -[WebPreferences initialize]. The boolean
-        literal is in greater use and is more succinct, so standardize on
-        that. Also, change @(YES/NO) to @YES/NO.
-
-        * NetscapeCoreAnimationMoviePlugin/main.m:
-        (NPP_GetValue):
-
-2014-12-03  Ada Chan  <adachan@apple.com>
-
-        Add a sample plugin to demonstrate the mute plugin API.
-        https://bugs.webkit.org/show_bug.cgi?id=139231
-
-        Reviewed by Anders Carlsson.
-
-        * NetscapeMuteAPIPlugin/AudioPlayer.h: Added.
-        * NetscapeMuteAPIPlugin/AudioPlayer.mm: Added.
-        (-[AudioPlayer initWithURL:]):
-        (-[AudioPlayer dealloc]):
-        (-[AudioPlayer isReadyToPlay]):
-        (-[AudioPlayer isPlaying]):
-        (-[AudioPlayer setPlaying:]):
-        (-[AudioPlayer isMuted]):
-        (-[AudioPlayer setMuted:]):
-        (-[AudioPlayer observeValueForKeyPath:ofObject:change:context:]):
-        * NetscapeMuteAPIPlugin/English.lproj/InfoPlist.strings: Added.
-        * NetscapeMuteAPIPlugin/Info.plist: Added.
-        * NetscapeMuteAPIPlugin/MenuHandler.h: Added.
-        * NetscapeMuteAPIPlugin/MenuHandler.m: Added.
-        (-[MenuHandler _play:]):
-        (-[MenuHandler _pause:]):
-        (-[MenuHandler validateUserInterfaceItem:]):
-        (-[MenuHandler initWithAudioPlayer:]):
-        (-[MenuHandler dealloc]):
-        (-[MenuHandler menu]):
-        * NetscapeMuteAPIPlugin/NetscapeMuteAPIPlugin.xcodeproj/project.pbxproj: Added.
-        * NetscapeMuteAPIPlugin/main.m: Added.
-        (-[PluginObject initWithNPP:audioURL:]):
-        (-[PluginObject dealloc]):
-        (-[PluginObject menuHandler]):
-        (-[PluginObject isPlayingAudio]):
-        (-[PluginObject isMuted]):
-        (-[PluginObject setMuted:]):
-        (-[PluginObject readyStateDidChangeForAudioPlayer:]):
-        (-[PluginObject mutedStateDidChangeForAudioPlayer:]):
-        (-[PluginObject playStateDidChangeForAudioPlayer:]):
-        (-[PluginObject _invalidateDisplayString]):
-        (NP_Initialize):
-        (NP_GetEntryPoints):
-        (NP_Shutdown):
-        (NPP_New):
-        (NPP_Destroy):
-        (NPP_SetWindow):
-        (NPP_NewStream):
-        (NPP_DestroyStream):
-        (NPP_WriteReady):
-        (NPP_Write):
-        (NPP_StreamAsFile):
-        (NPP_Print):
-        (handleDraw):
-        (invalidatePlugin):
-        (handleMouseEvent):
-        (NPP_HandleEvent):
-        (NPP_URLNotify):
-        (NPP_GetValue):
-        (NPP_SetValue):
-        * NetscapeMuteAPIPlugin/test.html: Added.
-
-2014-03-14  Maciej Stachowiak  <mjs@apple.com>
-
-        Replace "Apple Computer, Inc." with "Apple Inc." in copyright headers
-        https://bugs.webkit.org/show_bug.cgi?id=130276
-        <rdar://problem/16266927>
-
-        Reviewed by Simon Fraser.
-
-        * NetscapeCocoaPlugin/MenuHandler.h:
-        * NetscapeCocoaPlugin/MenuHandler.m:
-        * NetscapeCocoaPlugin/main.m:
-        * NetscapeCoreAnimationPlugin/main.m:
-        * NetscapeInputMethodPlugin/main.m:
-
-2011-03-17  Jeff Miller  <jeffm@apple.com>
-
-        Use a consistent set of file patterns in the svn:ignore property for all .xcodeproj directories, specifically:
-        
-        *.mode*
-        *.pbxuser
-        *.perspective*
-        project.xcworkspace
-        xcuserdata
-
-        * NetscapeCocoaPlugin/NetscapeCocoaPlugin.xcodeproj: Modified property svn:ignore.
-        * NetscapeCoreAnimationMoviePlugin/NetscapeCoreAnimationMoviePlugin.xcodeproj: Modified property svn:ignore.
-        * NetscapeCoreAnimationPlugin/NetscapeCoreAnimationPlugin.xcodeproj: Modified property svn:ignore.
-        * NetscapeInputMethodPlugin/NetscapeInputMethodPlugin.xcodeproj: Modified property svn:ignore.
-
-2011-01-17  Dan Bernstein  <mitz@apple.com>
-
-        Rubber-stamped by Mark Rowe.
-
-        Update xcodeproj svn:ignore to include xcuserdata.
-
-        * NetscapeCocoaPlugin/NetscapeCocoaPlugin.xcodeproj: Modified property svn:ignore.
-        * NetscapeCoreAnimationMoviePlugin/NetscapeCoreAnimationMoviePlugin.xcodeproj: Modified property svn:ignore.
-        * NetscapeCoreAnimationPlugin/NetscapeCoreAnimationPlugin.xcodeproj: Modified property svn:ignore.
-        * NetscapeInputMethodPlugin/NetscapeInputMethodPlugin.xcodeproj: Modified property svn:ignore.
-
-2010-11-03  Darin Adler  <darin@apple.com>
-
-        Updated Xcode projects by opening them with Xcode 3.2.4.
-        Updated svn:ignore for Xcode projects.
-
-        * NetscapeCocoaPlugin/NetscapeCocoaPlugin.xcodeproj: Added property svn:ignore.
-        * NetscapeCocoaPlugin/NetscapeCocoaPlugin.xcodeproj/project.pbxproj: Updated with Xcode 3.2.4.
-        * NetscapeCoreAnimationMoviePlugin/NetscapeCoreAnimationMoviePlugin.xcodeproj: Added property svn:ignore.
-        * NetscapeCoreAnimationMoviePlugin/NetscapeCoreAnimationMoviePlugin.xcodeproj/project.pbxproj:
-        * NetscapeCoreAnimationPlugin/NetscapeCoreAnimationPlugin.xcodeproj: Added property svn:ignore.
-        * NetscapeCoreAnimationPlugin/NetscapeCoreAnimationPlugin.xcodeproj/project.pbxproj:
-        * NetscapeInputMethodPlugin/NetscapeInputMethodPlugin.xcodeproj: Added property svn:ignore.
-        * NetscapeInputMethodPlugin/NetscapeInputMethodPlugin.xcodeproj/project.pbxproj: Updated with Xcode 3.2.4.
-
-2010-06-16  Anders Carlsson  <andersca@apple.com>
-
-        Fix build.
-
-        * NetscapeCoreAnimationMoviePlugin/main.m:
-        (NPP_New):
-        (NPP_WriteReady):
-        (NPP_Write):
-        (NPP_HandleEvent):
-
-2010-06-10  Anders Carlsson  <andersca@apple.com>
-
-        Fix build.
-
-        * NetscapeCocoaPlugin/NetscapeCocoaPlugin.xcodeproj/project.pbxproj:
-        * NetscapeCocoaPlugin/main.m:
-        (NPP_New):
-        (NPP_NewStream):
-        (NPP_WriteReady):
-        (NPP_Write):
-        (NPP_HandleEvent):
-
-2010-03-02  Anders Carlsson  <andersca@apple.com>
-
-        Reviewed by Kevin Decker.
-
-        NPWindow is now null in the Cocoa event model.
-
-        * NetscapeInputMethodPlugin/main.m:
-        (handleDraw):
-        (NPP_HandleEvent):
-
-2009-07-10  Adam Roben  <aroben@apple.com>
-
-        Sort all our Xcode projects
-
-        Accomplished using sort-Xcode-project-file.
-
-        Requested by Dave Kilzer.
-
-        * NetscapeCocoaPlugin/NetscapeCocoaPlugin.xcodeproj/project.pbxproj:
-        * NetscapeCoreAnimationMoviePlugin/NetscapeCoreAnimationMoviePlugin.xcodeproj/project.pbxproj:
-        * NetscapeCoreAnimationPlugin/NetscapeCoreAnimationPlugin.xcodeproj/project.pbxproj:
-
-2009-06-15  Anders Carlsson  <andersca@apple.com>
-
-        Reviewed by Kevin Decker.
-
-        Add Core Animation movie plug-in example.
-        
-        * NetscapeCoreAnimationMoviePlugin: Added.
-        * NetscapeCoreAnimationMoviePlugin/English.lproj: Added.
-        * NetscapeCoreAnimationMoviePlugin/English.lproj/InfoPlist.strings: Added.
-        * NetscapeCoreAnimationMoviePlugin/Info.plist: Added.
-        * NetscapeCoreAnimationMoviePlugin/MovieControllerLayer.h: Added.
-        * NetscapeCoreAnimationMoviePlugin/MovieControllerLayer.m: Added.
-        (createImageNamed):
-        (-[MovieControllerLayer init]):
-        (-[MovieControllerLayer dealloc]):
-        (-[MovieControllerLayer _playPauseButtonRect]):
-        (-[MovieControllerLayer _sliderRect]):
-        (-[MovieControllerLayer _sliderThumbRect]):
-        (-[MovieControllerLayer _innerSliderRect]):
-        (-[MovieControllerLayer _drawPlayPauseButtonInContext:]):
-        (-[MovieControllerLayer _drawSliderInContext:]):
-        (-[MovieControllerLayer drawInContext:]):
-        (-[MovieControllerLayer _currentTime]):
-        (-[MovieControllerLayer _duration]):
-        (-[MovieControllerLayer _isPlaying]):
-        (-[MovieControllerLayer _updateTime:]):
-        (-[MovieControllerLayer _rateDidChange:]):
-        (-[MovieControllerLayer _timeDidChange:]):
-        (-[MovieControllerLayer actionForKey:]):
-        (-[MovieControllerLayer setMovie:]):
-        (-[MovieControllerLayer _setNewTimeForThumbCenterX:]):
-        (-[MovieControllerLayer handleMouseDown:]):
-        (-[MovieControllerLayer handleMouseUp:]):
-        (-[MovieControllerLayer handleMouseDragged:]):
-        * NetscapeCoreAnimationMoviePlugin/NetscapeCoreAnimationMoviePlugin.xcodeproj: Added.
-        * NetscapeCoreAnimationMoviePlugin/NetscapeCoreAnimationMoviePlugin.xcodeproj/project.pbxproj: Added.
-        * NetscapeCoreAnimationMoviePlugin/Pause.tiff: Added.
-        * NetscapeCoreAnimationMoviePlugin/Play.tiff: Added.
-        * NetscapeCoreAnimationMoviePlugin/SliderTrackCenter.tiff: Added.
-        * NetscapeCoreAnimationMoviePlugin/SliderTrackLeft.tiff: Added.
-        * NetscapeCoreAnimationMoviePlugin/SliderTrackRight.tiff: Added.
-        * NetscapeCoreAnimationMoviePlugin/Thumb.tiff: Added.
-        * NetscapeCoreAnimationMoviePlugin/main.m: Added.
-        (NP_Initialize):
-        (NP_GetEntryPoints):
-        (NP_Shutdown):
-        (NPP_New):
-        (NPP_Destroy):
-        (NPP_SetWindow):
-        (NPP_NewStream):
-        (NPP_DestroyStream):
-        (NPP_WriteReady):
-        (NPP_Write):
-        (NPP_StreamAsFile):
-        (NPP_Print):
-        (handleMouseDown):
-        (togglePlayPause):
-        (handleMouseUp):
-        (handleMouseDragged):
-        (handleMouseEntered):
-        (handleMouseExited):
-        (handleKeyDown):
-        (handleScrollEvent):
-        (NPP_HandleEvent):
-        (NPP_URLNotify):
-        (NPP_GetValue):
-        (NPP_SetValue):
-        * NetscapeCoreAnimationMoviePlugin/test.html: Added.
-
-2009-04-27  Anders Carlsson  <andersca@apple.com>
-
-        Reviewed by Adam Roben.
-
-        Update the example plug-in for new changes to the Cocoa event model.
-        
-        * NetscapeCocoaPlugin/main.m:
-        (handleDraw):
-        (handleMouseEvent):
-        (NPP_HandleEvent):
-
-2009-03-13  Anders Carlsson  <andersca@apple.com>
-
-        Reviewed by Kevin Decker.
-
-        Update to match new API.
-        
-        * NetscapeInputMethodPlugin/main.m:
-        (NPP_New):
-        (NPP_Destroy):
-        (NPP_SetWindow):
-        (handleDraw):
-        (invalidatePlugin):
-        (handleFocusChanged):
-        (handleMouseMoved):
-        (handleMouseDown):
-        (handleTextFieldKeyDown):
-        (handleTextInput):
-        (NPP_HandleEvent):
-        (NPP_URLNotify):
-        (NPP_GetValue):
-        (NPP_SetValue):
-
-2008-12-12  Anders Carlsson  <andersca@apple.com>
-
-        Reviewed by Darin Adler.
-
-        There's no need to hold on to the QCComposition. Also, toggle between a gold and silver compass 
-        when a mouse button is pressed.
-        
-        * NetscapeCoreAnimationPlugin/Composition.qtz:
-        * NetscapeCoreAnimationPlugin/main.m:
-        (NPP_Destroy):
-        (handleMouseClick):
-        (NPP_GetValue):
-
-2008-12-12  Anders Carlsson  <andersca@apple.com>
-
-        Revert some accidentally committed changes.
-        
-        * NetscapeCocoaPlugin/NetscapeCocoaPlugin.xcodeproj/project.pbxproj:
-        * NetscapeCocoaPlugin/main.m:
-        (handleDraw):
-        (handleMouseEvent):
-        (NPP_HandleEvent):
-
-2008-12-12  Anders Carlsson  <andersca@apple.com>
-
-        Reviewed by Kevin Decker.
-
-        Add a sample Core Animation NPAPI plug-in.
-        
-        * NetscapeCocoaPlugin/NetscapeCocoaPlugin.xcodeproj/project.pbxproj:
-        * NetscapeCocoaPlugin/main.m:
-        (handleDraw):
-        (handleMouseEvent):
-        (NPP_HandleEvent):
-        * NetscapeCoreAnimationPlugin: Added.
-        * NetscapeCoreAnimationPlugin/Composition.qtz: Added.
-        * NetscapeCoreAnimationPlugin/English.lproj: Added.
-        * NetscapeCoreAnimationPlugin/English.lproj/InfoPlist.strings: Added.
-        * NetscapeCoreAnimationPlugin/Info.plist: Added.
-        * NetscapeCoreAnimationPlugin/NetscapeCoreAnimationPlugin.xcodeproj: Added.
-        * NetscapeCoreAnimationPlugin/NetscapeCoreAnimationPlugin.xcodeproj/project.pbxproj: Added.
-        * NetscapeCoreAnimationPlugin/main.m: Added.
-        (NP_Initialize):
-        (NP_GetEntryPoints):
-        (NP_Shutdown):
-        (NPP_New):
-        (NPP_Destroy):
-        (NPP_SetWindow):
-        (NPP_NewStream):
-        (NPP_DestroyStream):
-        (NPP_WriteReady):
-        (NPP_Write):
-        (NPP_StreamAsFile):
-        (NPP_Print):
-        (handleMouseClick):
-        (NPP_HandleEvent):
-        (NPP_URLNotify):
-        (NPP_GetValue):
-        (NPP_SetValue):
-        * NetscapeCoreAnimationPlugin/test.html: Added.
-
-2008-12-08  David Kilzer  <ddkilzer@apple.com>
-
-        Bug 22555: Sort "children" sections in Xcode project files
-
-        <https://bugs.webkit.org/show_bug.cgi?id=22555>
-
-        Reviewed by Eric Seidel.
-
-        * NetscapeCocoaPlugin/NetscapeCocoaPlugin.xcodeproj/project.pbxproj: Sorted.
-
-2008-08-20  Josh Aas  <joshmoz@gmail.com>
-
-        Reviewed and landed by Anders.
-
-        <rdar://problem/6163636> 
-        rename NPCocoaEvent's "event" struct to "data" (20446)
-
-        * NetscapeCocoaPlugin/main.m:
-        (handleMouseEvent):
-        (handleKeyboardEvent):
-        (NPP_HandleEvent):
-
-2008-05-22  Josh Aas  <joshmoz@gmail.com>
-
-        Reviewed by Anders.
-
-        Use correct enum.
-        
-        * NetscapeCocoaPlugin/main.m:
-        (NPP_New):
-        * NetscapeInputMethodPlugin/main.m:
-        (NPP_New):
-
-2008-05-12  Anders Carlsson  <andersca@apple.com>
-
-        Reviewed by Alexey.
-
-        Add input method test plug-in.
-        
-        * NetscapeInputMethodPlugin: Added.
-        * NetscapeInputMethodPlugin/English.lproj: Added.
-        * NetscapeInputMethodPlugin/English.lproj/InfoPlist.strings: Added.
-        * NetscapeInputMethodPlugin/Info.plist: Added.
-        * NetscapeInputMethodPlugin/NetscapeInputMethodPlugin.xcodeproj: Added.
-        * NetscapeInputMethodPlugin/NetscapeInputMethodPlugin.xcodeproj/project.pbxproj: Added.
-        * NetscapeInputMethodPlugin/main.m: Added.
-        (NP_Initialize):
-        (NP_GetEntryPoints):
-        (NP_Shutdown):
-        (NPP_New):
-        (NPP_Destroy):
-        (NPP_SetWindow):
-        (NPP_NewStream):
-        (NPP_DestroyStream):
-        (NPP_WriteReady):
-        (NPP_Write):
-        (NPP_StreamAsFile):
-        (NPP_Print):
-        (handleDraw):
-        (invalidatePlugin):
-        (handleFocusChanged):
-        (handleMouseMoved):
-        (handleMouseDown):
-        (NPP_HandleEvent):
-        (NPP_URLNotify):
-        (selectionRange):
-        (NPP_InsertText):
-        (NPP_DoCommandBySelector):
-        (markedTextAttributes):
-        (NPP_SetMarkedText):
-        (NPP_UnmarkText):
-        (NPP_HasMarkedText):
-        (NPP_AttributedSubstringFromRange):
-        (NPP_MarkedRange):
-        (NPP_SelectedRange):
-        (NPP_FirstRectForCharacterRange):
-        (pluginTextInputFuncs):
-        (NPP_GetValue):
-        (NPP_SetValue):
-        * NetscapeInputMethodPlugin/test.html: Added.
-
-2008-05-06  Anders Carlsson  <andersca@apple.com>
-
-        Reviewed by Mitz.
-
-        Add NPN_PopUpContextMenu example.
-        
-        * NetscapeCocoaPlugin/MenuHandler.h: Added.
-        * NetscapeCocoaPlugin/MenuHandler.m: Added.
-        (-[MenuHandler _openURL:]):
-        (-[MenuHandler _disabledItem:]):
-        (-[MenuHandler validateUserInterfaceItem:]):
-        (-[MenuHandler initWithBrowserFuncs:instance:]):
-        (-[MenuHandler dealloc]):
-        (-[MenuHandler menu]):
-        * NetscapeCocoaPlugin/NetscapeCocoaPlugin.xcodeproj/project.pbxproj:
-        * NetscapeCocoaPlugin/main.m:
-        (NPP_Destroy):
-        (handleMouseEvent):
-
-2008-05-06  Anders Carlsson  <andersca@apple.com>
-
-        Reviewed by Jon, Tim and Mark.
-
-        Add a sample NPAPI plugin that uses the Cocoa event model.
-
-        * .: Added.
-        * ChangeLog: Added.
-        * NetscapeCocoaPlugin: Added.
-        * NetscapeCocoaPlugin/English.lproj: Added.
-        * NetscapeCocoaPlugin/English.lproj/InfoPlist.strings: Added.
-        * NetscapeCocoaPlugin/Info.plist: Added.
-        * NetscapeCocoaPlugin/NetscapeCocoaPlugin.xcodeproj: Added.
-        * NetscapeCocoaPlugin/NetscapeCocoaPlugin.xcodeproj/project.pbxproj: Added.
-        * NetscapeCocoaPlugin/main.m: Added.
-        (NP_Initialize):
-        (NP_GetEntryPoints):
-        (NP_Shutdown):
-        (NPP_New):
-        (NPP_Destroy):
-        (NPP_SetWindow):
-        (NPP_NewStream):
-        (NPP_DestroyStream):
-        (NPP_WriteReady):
-        (NPP_Write):
-        (NPP_StreamAsFile):
-        (NPP_Print):
-        (handleDraw):
-        (eventType):
-        (invalidatePlugin):
-        (handleMouseEvent):
-        (handleKeyboardEvent):
-        (NPP_HandleEvent):
-        (NPP_URLNotify):
-        (NPP_GetValue):
-        (NPP_SetValue):
-        * NetscapeCocoaPlugin/test.html: Added.
diff --git a/Examples/NetscapeCocoaPlugin/English.lproj/InfoPlist.strings b/Examples/NetscapeCocoaPlugin/English.lproj/InfoPlist.strings
deleted file mode 100644 (file)
index 5e45963..0000000
Binary files a/Examples/NetscapeCocoaPlugin/English.lproj/InfoPlist.strings and /dev/null differ
diff --git a/Examples/NetscapeCocoaPlugin/Info.plist b/Examples/NetscapeCocoaPlugin/Info.plist
deleted file mode 100644 (file)
index 47ae1a5..0000000
+++ /dev/null
@@ -1,36 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
-<plist version="1.0">
-<dict>
-       <key>CFBundleDevelopmentRegion</key>
-       <string>English</string>
-       <key>CFBundleExecutable</key>
-       <string>NetscapeCocoaPlugin</string>
-       <key>CFBundleIconFile</key>
-       <string></string>
-       <key>CFBundleIdentifier</key>
-       <string>com.apple.netscapecocoaplugin</string>
-       <key>CFBundleInfoDictionaryVersion</key>
-       <string>6.0</string>
-       <key>CFBundlePackageType</key>
-       <string>BRPL</string>
-       <key>CFBundleShortVersionString</key>
-       <string>1.0</string>
-       <key>CFBundleSignature</key>
-       <string>????</string>
-       <key>CFBundleVersion</key>
-       <string>1.0</string>
-       <key>WebPluginDescription</key>
-       <string>Simple Netscape plug-in that draws using CoreGraphics and handles events using the Cocoa event model</string>
-       <key>WebPluginMIMETypes</key>
-       <dict>
-               <key>test/x-netscape-cocoa-plugin</key>
-               <dict>
-                       <key>WebPluginTypeDescription</key>
-                       <string>Netscape Cocoa Plug-in</string>
-               </dict>
-       </dict>
-       <key>WebPluginName</key>
-       <string>Netscape Cocoa Plug-in</string>
-</dict>
-</plist>
diff --git a/Examples/NetscapeCocoaPlugin/MenuHandler.h b/Examples/NetscapeCocoaPlugin/MenuHandler.h
deleted file mode 100644 (file)
index 7f4039a..0000000
+++ /dev/null
@@ -1,47 +0,0 @@
-/*
- IMPORTANT:  This Apple software is supplied to you by Apple Inc. ("Apple") in
- consideration of your agreement to the following terms, and your use, installation, 
- modification or redistribution of this Apple software constitutes acceptance of these 
- terms.  If you do not agree with these terms, please do not use, install, modify or 
- redistribute this Apple software.
- In consideration of your agreement to abide by the following terms, and subject to these 
- terms, Apple grants you a personal, non-exclusive license, under Apple’s copyrights in 
- this original Apple software (the "Apple Software"), to use, reproduce, modify and 
- redistribute the Apple Software, with or without modifications, in source and/or binary 
- forms; provided that if you redistribute the Apple Software in its entirety and without 
- modifications, you must retain this notice and the following text and disclaimers in all 
- such redistributions of the Apple Software.  Neither the name, trademarks, service marks 
- or logos of Apple Inc. may be used to endorse or promote products derived from 
- the Apple Software without specific prior written permission from Apple. Except as expressly
- stated in this notice, no other rights or licenses, express or implied, are granted by Apple
- herein, including but not limited to any patent rights that may be infringed by your 
- derivative works or by other works in which the Apple Software may be incorporated.
- The Apple Software is provided by Apple on an "AS IS" basis.  APPLE MAKES NO WARRANTIES, 
- EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION THE IMPLIED WARRANTIES OF NON-INFRINGEMENT, 
- MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE, REGARDING THE APPLE SOFTWARE OR ITS 
- USE AND OPERATION ALONE OR IN COMBINATION WITH YOUR PRODUCTS.
- IN NO EVENT SHALL APPLE BE LIABLE FOR ANY SPECIAL, INDIRECT, INCIDENTAL OR CONSEQUENTIAL 
- DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS 
- OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) ARISING IN ANY WAY OUT OF THE USE, 
- REPRODUCTION, MODIFICATION AND/OR DISTRIBUTION OF THE APPLE SOFTWARE, HOWEVER CAUSED AND 
- WHETHER UNDER THEORY OF CONTRACT, TORT (INCLUDING NEGLIGENCE), STRICT LIABILITY OR 
- OTHERWISE, EVEN IF APPLE HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-
-#import <Cocoa/Cocoa.h>
-#import <WebKit/npfunctions.h>
-
-@interface MenuHandler : NSObject {
-    NSMenu *menu;
-    NPNetscapeFuncs *browserFuncs;
-    NPP instance;
-}
-
-- (id)initWithBrowserFuncs:(NPNetscapeFuncs *)theBrowserFuncs instance:(NPP)theInstance;
-
-- (NSMenu *)menu;
-
-@end
diff --git a/Examples/NetscapeCocoaPlugin/MenuHandler.m b/Examples/NetscapeCocoaPlugin/MenuHandler.m
deleted file mode 100644 (file)
index fda3e7d..0000000
+++ /dev/null
@@ -1,99 +0,0 @@
-/*
- IMPORTANT:  This Apple software is supplied to you by Apple Inc. ("Apple") in
- consideration of your agreement to the following terms, and your use, installation, 
- modification or redistribution of this Apple software constitutes acceptance of these 
- terms.  If you do not agree with these terms, please do not use, install, modify or 
- redistribute this Apple software.
- In consideration of your agreement to abide by the following terms, and subject to these 
- terms, Apple grants you a personal, non-exclusive license, under Apple’s copyrights in 
- this original Apple software (the "Apple Software"), to use, reproduce, modify and 
- redistribute the Apple Software, with or without modifications, in source and/or binary 
- forms; provided that if you redistribute the Apple Software in its entirety and without 
- modifications, you must retain this notice and the following text and disclaimers in all 
- such redistributions of the Apple Software.  Neither the name, trademarks, service marks 
- or logos of Apple Inc. may be used to endorse or promote products derived from 
- the Apple Software without specific prior written permission from Apple. Except as expressly
- stated in this notice, no other rights or licenses, express or implied, are granted by Apple
- herein, including but not limited to any patent rights that may be infringed by your 
- derivative works or by other works in which the Apple Software may be incorporated.
- The Apple Software is provided by Apple on an "AS IS" basis.  APPLE MAKES NO WARRANTIES, 
- EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION THE IMPLIED WARRANTIES OF NON-INFRINGEMENT, 
- MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE, REGARDING THE APPLE SOFTWARE OR ITS 
- USE AND OPERATION ALONE OR IN COMBINATION WITH YOUR PRODUCTS.
- IN NO EVENT SHALL APPLE BE LIABLE FOR ANY SPECIAL, INDIRECT, INCIDENTAL OR CONSEQUENTIAL 
- DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS 
- OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) ARISING IN ANY WAY OUT OF THE USE, 
- REPRODUCTION, MODIFICATION AND/OR DISTRIBUTION OF THE APPLE SOFTWARE, HOWEVER CAUSED AND 
- WHETHER UNDER THEORY OF CONTRACT, TORT (INCLUDING NEGLIGENCE), STRICT LIABILITY OR 
- OTHERWISE, EVEN IF APPLE HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-
-#import "MenuHandler.h"
-
-@implementation MenuHandler
-
-- (void)_openURL:(id)sender
-{
-    browserFuncs->geturl(instance, "http://www.apple.com/", "_blank");
-}
-
-- (void)_disabledItem:(id)sender
-{
-    // This should never be called
-}
-
-- (BOOL)validateUserInterfaceItem:(id <NSValidatedUserInterfaceItem>)anItem
-{
-    SEL sel = [anItem action];
-    
-    if (sel == @selector(_openURL:))
-        return YES;
-    
-    if (sel == @selector(_disabledItem:))
-        return NO;
-    
-    return NO;
-}
-
-- (id)initWithBrowserFuncs:(NPNetscapeFuncs *)theBrowserFuncs instance:(NPP)theInstance;
-{
-    self = [super init];
-    if (!self)
-        return nil;
-
-    browserFuncs = theBrowserFuncs;
-    instance = theInstance;
-    
-    // Create the menu
-    menu = [[NSMenu alloc] initWithTitle:@"Menu"];
-    
-    NSMenuItem *item = [[NSMenuItem alloc] initWithTitle:@"Open URL" action:@selector(_openURL:) keyEquivalent:@""];
-    [item setTarget:self];   
-    [menu addItem:item];    
-    [item release];
-    
-    item = [[NSMenuItem alloc] initWithTitle:@"Disabled Item" action:@selector(_disabledItem:) keyEquivalent:@""];
-    [item setTarget:self];   
-    [menu addItem:item];    
-    [item release];
-    
-    return self;
-}
-
-- (void)dealloc
-{
-    [menu release];
-    
-    [super dealloc];
-}
-
-
-- (NSMenu *)menu
-{
-    return menu;
-}
-
-@end
diff --git a/Examples/NetscapeCocoaPlugin/NetscapeCocoaPlugin.xcodeproj/project.pbxproj b/Examples/NetscapeCocoaPlugin/NetscapeCocoaPlugin.xcodeproj/project.pbxproj
deleted file mode 100644 (file)
index c9a0b70..0000000
+++ /dev/null
@@ -1,247 +0,0 @@
-// !$*UTF8*$!
-{
-       archiveVersion = 1;
-       classes = {
-       };
-       objectVersion = 42;
-       objects = {
-
-/* Begin PBXBuildFile section */
-               1A624E590DCBC7F6006898C8 /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = 1A624E580DCBC7F6006898C8 /* main.m */; };
-               1A6250420DCBC81B006898C8 /* Cocoa.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 1A6250410DCBC81B006898C8 /* Cocoa.framework */; };
-               1AAD6A090DD0DC52003985DA /* MenuHandler.m in Sources */ = {isa = PBXBuildFile; fileRef = 1AAD6A080DD0DC52003985DA /* MenuHandler.m */; };
-               8D5B49A804867FD3000E48DA /* InfoPlist.strings in Resources */ = {isa = PBXBuildFile; fileRef = 8D5B49A704867FD3000E48DA /* InfoPlist.strings */; };
-/* End PBXBuildFile section */
-
-/* Begin PBXFileReference section */
-               089C167EFE841241C02AAC07 /* English */ = {isa = PBXFileReference; fileEncoding = 10; lastKnownFileType = text.plist.strings; name = English; path = English.lproj/InfoPlist.strings; sourceTree = "<group>"; };
-               1A624E580DCBC7F6006898C8 /* main.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = main.m; sourceTree = "<group>"; };
-               1A6250410DCBC81B006898C8 /* Cocoa.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Cocoa.framework; path = /System/Library/Frameworks/Cocoa.framework; sourceTree = "<absolute>"; };
-               1AAD6A070DD0DC52003985DA /* MenuHandler.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MenuHandler.h; sourceTree = "<group>"; };
-               1AAD6A080DD0DC52003985DA /* MenuHandler.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = MenuHandler.m; sourceTree = "<group>"; };
-               8D576316048677EA00EA77CD /* NetscapeCocoaPlugin.plugin */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = NetscapeCocoaPlugin.plugin; sourceTree = BUILT_PRODUCTS_DIR; };
-               8D576317048677EA00EA77CD /* Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist; path = Info.plist; sourceTree = "<group>"; };
-/* End PBXFileReference section */
-
-/* Begin PBXFrameworksBuildPhase section */
-               8D576313048677EA00EA77CD /* Frameworks */ = {
-                       isa = PBXFrameworksBuildPhase;
-                       buildActionMask = 2147483647;
-                       files = (
-                               1A6250420DCBC81B006898C8 /* Cocoa.framework in Frameworks */,
-                       );
-                       runOnlyForDeploymentPostprocessing = 0;
-               };
-/* End PBXFrameworksBuildPhase section */
-
-/* Begin PBXGroup section */
-               089C166AFE841209C02AAC07 /* NetscapeCocoaPlugin */ = {
-                       isa = PBXGroup;
-                       children = (
-                               08FB77AFFE84173DC02AAC07 /* Source */,
-                               089C167CFE841241C02AAC07 /* Resources */,
-                               089C1671FE841209C02AAC07 /* External Frameworks and Libraries */,
-                               19C28FB6FE9D52B211CA2CBB /* Products */,
-                       );
-                       name = NetscapeCocoaPlugin;
-                       sourceTree = "<group>";
-               };
-               089C1671FE841209C02AAC07 /* External Frameworks and Libraries */ = {
-                       isa = PBXGroup;
-                       children = (
-                               1A6250410DCBC81B006898C8 /* Cocoa.framework */,
-                       );
-                       name = "External Frameworks and Libraries";
-                       sourceTree = "<group>";
-               };
-               089C167CFE841241C02AAC07 /* Resources */ = {
-                       isa = PBXGroup;
-                       children = (
-                               8D576317048677EA00EA77CD /* Info.plist */,
-                               8D5B49A704867FD3000E48DA /* InfoPlist.strings */,
-                       );
-                       name = Resources;
-                       sourceTree = "<group>";
-               };
-               08FB77AFFE84173DC02AAC07 /* Source */ = {
-                       isa = PBXGroup;
-                       children = (
-                               1A624E580DCBC7F6006898C8 /* main.m */,
-                               1AAD6A070DD0DC52003985DA /* MenuHandler.h */,
-                               1AAD6A080DD0DC52003985DA /* MenuHandler.m */,
-                       );
-                       name = Source;
-                       sourceTree = "<group>";
-               };
-               19C28FB6FE9D52B211CA2CBB /* Products */ = {
-                       isa = PBXGroup;
-                       children = (
-                               8D576316048677EA00EA77CD /* NetscapeCocoaPlugin.plugin */,
-                       );
-                       name = Products;
-                       sourceTree = "<group>";
-               };
-/* End PBXGroup section */
-
-/* Begin PBXNativeTarget section */
-               8D57630D048677EA00EA77CD /* NetscapeCocoaPlugin */ = {
-                       isa = PBXNativeTarget;
-                       buildConfigurationList = 149C298308902C53008A9EFC /* Build configuration list for PBXNativeTarget "NetscapeCocoaPlugin" */;
-                       buildPhases = (
-                               8D576311048677EA00EA77CD /* Sources */,
-                               8D57630F048677EA00EA77CD /* Resources */,
-                               8D576313048677EA00EA77CD /* Frameworks */,
-                       );
-                       buildRules = (
-                       );
-                       dependencies = (
-                       );
-                       name = NetscapeCocoaPlugin;
-                       productInstallPath = "$(HOME)/Library/Bundles";
-                       productName = NetscapeCocoaPlugin;
-                       productReference = 8D576316048677EA00EA77CD /* NetscapeCocoaPlugin.plugin */;
-                       productType = "com.apple.product-type.bundle";
-               };
-/* End PBXNativeTarget section */
-
-/* Begin PBXProject section */
-               089C1669FE841209C02AAC07 /* Project object */ = {
-                       isa = PBXProject;
-                       buildConfigurationList = 149C298708902C53008A9EFC /* Build configuration list for PBXProject "NetscapeCocoaPlugin" */;
-                       compatibilityVersion = "Xcode 2.4";
-                       developmentRegion = English;
-                       hasScannedForEncodings = 1;
-                       knownRegions = (
-                               English,
-                               Japanese,
-                               French,
-                               German,
-                       );
-                       mainGroup = 089C166AFE841209C02AAC07 /* NetscapeCocoaPlugin */;
-                       projectDirPath = "";
-                       projectRoot = "";
-                       targets = (
-                               8D57630D048677EA00EA77CD /* NetscapeCocoaPlugin */,
-                       );
-               };
-/* End PBXProject section */
-
-/* Begin PBXResourcesBuildPhase section */
-               8D57630F048677EA00EA77CD /* Resources */ = {
-                       isa = PBXResourcesBuildPhase;
-                       buildActionMask = 2147483647;
-                       files = (
-                               8D5B49A804867FD3000E48DA /* InfoPlist.strings in Resources */,
-                       );
-                       runOnlyForDeploymentPostprocessing = 0;
-               };
-/* End PBXResourcesBuildPhase section */
-
-/* Begin PBXSourcesBuildPhase section */
-               8D576311048677EA00EA77CD /* Sources */ = {
-                       isa = PBXSourcesBuildPhase;
-                       buildActionMask = 2147483647;
-                       files = (
-                               1A624E590DCBC7F6006898C8 /* main.m in Sources */,
-                               1AAD6A090DD0DC52003985DA /* MenuHandler.m in Sources */,
-                       );
-                       runOnlyForDeploymentPostprocessing = 0;
-               };
-/* End PBXSourcesBuildPhase section */
-
-/* Begin PBXVariantGroup section */
-               8D5B49A704867FD3000E48DA /* InfoPlist.strings */ = {
-                       isa = PBXVariantGroup;
-                       children = (
-                               089C167EFE841241C02AAC07 /* English */,
-                       );
-                       name = InfoPlist.strings;
-                       sourceTree = "<group>";
-               };
-/* End PBXVariantGroup section */
-
-/* Begin XCBuildConfiguration section */
-               149C298408902C53008A9EFC /* Debug */ = {
-                       isa = XCBuildConfiguration;
-                       buildSettings = {
-                               COPY_PHASE_STRIP = NO;
-                               GCC_DEBUGGING_SYMBOLS = full;
-                               GCC_DYNAMIC_NO_PIC = NO;
-                               GCC_ENABLE_FIX_AND_CONTINUE = YES;
-                               GCC_MODEL_TUNING = G5;
-                               GCC_OPTIMIZATION_LEVEL = 0;
-                               INFOPLIST_FILE = Info.plist;
-                               INSTALL_PATH = "$(HOME)/Library/Bundles";
-                               PRODUCT_NAME = NetscapeCocoaPlugin;
-                               WRAPPER_EXTENSION = plugin;
-                               ZERO_LINK = YES;
-                       };
-                       name = Debug;
-               };
-               149C298508902C53008A9EFC /* Release */ = {
-                       isa = XCBuildConfiguration;
-                       buildSettings = {
-                               ARCHS = (
-                                       ppc,
-                                       i386,
-                               );
-                               GCC_DEBUGGING_SYMBOLS = full;
-                               GCC_GENERATE_DEBUGGING_SYMBOLS = NO;
-                               GCC_MODEL_TUNING = G5;
-                               GCC_OPTIMIZATION_LEVEL = 0;
-                               INFOPLIST_FILE = Info.plist;
-                               INSTALL_PATH = "$(HOME)/Library/Bundles";
-                               PRODUCT_NAME = NetscapeCocoaPlugin;
-                               WRAPPER_EXTENSION = plugin;
-                       };
-                       name = Release;
-               };
-               149C298808902C53008A9EFC /* Debug */ = {
-                       isa = XCBuildConfiguration;
-                       buildSettings = {
-                               ARCHS = "$(ARCHS_STANDARD_64_BIT_PRE_XCODE_3_1)";
-                               ARCHS_STANDARD_32_64_BIT_PRE_XCODE_3_1 = "ppc i386 ppc64 x86_64";
-                               ARCHS_STANDARD_64_BIT_PRE_XCODE_3_1 = x86_64;
-                               GCC_WARN_ABOUT_RETURN_TYPE = YES;
-                               GCC_WARN_UNUSED_VARIABLE = YES;
-                               PREBINDING = NO;
-                       };
-                       name = Debug;
-               };
-               149C298908902C53008A9EFC /* Release */ = {
-                       isa = XCBuildConfiguration;
-                       buildSettings = {
-                               ARCHS = "$(ARCHS_STANDARD_64_BIT_PRE_XCODE_3_1)";
-                               ARCHS_STANDARD_32_64_BIT_PRE_XCODE_3_1 = "ppc i386 ppc64 x86_64";
-                               ARCHS_STANDARD_64_BIT_PRE_XCODE_3_1 = x86_64;
-                               GCC_WARN_ABOUT_RETURN_TYPE = YES;
-                               GCC_WARN_UNUSED_VARIABLE = YES;
-                               PREBINDING = NO;
-                       };
-                       name = Release;
-               };
-/* End XCBuildConfiguration section */
-
-/* Begin XCConfigurationList section */
-               149C298308902C53008A9EFC /* Build configuration list for PBXNativeTarget "NetscapeCocoaPlugin" */ = {
-                       isa = XCConfigurationList;
-                       buildConfigurations = (
-                               149C298408902C53008A9EFC /* Debug */,
-                               149C298508902C53008A9EFC /* Release */,
-                       );
-                       defaultConfigurationIsVisible = 0;
-                       defaultConfigurationName = Release;
-               };
-               149C298708902C53008A9EFC /* Build configuration list for PBXProject "NetscapeCocoaPlugin" */ = {
-                       isa = XCConfigurationList;
-                       buildConfigurations = (
-                               149C298808902C53008A9EFC /* Debug */,
-                               149C298908902C53008A9EFC /* Release */,
-                       );
-                       defaultConfigurationIsVisible = 0;
-                       defaultConfigurationName = Release;
-               };
-/* End XCConfigurationList section */
-       };
-       rootObject = 089C1669FE841209C02AAC07 /* Project object */;
-}
diff --git a/Examples/NetscapeCocoaPlugin/main.m b/Examples/NetscapeCocoaPlugin/main.m
deleted file mode 100644 (file)
index a46b4ef..0000000
+++ /dev/null
@@ -1,368 +0,0 @@
-/*
- IMPORTANT:  This Apple software is supplied to you by Apple Inc. ("Apple") in
- consideration of your agreement to the following terms, and your use, installation, 
- modification or redistribution of this Apple software constitutes acceptance of these 
- terms.  If you do not agree with these terms, please do not use, install, modify or 
- redistribute this Apple software.
- In consideration of your agreement to abide by the following terms, and subject to these 
- terms, Apple grants you a personal, non-exclusive license, under Apple’s copyrights in 
- this original Apple software (the "Apple Software"), to use, reproduce, modify and 
- redistribute the Apple Software, with or without modifications, in source and/or binary 
- forms; provided that if you redistribute the Apple Software in its entirety and without 
- modifications, you must retain this notice and the following text and disclaimers in all 
- such redistributions of the Apple Software.  Neither the name, trademarks, service marks 
- or logos of Apple Inc. may be used to endorse or promote products derived from 
- the Apple Software without specific prior written permission from Apple. Except as expressly
- stated in this notice, no other rights or licenses, express or implied, are granted by Apple
- herein, including but not limited to any patent rights that may be infringed by your 
- derivative works or by other works in which the Apple Software may be incorporated.
- The Apple Software is provided by Apple on an "AS IS" basis.  APPLE MAKES NO WARRANTIES, 
- EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION THE IMPLIED WARRANTIES OF NON-INFRINGEMENT, 
- MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE, REGARDING THE APPLE SOFTWARE OR ITS 
- USE AND OPERATION ALONE OR IN COMBINATION WITH YOUR PRODUCTS.
- IN NO EVENT SHALL APPLE BE LIABLE FOR ANY SPECIAL, INDIRECT, INCIDENTAL OR CONSEQUENTIAL 
- DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS 
- OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) ARISING IN ANY WAY OUT OF THE USE, 
- REPRODUCTION, MODIFICATION AND/OR DISTRIBUTION OF THE APPLE SOFTWARE, HOWEVER CAUSED AND 
- WHETHER UNDER THEORY OF CONTRACT, TORT (INCLUDING NEGLIGENCE), STRICT LIABILITY OR 
- OTHERWISE, EVEN IF APPLE HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-
-#import <WebKit/npapi.h>
-#import <WebKit/npfunctions.h>
-#import <WebKit/npruntime.h>
-
-#import <Cocoa/Cocoa.h>
-
-#import "MenuHandler.h"
-
-// Browser function table
-static NPNetscapeFuncs* browser;
-
-// Structure for per-instance storage
-typedef struct PluginObject
-{
-    NPP npp;
-    
-    NPWindow window;
-    
-    NSString *string;
-    bool hasFocus;
-    bool mouseIsInsidePlugin;
-    
-    MenuHandler *menuHandler;
-} PluginObject;
-
-NPError NPP_New(NPMIMEType pluginType, NPP instance, uint16_t mode, int16_t argc, char* argn[], char* argv[], NPSavedData* saved);
-NPError NPP_Destroy(NPP instance, NPSavedData** save);
-NPError NPP_SetWindow(NPP instance, NPWindow* window);
-NPError NPP_NewStream(NPP instance, NPMIMEType type, NPStream* stream, NPBool seekable, uint16_t* stype);
-NPError NPP_DestroyStream(NPP instance, NPStream* stream, NPReason reason);
-int32_t NPP_WriteReady(NPP instance, NPStream* stream);
-int32_t NPP_Write(NPP instance, NPStream* stream, int32_t offset, int32_t len, void* buffer);
-void NPP_StreamAsFile(NPP instance, NPStream* stream, const char* fname);
-void NPP_Print(NPP instance, NPPrint* platformPrint);
-int16_t NPP_HandleEvent(NPP instance, void* event);
-void NPP_URLNotify(NPP instance, const char* URL, NPReason reason, void* notifyData);
-NPError NPP_GetValue(NPP instance, NPPVariable variable, void *value);
-NPError NPP_SetValue(NPP instance, NPNVariable variable, void *value);
-
-#pragma export on
-// Mach-o entry points
-NPError NP_Initialize(NPNetscapeFuncs *browserFuncs);
-NPError NP_GetEntryPoints(NPPluginFuncs *pluginFuncs);
-void NP_Shutdown(void);
-#pragma export off
-
-NPError NP_Initialize(NPNetscapeFuncs* browserFuncs)
-{
-    browser = browserFuncs;
-    return NPERR_NO_ERROR;
-}
-
-NPError NP_GetEntryPoints(NPPluginFuncs* pluginFuncs)
-{
-    pluginFuncs->version = 11;
-    pluginFuncs->size = sizeof(pluginFuncs);
-    pluginFuncs->newp = NPP_New;
-    pluginFuncs->destroy = NPP_Destroy;
-    pluginFuncs->setwindow = NPP_SetWindow;
-    pluginFuncs->newstream = NPP_NewStream;
-    pluginFuncs->destroystream = NPP_DestroyStream;
-    pluginFuncs->asfile = NPP_StreamAsFile;
-    pluginFuncs->writeready = NPP_WriteReady;
-    pluginFuncs->write = (NPP_WriteProcPtr)NPP_Write;
-    pluginFuncs->print = NPP_Print;
-    pluginFuncs->event = NPP_HandleEvent;
-    pluginFuncs->urlnotify = NPP_URLNotify;
-    pluginFuncs->getvalue = NPP_GetValue;
-    pluginFuncs->setvalue = NPP_SetValue;
-    
-    return NPERR_NO_ERROR;
-}
-
-void NP_Shutdown(void)
-{
-
-}
-
-NPError NPP_New(NPMIMEType pluginType, NPP instance, uint16_t mode, int16_t argc, char* argn[], char* argv[], NPSavedData* saved)
-{
-    // Create per-instance storage
-    PluginObject *obj = (PluginObject *)malloc(sizeof(PluginObject));
-    bzero(obj, sizeof(PluginObject));
-    
-    obj->npp = instance;
-    instance->pdata = obj;
-    
-    // Ask the browser if it supports the CoreGraphics drawing model
-    NPBool supportsCoreGraphics;
-    if (browser->getvalue(instance, NPNVsupportsCoreGraphicsBool, &supportsCoreGraphics) != NPERR_NO_ERROR)
-        supportsCoreGraphics = FALSE;
-    
-    if (!supportsCoreGraphics)
-        return NPERR_INCOMPATIBLE_VERSION_ERROR;
-    
-    // If the browser supports the CoreGraphics drawing model, enable it.
-    browser->setvalue(instance, NPPVpluginDrawingModel, (void *)NPDrawingModelCoreGraphics);
-
-    // If the browser supports the Cocoa event model, enable it.
-    NPBool supportsCocoa;
-    if (browser->getvalue(instance, NPNVsupportsCocoaBool, &supportsCocoa) != NPERR_NO_ERROR)
-        supportsCocoa = FALSE;
-    
-    if (!supportsCocoa)
-        return NPERR_INCOMPATIBLE_VERSION_ERROR;
-    
-    browser->setvalue(instance, NPPVpluginEventModel, (void *)NPEventModelCocoa);
-    
-    return NPERR_NO_ERROR;
-}
-
-NPError NPP_Destroy(NPP instance, NPSavedData** save)
-{
-    // Free per-instance storage
-    PluginObject *obj = instance->pdata;
-    
-    [obj->string release];
-    [obj->menuHandler release];
-    
-    free(obj);
-    
-    return NPERR_NO_ERROR;
-}
-
-NPError NPP_SetWindow(NPP instance, NPWindow* window)
-{
-    PluginObject *obj = instance->pdata;
-    obj->window = *window;
-
-    return NPERR_NO_ERROR;
-}
-
-NPError NPP_NewStream(NPP instance, NPMIMEType type, NPStream* stream, NPBool seekable, uint16_t* stype)
-{
-    *stype = NP_ASFILEONLY;
-    return NPERR_NO_ERROR;
-}
-
-NPError NPP_DestroyStream(NPP instance, NPStream* stream, NPReason reason)
-{
-    return NPERR_NO_ERROR;
-}
-
-int32_t NPP_WriteReady(NPP instance, NPStream* stream)
-{
-    return 0;
-}
-
-int32_t NPP_Write(NPP instance, NPStream* stream, int32_t offset, int32_t len, void* buffer)
-{
-    return 0;
-}
-
-void NPP_StreamAsFile(NPP instance, NPStream* stream, const char* fname)
-{
-}
-
-void NPP_Print(NPP instance, NPPrint* platformPrint)
-{
-
-}
-
-static void handleDraw(PluginObject *obj, NPCocoaEvent *event)
-{
-    NSGraphicsContext *oldContext = [[NSGraphicsContext currentContext] retain];
-    
-    NSGraphicsContext *context = [NSGraphicsContext graphicsContextWithGraphicsPort:event->data.draw.context
-                                                                            flipped:YES];
-
-    [NSGraphicsContext setCurrentContext:context];
-    
-    NSRect rect = NSMakeRect(0, 0, obj->window.width, obj->window.height);
-    
-    [[NSColor lightGrayColor] set];
-    [NSBezierPath fillRect:rect];
-
-    // If the plugin has focus, draw a focus indicator
-    if (obj->hasFocus) {
-        [[NSColor blackColor] set];
-        NSBezierPath *path = [NSBezierPath bezierPathWithRect:rect];
-        [path setLineWidth:5];
-        [path stroke];
-    }
-    
-    [obj->string drawAtPoint:NSMakePoint(10, 10) withAttributes:nil];
-    
-    [NSGraphicsContext setCurrentContext:oldContext];
-}
-
-static NSString *eventType(NPCocoaEventType type)
-{
-    switch (type) {
-        case NPCocoaEventScrollWheel:
-            return @"NPCocoaEventScrollWheel";
-        case NPCocoaEventMouseDown:
-            return @"NPCocoaEventMouseDown";
-        case NPCocoaEventMouseUp:
-            return @"NPCocoaEventMouseUp";            
-        case NPCocoaEventMouseMoved:
-            return @"NPCocoaEventMouseMoved";            
-        case NPCocoaEventMouseDragged:
-            return @"NPCocoaEventMouseDragged";            
-        case NPCocoaEventMouseEntered:
-            return @"NPCocoaEventMouseEntered";            
-        case NPCocoaEventMouseExited:
-            return @"NPCocoaEventMouseExited";
-        case NPCocoaEventKeyDown:
-            return @"NPCocoaEventKeyDown";
-        case NPCocoaEventKeyUp:
-            return @"NPCocoaEventKeyUp";
-        case NPCocoaEventFlagsChanged:
-            return @"NPCocoaEventFlagsChanged";
-        default:
-            return @"unknown";
-    }    
-}
-
-static void invalidatePlugin(PluginObject *obj)
-{
-    NPRect rect;
-    rect.left = 0;
-    rect.top = 0;
-    rect.right = obj->window.width;
-    rect.bottom = obj->window.height;
-    
-    browser->invalidaterect(obj->npp, &rect);    
-}
-
-
-static void handleMouseEvent(PluginObject *obj, NPCocoaEvent *event)
-{
-    NSString *string = [NSString stringWithFormat:@"Type: %@\n"
-                                                   "Modifier flags: 0x%x\n"
-                                                   "Coordinates: (%g, %g)\n"
-                                                   "Button number: %d\n"
-                                                   "Click count: %d\n"
-                                                   "Delta: (%g, %g, %g)",
-                                                   eventType(event->type), 
-                                                   event->data.mouse.modifierFlags,
-                                                   event->data.mouse.pluginX,
-                                                   event->data.mouse.pluginY,
-                                                   event->data.mouse.buttonNumber,
-                                                   event->data.mouse.clickCount,
-                                                   event->data.mouse.deltaX, event->data.mouse.deltaY, event->data.mouse.deltaZ];
-    
-    
-    [obj->string release];
-    obj->string = [string retain];
-    invalidatePlugin(obj);
-    
-    if (event->data.mouse.buttonNumber == 1) {
-        if (!obj->menuHandler)
-            obj->menuHandler = [[MenuHandler alloc] initWithBrowserFuncs:browser instance:obj->npp];
-        
-        browser->popupcontextmenu(obj->npp, (NPNSMenu *)[obj->menuHandler menu]);
-    }
-}
-
-static void handleKeyboardEvent(PluginObject *obj, NPCocoaEvent *event)
-{
-    NSString *string = [NSString stringWithFormat:@"Type: %@\n"
-                        "Modifier flags: 0x%x\n"
-                        "Characters: %@\n"
-                        "Characters ignoring modifiers: %@\n"
-                        "Is a repeat: %@\n"
-                        "Key code: %d",
-                        eventType(event->type), 
-                        event->data.key.modifierFlags,
-                        event->data.key.characters,
-                        event->data.key.charactersIgnoringModifiers,
-                        event->data.key.isARepeat ? @"YES" : @"NO",
-                        event->data.key.keyCode];
-    
-    
-    [obj->string release];
-    obj->string = [string retain];
-    
-    invalidatePlugin(obj);
-}
-
-int16_t NPP_HandleEvent(NPP instance, void* event)
-{
-    PluginObject *obj = instance->pdata;
-
-    NPCocoaEvent *cocoaEvent = event;
-    
-    switch(cocoaEvent->type) {
-        case NPCocoaEventFocusChanged:
-            obj->hasFocus = cocoaEvent->data.focus.hasFocus;
-            invalidatePlugin(obj);
-            return 1;
-            
-        case NPCocoaEventDrawRect:
-            handleDraw(obj, cocoaEvent);
-            return 1;
-        
-        case NPCocoaEventKeyDown:
-        case NPCocoaEventKeyUp:
-        case NPCocoaEventFlagsChanged:
-            handleKeyboardEvent(obj, cocoaEvent);
-            return 1;
-            
-        case NPCocoaEventMouseDown:
-        case NPCocoaEventMouseUp:
-            
-        // FIXME: NPCocoaEventMouseMoved is currently disabled in order to see other events more clearly
-        // without "drowning" in mouse moved events.
-//        case NPCocoaEventMouseMoved:
-        case NPCocoaEventMouseEntered:
-        case NPCocoaEventMouseExited:
-        case NPCocoaEventMouseDragged:
-        case NPCocoaEventScrollWheel:
-            handleMouseEvent(obj, cocoaEvent);
-            return 1;
-    }
-    
-    return 0;
-}
-
-void NPP_URLNotify(NPP instance, const char* url, NPReason reason, void* notifyData)
-{
-
-}
-
-NPError NPP_GetValue(NPP instance, NPPVariable variable, void *value)
-{
-    return NPERR_GENERIC_ERROR;
-}
-
-NPError NPP_SetValue(NPP instance, NPNVariable variable, void *value)
-{
-    return NPERR_GENERIC_ERROR;
-}
diff --git a/Examples/NetscapeCocoaPlugin/test.html b/Examples/NetscapeCocoaPlugin/test.html
deleted file mode 100644 (file)
index 368cb1c..0000000
+++ /dev/null
@@ -1,11 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/1999/REC-html401-19991224/loose.dtd">
-<html>
-<head>
-<title>Cocoa Netscape Plug-In</title>
-</head>
-<body>
-<div>
-    <embed width="400" height="400" type="test/x-netscape-cocoa-plugin"></embed>
-</div>
-</body>
-</html>
diff --git a/Examples/NetscapeCoreAnimationMoviePlugin/English.lproj/InfoPlist.strings b/Examples/NetscapeCoreAnimationMoviePlugin/English.lproj/InfoPlist.strings
deleted file mode 100644 (file)
index 5e45963..0000000
Binary files a/Examples/NetscapeCoreAnimationMoviePlugin/English.lproj/InfoPlist.strings and /dev/null differ
diff --git a/Examples/NetscapeCoreAnimationMoviePlugin/Info.plist b/Examples/NetscapeCoreAnimationMoviePlugin/Info.plist
deleted file mode 100644 (file)
index 5809a14..0000000
+++ /dev/null
@@ -1,36 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
-<plist version="1.0">
-<dict>
-       <key>CFBundleDevelopmentRegion</key>
-       <string>English</string>
-       <key>CFBundleExecutable</key>
-       <string>NetscapeCoreAnimationMoviePlugin</string>
-       <key>CFBundleIconFile</key>
-       <string></string>
-       <key>CFBundleIdentifier</key>
-       <string>com.apple.netscapecoreanimationmovieplugin</string>
-       <key>CFBundleInfoDictionaryVersion</key>
-       <string>6.0</string>
-       <key>CFBundlePackageType</key>
-       <string>BRPL</string>
-       <key>CFBundleShortVersionString</key>
-       <string>1.0</string>
-       <key>CFBundleSignature</key>
-       <string>????</string>
-       <key>CFBundleVersion</key>
-       <string>1.0</string>
-       <key>WebPluginDescription</key>
-       <string>Simple Netscape plug-in that draws using Core Animation and handles events using the Cocoa event model</string>
-       <key>WebPluginMIMETypes</key>
-       <dict>
-               <key>test/x-netscape-core-animation-movie-plugin</key>
-               <dict>
-                       <key>WebPluginTypeDescription</key>
-                       <string>Netscape Core Animation Movie Plug-in</string>
-               </dict>
-       </dict>
-       <key>WebPluginName</key>
-       <string>Netscape Core Animation Movie Plug-in</string>
-</dict>
-</plist>
diff --git a/Examples/NetscapeCoreAnimationMoviePlugin/MovieControllerLayer.h b/Examples/NetscapeCoreAnimationMoviePlugin/MovieControllerLayer.h
deleted file mode 100644 (file)
index d29c916..0000000
+++ /dev/null
@@ -1,75 +0,0 @@
-/*
-     File: MovieControllerLayer.h
- Disclaimer: IMPORTANT:  This Apple software is supplied to you by Apple
- Inc. ("Apple") in consideration of your agreement to the following
- terms, and your use, installation, modification or redistribution of
- this Apple software constitutes acceptance of these terms.  If you do
- not agree with these terms, please do not use, install, modify or
- redistribute this Apple software.
- In consideration of your agreement to abide by the following terms, and
- subject to these terms, Apple grants you a personal, non-exclusive
- license, under Apple's copyrights in this original Apple software (the
- "Apple Software"), to use, reproduce, modify and redistribute the Apple
- Software, with or without modifications, in source and/or binary forms;
- provided that if you redistribute the Apple Software in its entirety and
- without modifications, you must retain this notice and the following
- text and disclaimers in all such redistributions of the Apple Software.
- Neither the name, trademarks, service marks or logos of Apple Inc. may
- be used to endorse or promote products derived from the Apple Software
- without specific prior written permission from Apple.  Except as
- expressly stated in this notice, no other rights or licenses, express or
- implied, are granted by Apple herein, including but not limited to any
- patent rights that may be infringed by your derivative works or by other
- works in which the Apple Software may be incorporated.
- The Apple Software is provided by Apple on an "AS IS" basis.  APPLE
- MAKES NO WARRANTIES, EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION
- THE IMPLIED WARRANTIES OF NON-INFRINGEMENT, MERCHANTABILITY AND FITNESS
- FOR A PARTICULAR PURPOSE, REGARDING THE APPLE SOFTWARE OR ITS USE AND
- OPERATION ALONE OR IN COMBINATION WITH YOUR PRODUCTS.
- IN NO EVENT SHALL APPLE BE LIABLE FOR ANY SPECIAL, INDIRECT, INCIDENTAL
- OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
- SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
- INTERRUPTION) ARISING IN ANY WAY OUT OF THE USE, REPRODUCTION,
- MODIFICATION AND/OR DISTRIBUTION OF THE APPLE SOFTWARE, HOWEVER CAUSED
- AND WHETHER UNDER THEORY OF CONTRACT, TORT (INCLUDING NEGLIGENCE),
- STRICT LIABILITY OR OTHERWISE, EVEN IF APPLE HAS BEEN ADVISED OF THE
- POSSIBILITY OF SUCH DAMAGE.
- Copyright (C) 2009 Apple Inc. All Rights Reserved.
- */
-
-
-#import <QuartzCore/QuartzCore.h>
-
-@class QTMovie;
-
-@interface MovieControllerLayer : CALayer {
-    CGImageRef _playImage;
-    CGImageRef _pauseImage;
-    
-    CGImageRef _sliderTrackLeft;
-    CGImageRef _sliderTrackRight;
-    CGImageRef _sliderTrackCenter;
-    
-    CGImageRef _thumb;
-    
-    QTMovie *_movie;
-    NSTimer *_updateTimeTimer;
-    
-    BOOL _wasPlayingBeforeMouseDown;
-    BOOL _isScrubbing;
-    CGFloat _mouseDownXDelta;
-}
-
-- (void)setMovie:(QTMovie *)movie;
-
-- (void)handleMouseDown:(CGPoint)point;
-- (void)handleMouseUp:(CGPoint)point;
-- (void)handleMouseDragged:(CGPoint)point;
-
-@end
diff --git a/Examples/NetscapeCoreAnimationMoviePlugin/MovieControllerLayer.m b/Examples/NetscapeCoreAnimationMoviePlugin/MovieControllerLayer.m
deleted file mode 100644 (file)
index 171dab4..0000000
+++ /dev/null
@@ -1,355 +0,0 @@
-/*
-     File: MovieControllerLayer.m
- Disclaimer: IMPORTANT:  This Apple software is supplied to you by Apple
- Inc. ("Apple") in consideration of your agreement to the following
- terms, and your use, installation, modification or redistribution of
- this Apple software constitutes acceptance of these terms.  If you do
- not agree with these terms, please do not use, install, modify or
- redistribute this Apple software.
- In consideration of your agreement to abide by the following terms, and
- subject to these terms, Apple grants you a personal, non-exclusive
- license, under Apple's copyrights in this original Apple software (the
- "Apple Software"), to use, reproduce, modify and redistribute the Apple
- Software, with or without modifications, in source and/or binary forms;
- provided that if you redistribute the Apple Software in its entirety and
- without modifications, you must retain this notice and the following
- text and disclaimers in all such redistributions of the Apple Software.
- Neither the name, trademarks, service marks or logos of Apple Inc. may
- be used to endorse or promote products derived from the Apple Software
- without specific prior written permission from Apple.  Except as
- expressly stated in this notice, no other rights or licenses, express or
- implied, are granted by Apple herein, including but not limited to any
- patent rights that may be infringed by your derivative works or by other
- works in which the Apple Software may be incorporated.
- The Apple Software is provided by Apple on an "AS IS" basis.  APPLE
- MAKES NO WARRANTIES, EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION
- THE IMPLIED WARRANTIES OF NON-INFRINGEMENT, MERCHANTABILITY AND FITNESS
- FOR A PARTICULAR PURPOSE, REGARDING THE APPLE SOFTWARE OR ITS USE AND
- OPERATION ALONE OR IN COMBINATION WITH YOUR PRODUCTS.
- IN NO EVENT SHALL APPLE BE LIABLE FOR ANY SPECIAL, INDIRECT, INCIDENTAL
- OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
- SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
- INTERRUPTION) ARISING IN ANY WAY OUT OF THE USE, REPRODUCTION,
- MODIFICATION AND/OR DISTRIBUTION OF THE APPLE SOFTWARE, HOWEVER CAUSED
- AND WHETHER UNDER THEORY OF CONTRACT, TORT (INCLUDING NEGLIGENCE),
- STRICT LIABILITY OR OTHERWISE, EVEN IF APPLE HAS BEEN ADVISED OF THE
- POSSIBILITY OF SUCH DAMAGE.
- Copyright (C) 2009 Apple Inc. All Rights Reserved.
- */
-
-#import "MovieControllerLayer.h"
-
-#import <QTKit/QTKit.h>
-
-@interface MovieControllerLayer ()
-- (BOOL)_isPlaying;
-- (NSTimeInterval)_currentTime;
-- (NSTimeInterval)_duration;
-@end
-
-@implementation MovieControllerLayer
-
-static CGImageRef createImageNamed(NSString *name)
-{
-    NSURL *url = [[NSBundle bundleForClass:[MovieControllerLayer class]] URLForResource:name withExtension:@"tiff"];
-    
-    if (!url)
-        return NULL;
-    
-    CGImageSourceRef imageSource = CGImageSourceCreateWithURL((CFURLRef)url, NULL);
-    if (!imageSource)
-        return NULL;
-    
-    CGImageRef image = CGImageSourceCreateImageAtIndex(imageSource, 0, NULL);
-    CFRelease(imageSource);
-    
-    return image;
-}
-
-- (id)init
-{
-    if (self = [super init]) {
-        self.needsDisplayOnBoundsChange = YES;
-        self.frame = CGRectMake(0, 0, 0, 25);
-        self.autoresizingMask = kCALayerWidthSizable;
-        
-        _playImage = createImageNamed(@"Play");
-        _pauseImage = createImageNamed(@"Pause");
-        _sliderTrackLeft = createImageNamed(@"SliderTrackLeft");
-        _sliderTrackRight = createImageNamed(@"SliderTrackRight");
-        _sliderTrackCenter = createImageNamed(@"SliderTrackCenter");
-        
-        _thumb = createImageNamed(@"Thumb");
-    }
-    
-    return self;
-}
-
-- (void)dealloc
-{
-    CGImageRelease(_playImage);
-    CGImageRelease(_pauseImage);
-    
-    CGImageRelease(_sliderTrackLeft);
-    CGImageRelease(_sliderTrackRight);
-    CGImageRelease(_sliderTrackCenter);
-    
-    CGImageRelease(_thumb);
-    
-    [self setMovie:nil];
-    [_updateTimeTimer invalidate];
-
-    [super dealloc];
-}
-
-#pragma mark Drawing
-
-- (CGRect)_playPauseButtonRect
-{
-    return CGRectMake(0, 0, 25, 25);
-}
-
-- (CGRect)_sliderRect
-{
-    CGFloat sliderYPosition = (self.bounds.size.height - CGImageGetHeight(_sliderTrackLeft)) / 2.0;
-    CGFloat playPauseButtonWidth = [self _playPauseButtonRect].size.width;
-    
-    return CGRectMake(playPauseButtonWidth, sliderYPosition, 
-                      self.bounds.size.width - playPauseButtonWidth - 7, CGImageGetHeight(_sliderTrackLeft));
-}
-
-- (CGRect)_sliderThumbRect
-{
-    CGRect sliderRect = [self _sliderRect];
-
-    CGFloat fraction = 0.0;
-    if (_movie)
-        fraction = [self _currentTime] / [self _duration];
-  
-    CGFloat x = fraction * (CGRectGetWidth(sliderRect) - CGImageGetWidth(_thumb));
-    
-    return CGRectMake(CGRectGetMinX(sliderRect) + x, CGRectGetMinY(sliderRect) - 1, 
-                      CGImageGetWidth(_thumb), CGImageGetHeight(_thumb));
-}
-
-- (CGRect)_innerSliderRect
-{
-    return CGRectInset([self _sliderRect], CGRectGetWidth([self _sliderThumbRect]) / 2, 0);
-}
-
-- (void)_drawPlayPauseButtonInContext:(CGContextRef)context
-{
-    CGContextDrawImage(context, [self _playPauseButtonRect], [self _isPlaying] ? _pauseImage : _playImage);
-}
-
-- (void)_drawSliderInContext:(CGContextRef)context
-{
-    // Draw the thumb
-    CGRect sliderThumbRect = [self _sliderThumbRect];
-    CGContextDrawImage(context, sliderThumbRect, _thumb);
-    
-    CGRect sliderRect = [self _sliderRect];
-    
-    // Draw left part
-    CGRect sliderLeftTrackRect = CGRectMake(CGRectGetMinX(sliderRect), CGRectGetMinY(sliderRect), 
-                                            CGImageGetWidth(_sliderTrackLeft), CGImageGetHeight(_sliderTrackLeft));
-    CGContextDrawImage(context, sliderLeftTrackRect, _sliderTrackLeft);
-    
-    // Draw center part
-    CGRect sliderCenterTrackRect = CGRectInset(sliderRect, CGImageGetWidth(_sliderTrackLeft), 0);
-    CGContextDrawImage(context, sliderCenterTrackRect, _sliderTrackCenter);
-    
-    // Draw right part
-    CGRect sliderRightTrackRect = CGRectMake(CGRectGetMaxX(sliderCenterTrackRect), CGRectGetMinY(sliderRect), 
-                                             CGImageGetWidth(_sliderTrackRight), CGImageGetHeight(_sliderTrackRight));
-    CGContextDrawImage(context, sliderRightTrackRect, _sliderTrackRight);
-    
-}
-
-- (void)drawInContext:(CGContextRef)context
-{
-    CGContextSaveGState(context);
-    CGContextSetFillColorWithColor(context, CGColorGetConstantColor(kCGColorBlack));
-    CGContextFillRect(context, self.bounds);
-    CGContextRestoreGState(context);
-    
-    [self _drawPlayPauseButtonInContext:context];
-    [self _drawSliderInContext:context];
-}
-
-#pragma mark Movie handling
-
-- (NSTimeInterval)_currentTime
-{
-    if (!_movie)
-        return 0;
-    
-    QTTime time = [_movie currentTime];
-    NSTimeInterval timeInterval;
-    if (!QTGetTimeInterval(time, &timeInterval))
-        return 0;
-    
-    return timeInterval;
-}
-
-- (NSTimeInterval)_duration
-{
-    if (!_movie)
-        return 0;
-    
-    QTTime time = [_movie duration];
-    NSTimeInterval timeInterval;
-    if (!QTGetTimeInterval(time, &timeInterval))
-        return 0;
-    
-    return timeInterval;
-}
-
-- (BOOL)_isPlaying
-{
-    return [_movie rate] != 0.0;
-}
-
-- (void)_updateTime:(NSTimer *)timer
-{
-    [self setNeedsDisplay];
-}
-
-- (void)_rateDidChange:(NSNotification *)notification
-{
-    float rate = [[[notification userInfo] objectForKey:QTMovieRateDidChangeNotificationParameter] floatValue];
-    
-    if (rate == 0.0) {
-        [_updateTimeTimer invalidate];
-        _updateTimeTimer = nil;
-    } else
-        _updateTimeTimer = [NSTimer scheduledTimerWithTimeInterval:0.035 target:self selector:@selector(_updateTime:) userInfo:nil repeats:YES];
-    
-    [self setNeedsDisplay];
-}
-
-- (void)_timeDidChange:(NSNotification *)notification
-{
-    [self setNeedsDisplay];
-}
-
-- (id<CAAction>)actionForKey:(NSString *)key
-{
-    // We don't want to animate the contents of the layer.
-    if ([key isEqualToString:@"contents"])
-        return nil;
-    
-    return [super actionForKey:key];
-}
-
-- (void)setMovie:(QTMovie *)movie
-{
-    if (_movie == movie)
-        return;
-    
-    if (_movie) {
-        [[NSNotificationCenter defaultCenter] removeObserver:self 
-                                                        name:QTMovieRateDidChangeNotification 
-                                                      object:_movie];
-        [[NSNotificationCenter defaultCenter] removeObserver:self 
-                                                        name:QTMovieTimeDidChangeNotification 
-                                                      object:_movie];
-        [_movie release];
-    }
-    
-    _movie = [movie retain];
-    
-    if (_movie) {
-        [[NSNotificationCenter defaultCenter] addObserver:self
-                                                 selector:@selector(_rateDidChange:) 
-                                                     name:QTMovieRateDidChangeNotification 
-                                                   object:_movie];
-        [[NSNotificationCenter defaultCenter] addObserver:self
-                                                 selector:@selector(_timeDidChange:) 
-                                                     name:QTMovieTimeDidChangeNotification 
-                                                   object:_movie];
-        [self setNeedsDisplay];
-    }
-    
-}
-
-# pragma mark Event handling
-
-- (void)_setNewTimeForThumbCenterX:(CGFloat)centerX
-{
-    CGRect innerRect = [self _innerSliderRect];
-    
-    CGFloat fraction = (centerX - CGRectGetMinX(innerRect)) / CGRectGetWidth(innerRect);
-    if (fraction > 1.0)
-        fraction = 1.0;
-    else if (fraction < 0.0)
-        fraction = 0.0;
-    
-    NSTimeInterval newTime = fraction * [self _duration];
-    
-    [_movie setCurrentTime:QTMakeTimeWithTimeInterval(newTime)];
-    [self setNeedsDisplay];    
-}
-
-- (void)handleMouseDown:(CGPoint)point
-{
-    if (!_movie)
-        return;
-
-    if (CGRectContainsPoint([self _sliderRect], point)) {
-        _wasPlayingBeforeMouseDown = [self _isPlaying];
-        _isScrubbing = YES;
-
-        [_movie stop];
-        if (CGRectContainsPoint([self _sliderThumbRect], point))
-            _mouseDownXDelta = point.x - CGRectGetMidX([self _sliderThumbRect]);
-        else {
-            [self _setNewTimeForThumbCenterX:point.x];
-            _mouseDownXDelta = 0;
-        }
-    }
-}
-
-- (void)handleMouseUp:(CGPoint)point
-{
-    if (!_movie)
-        return;
-    
-    if (_isScrubbing) {
-        _isScrubbing = NO;
-        _mouseDownXDelta = 0;
-        
-        if (_wasPlayingBeforeMouseDown)
-            [_movie play];
-        return;
-    }
-    
-    if (CGRectContainsPoint([self _playPauseButtonRect], point)) {
-        if ([self _isPlaying])
-            [_movie stop];
-        else
-            [_movie play];
-        return;
-    }
-}
-
-- (void)handleMouseDragged:(CGPoint)point
-{
-    if (!_movie)
-        return;
-
-    if (!_isScrubbing)
-        return;
-
-    point.x -= _mouseDownXDelta;
-
-    [self _setNewTimeForThumbCenterX:point.x];
-}
-
-@end
diff --git a/Examples/NetscapeCoreAnimationMoviePlugin/NetscapeCoreAnimationMoviePlugin.xcodeproj/project.pbxproj b/Examples/NetscapeCoreAnimationMoviePlugin/NetscapeCoreAnimationMoviePlugin.xcodeproj/project.pbxproj
deleted file mode 100644 (file)
index fef3db9..0000000
+++ /dev/null
@@ -1,279 +0,0 @@
-// !$*UTF8*$!
-{
-       archiveVersion = 1;
-       classes = {
-       };
-       objectVersion = 46;
-       objects = {
-
-/* Begin PBXBuildFile section */
-               1A624E590DCBC7F6006898C8 /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = 1A624E580DCBC7F6006898C8 /* main.m */; };
-               1A6250420DCBC81B006898C8 /* Cocoa.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 1A6250410DCBC81B006898C8 /* Cocoa.framework */; };
-               1A80001B0FDB2C85000F3646 /* MovieControllerLayer.m in Sources */ = {isa = PBXBuildFile; fileRef = 1A80001A0FDB2C85000F3646 /* MovieControllerLayer.m */; };
-               1A80011A0FDB2CB2000F3646 /* Pause.tiff in Resources */ = {isa = PBXBuildFile; fileRef = 1A8001140FDB2CB2000F3646 /* Pause.tiff */; };
-               1A80011B0FDB2CB2000F3646 /* Play.tiff in Resources */ = {isa = PBXBuildFile; fileRef = 1A8001150FDB2CB2000F3646 /* Play.tiff */; };
-               1A80011C0FDB2CB2000F3646 /* SliderTrackCenter.tiff in Resources */ = {isa = PBXBuildFile; fileRef = 1A8001160FDB2CB2000F3646 /* SliderTrackCenter.tiff */; };
-               1A80011D0FDB2CB2000F3646 /* SliderTrackLeft.tiff in Resources */ = {isa = PBXBuildFile; fileRef = 1A8001170FDB2CB2000F3646 /* SliderTrackLeft.tiff */; };
-               1A80011E0FDB2CB2000F3646 /* SliderTrackRight.tiff in Resources */ = {isa = PBXBuildFile; fileRef = 1A8001180FDB2CB2000F3646 /* SliderTrackRight.tiff */; };
-               1A80011F0FDB2CB2000F3646 /* Thumb.tiff in Resources */ = {isa = PBXBuildFile; fileRef = 1A8001190FDB2CB2000F3646 /* Thumb.tiff */; };
-               1A8001470FDB2E65000F3646 /* QTKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 1A8001460FDB2E65000F3646 /* QTKit.framework */; };
-               1A8C87AA0EF2FBB3003F6E81 /* QuartzCore.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 1A8C87A90EF2FBB3003F6E81 /* QuartzCore.framework */; };
-               8D5B49A804867FD3000E48DA /* InfoPlist.strings in Resources */ = {isa = PBXBuildFile; fileRef = 8D5B49A704867FD3000E48DA /* InfoPlist.strings */; };
-/* End PBXBuildFile section */
-
-/* Begin PBXFileReference section */
-               089C167EFE841241C02AAC07 /* English */ = {isa = PBXFileReference; fileEncoding = 10; lastKnownFileType = text.plist.strings; name = English; path = English.lproj/InfoPlist.strings; sourceTree = "<group>"; };
-               1A624E580DCBC7F6006898C8 /* main.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = main.m; sourceTree = "<group>"; };
-               1A6250410DCBC81B006898C8 /* Cocoa.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Cocoa.framework; path = /System/Library/Frameworks/Cocoa.framework; sourceTree = "<absolute>"; };
-               1A8000190FDB2C85000F3646 /* MovieControllerLayer.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MovieControllerLayer.h; sourceTree = "<group>"; };
-               1A80001A0FDB2C85000F3646 /* MovieControllerLayer.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = MovieControllerLayer.m; sourceTree = "<group>"; };
-               1A8001140FDB2CB2000F3646 /* Pause.tiff */ = {isa = PBXFileReference; lastKnownFileType = image.tiff; path = Pause.tiff; sourceTree = "<group>"; };
-               1A8001150FDB2CB2000F3646 /* Play.tiff */ = {isa = PBXFileReference; lastKnownFileType = image.tiff; path = Play.tiff; sourceTree = "<group>"; };
-               1A8001160FDB2CB2000F3646 /* SliderTrackCenter.tiff */ = {isa = PBXFileReference; lastKnownFileType = image.tiff; path = SliderTrackCenter.tiff; sourceTree = "<group>"; };
-               1A8001170FDB2CB2000F3646 /* SliderTrackLeft.tiff */ = {isa = PBXFileReference; lastKnownFileType = image.tiff; path = SliderTrackLeft.tiff; sourceTree = "<group>"; };
-               1A8001180FDB2CB2000F3646 /* SliderTrackRight.tiff */ = {isa = PBXFileReference; lastKnownFileType = image.tiff; path = SliderTrackRight.tiff; sourceTree = "<group>"; };
-               1A8001190FDB2CB2000F3646 /* Thumb.tiff */ = {isa = PBXFileReference; lastKnownFileType = image.tiff; path = Thumb.tiff; sourceTree = "<group>"; };
-               1A8001460FDB2E65000F3646 /* QTKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = QTKit.framework; path = /System/Library/Frameworks/QTKit.framework; sourceTree = "<absolute>"; };
-               1A8C87A90EF2FBB3003F6E81 /* QuartzCore.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = QuartzCore.framework; path = /System/Library/Frameworks/QuartzCore.framework; sourceTree = "<absolute>"; };
-               8D576316048677EA00EA77CD /* NetscapeCoreAnimationMoviePlugin.plugin */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = NetscapeCoreAnimationMoviePlugin.plugin; sourceTree = BUILT_PRODUCTS_DIR; };
-               8D576317048677EA00EA77CD /* Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist; path = Info.plist; sourceTree = "<group>"; };
-/* End PBXFileReference section */
-
-/* Begin PBXFrameworksBuildPhase section */
-               8D576313048677EA00EA77CD /* Frameworks */ = {
-                       isa = PBXFrameworksBuildPhase;
-                       buildActionMask = 2147483647;
-                       files = (
-                               1A6250420DCBC81B006898C8 /* Cocoa.framework in Frameworks */,
-                               1A8001470FDB2E65000F3646 /* QTKit.framework in Frameworks */,
-                               1A8C87AA0EF2FBB3003F6E81 /* QuartzCore.framework in Frameworks */,
-                       );
-                       runOnlyForDeploymentPostprocessing = 0;
-               };
-/* End PBXFrameworksBuildPhase section */
-
-/* Begin PBXGroup section */
-               089C166AFE841209C02AAC07 /* NetscapeCoreAnimationMoviePlugin */ = {
-                       isa = PBXGroup;
-                       children = (
-                               08FB77AFFE84173DC02AAC07 /* Source */,
-                               089C167CFE841241C02AAC07 /* Resources */,
-                               089C1671FE841209C02AAC07 /* External Frameworks and Libraries */,
-                               19C28FB6FE9D52B211CA2CBB /* Products */,
-                               1A8001460FDB2E65000F3646 /* QTKit.framework */,
-                       );
-                       name = NetscapeCoreAnimationMoviePlugin;
-                       sourceTree = "<group>";
-               };
-               089C1671FE841209C02AAC07 /* External Frameworks and Libraries */ = {
-                       isa = PBXGroup;
-                       children = (
-                               1A6250410DCBC81B006898C8 /* Cocoa.framework */,
-                               1A8C87A90EF2FBB3003F6E81 /* QuartzCore.framework */,
-                       );
-                       name = "External Frameworks and Libraries";
-                       sourceTree = "<group>";
-               };
-               089C167CFE841241C02AAC07 /* Resources */ = {
-                       isa = PBXGroup;
-                       children = (
-                               8D576317048677EA00EA77CD /* Info.plist */,
-                               8D5B49A704867FD3000E48DA /* InfoPlist.strings */,
-                               1A8001140FDB2CB2000F3646 /* Pause.tiff */,
-                               1A8001150FDB2CB2000F3646 /* Play.tiff */,
-                               1A8001160FDB2CB2000F3646 /* SliderTrackCenter.tiff */,
-                               1A8001170FDB2CB2000F3646 /* SliderTrackLeft.tiff */,
-                               1A8001180FDB2CB2000F3646 /* SliderTrackRight.tiff */,
-                               1A8001190FDB2CB2000F3646 /* Thumb.tiff */,
-                       );
-                       name = Resources;
-                       sourceTree = "<group>";
-               };
-               08FB77AFFE84173DC02AAC07 /* Source */ = {
-                       isa = PBXGroup;
-                       children = (
-                               1A624E580DCBC7F6006898C8 /* main.m */,
-                               1A8000190FDB2C85000F3646 /* MovieControllerLayer.h */,
-                               1A80001A0FDB2C85000F3646 /* MovieControllerLayer.m */,
-                       );
-                       name = Source;
-                       sourceTree = "<group>";
-               };
-               19C28FB6FE9D52B211CA2CBB /* Products */ = {
-                       isa = PBXGroup;
-                       children = (
-                               8D576316048677EA00EA77CD /* NetscapeCoreAnimationMoviePlugin.plugin */,
-                       );
-                       name = Products;
-                       sourceTree = "<group>";
-               };
-/* End PBXGroup section */
-
-/* Begin PBXNativeTarget section */
-               8D57630D048677EA00EA77CD /* NetscapeCoreAnimationMoviePlugin */ = {
-                       isa = PBXNativeTarget;
-                       buildConfigurationList = 149C298308902C53008A9EFC /* Build configuration list for PBXNativeTarget "NetscapeCoreAnimationMoviePlugin" */;
-                       buildPhases = (
-                               8D576311048677EA00EA77CD /* Sources */,
-                               8D57630F048677EA00EA77CD /* Resources */,
-                               8D576313048677EA00EA77CD /* Frameworks */,
-                       );
-                       buildRules = (
-                       );
-                       dependencies = (
-                       );
-                       name = NetscapeCoreAnimationMoviePlugin;
-                       productInstallPath = "$(HOME)/Library/Bundles";
-                       productName = NetscapeCoreAnimationMoviePlugin;
-                       productReference = 8D576316048677EA00EA77CD /* NetscapeCoreAnimationMoviePlugin.plugin */;
-                       productType = "com.apple.product-type.bundle";
-               };
-/* End PBXNativeTarget section */
-
-/* Begin PBXProject section */
-               089C1669FE841209C02AAC07 /* Project object */ = {
-                       isa = PBXProject;
-                       buildConfigurationList = 149C298708902C53008A9EFC /* Build configuration list for PBXProject "NetscapeCoreAnimationMoviePlugin" */;
-                       compatibilityVersion = "Xcode 3.2";
-                       developmentRegion = English;
-                       hasScannedForEncodings = 1;
-                       knownRegions = (
-                               English,
-                               Japanese,
-                               French,
-                               German,
-                       );
-                       mainGroup = 089C166AFE841209C02AAC07 /* NetscapeCoreAnimationMoviePlugin */;
-                       projectDirPath = "";
-                       projectRoot = "";
-                       targets = (
-                               8D57630D048677EA00EA77CD /* NetscapeCoreAnimationMoviePlugin */,
-                       );
-               };
-/* End PBXProject section */
-
-/* Begin PBXResourcesBuildPhase section */
-               8D57630F048677EA00EA77CD /* Resources */ = {
-                       isa = PBXResourcesBuildPhase;
-                       buildActionMask = 2147483647;
-                       files = (
-                               8D5B49A804867FD3000E48DA /* InfoPlist.strings in Resources */,
-                               1A80011A0FDB2CB2000F3646 /* Pause.tiff in Resources */,
-                               1A80011B0FDB2CB2000F3646 /* Play.tiff in Resources */,
-                               1A80011C0FDB2CB2000F3646 /* SliderTrackCenter.tiff in Resources */,
-                               1A80011D0FDB2CB2000F3646 /* SliderTrackLeft.tiff in Resources */,
-                               1A80011E0FDB2CB2000F3646 /* SliderTrackRight.tiff in Resources */,
-                               1A80011F0FDB2CB2000F3646 /* Thumb.tiff in Resources */,
-                       );
-                       runOnlyForDeploymentPostprocessing = 0;
-               };
-/* End PBXResourcesBuildPhase section */
-
-/* Begin PBXSourcesBuildPhase section */
-               8D576311048677EA00EA77CD /* Sources */ = {
-                       isa = PBXSourcesBuildPhase;
-                       buildActionMask = 2147483647;
-                       files = (
-                               1A624E590DCBC7F6006898C8 /* main.m in Sources */,
-                               1A80001B0FDB2C85000F3646 /* MovieControllerLayer.m in Sources */,
-                       );
-                       runOnlyForDeploymentPostprocessing = 0;
-               };
-/* End PBXSourcesBuildPhase section */
-
-/* Begin PBXVariantGroup section */
-               8D5B49A704867FD3000E48DA /* InfoPlist.strings */ = {
-                       isa = PBXVariantGroup;
-                       children = (
-                               089C167EFE841241C02AAC07 /* English */,
-                       );
-                       name = InfoPlist.strings;
-                       sourceTree = "<group>";
-               };
-/* End PBXVariantGroup section */
-
-/* Begin XCBuildConfiguration section */
-               149C298408902C53008A9EFC /* Debug */ = {
-                       isa = XCBuildConfiguration;
-                       buildSettings = {
-                               COPY_PHASE_STRIP = NO;
-                               GCC_DEBUGGING_SYMBOLS = full;
-                               GCC_DYNAMIC_NO_PIC = NO;
-                               GCC_ENABLE_FIX_AND_CONTINUE = YES;
-                               GCC_MODEL_TUNING = G5;
-                               GCC_OPTIMIZATION_LEVEL = 0;
-                               INFOPLIST_FILE = Info.plist;
-                               INSTALL_PATH = "$(HOME)/Library/Bundles";
-                               PRODUCT_NAME = NetscapeCoreAnimationMoviePlugin;
-                               WRAPPER_EXTENSION = plugin;
-                               ZERO_LINK = YES;
-                       };
-                       name = Debug;
-               };
-               149C298508902C53008A9EFC /* Release */ = {
-                       isa = XCBuildConfiguration;
-                       buildSettings = {
-                               ARCHS = (
-                                       ppc,
-                                       i386,
-                               );
-                               GCC_DEBUGGING_SYMBOLS = full;
-                               GCC_GENERATE_DEBUGGING_SYMBOLS = NO;
-                               GCC_MODEL_TUNING = G5;
-                               GCC_OPTIMIZATION_LEVEL = 0;
-                               INFOPLIST_FILE = Info.plist;
-                               INSTALL_PATH = "$(HOME)/Library/Bundles";
-                               PRODUCT_NAME = NetscapeCoreAnimationMoviePlugin;
-                               WRAPPER_EXTENSION = plugin;
-                       };
-                       name = Release;
-               };
-               149C298808902C53008A9EFC /* Debug */ = {
-                       isa = XCBuildConfiguration;
-                       buildSettings = {
-                               ARCHS = "$(ARCHS_STANDARD_32_64_BIT)";
-                               ARCHS_STANDARD_32_64_BIT_PRE_XCODE_3_1 = "ppc i386 ppc64 x86_64";
-                               GCC_C_LANGUAGE_STANDARD = c99;
-                               GCC_WARN_ABOUT_RETURN_TYPE = YES;
-                               GCC_WARN_UNUSED_VARIABLE = YES;
-                               PREBINDING = NO;
-                               SDKROOT = macosx10.6;
-                       };
-                       name = Debug;
-               };
-               149C298908902C53008A9EFC /* Release */ = {
-                       isa = XCBuildConfiguration;
-                       buildSettings = {
-                               ARCHS = i386;
-                               ARCHS_STANDARD_32_64_BIT_PRE_XCODE_3_1 = "ppc i386 ppc64 x86_64";
-                               GCC_WARN_ABOUT_RETURN_TYPE = YES;
-                               GCC_WARN_UNUSED_VARIABLE = YES;
-                               PREBINDING = NO;
-                       };
-                       name = Release;
-               };
-/* End XCBuildConfiguration section */
-
-/* Begin XCConfigurationList section */
-               149C298308902C53008A9EFC /* Build configuration list for PBXNativeTarget "NetscapeCoreAnimationMoviePlugin" */ = {
-                       isa = XCConfigurationList;
-                       buildConfigurations = (
-                               149C298408902C53008A9EFC /* Debug */,
-                               149C298508902C53008A9EFC /* Release */,
-                       );
-                       defaultConfigurationIsVisible = 0;
-                       defaultConfigurationName = Release;
-               };
-               149C298708902C53008A9EFC /* Build configuration list for PBXProject "NetscapeCoreAnimationMoviePlugin" */ = {
-                       isa = XCConfigurationList;
-                       buildConfigurations = (
-                               149C298808902C53008A9EFC /* Debug */,
-                               149C298908902C53008A9EFC /* Release */,
-                       );
-                       defaultConfigurationIsVisible = 0;
-                       defaultConfigurationName = Release;
-               };
-/* End XCConfigurationList section */
-       };
-       rootObject = 089C1669FE841209C02AAC07 /* Project object */;
-}
diff --git a/Examples/NetscapeCoreAnimationMoviePlugin/Pause.tiff b/Examples/NetscapeCoreAnimationMoviePlugin/Pause.tiff
deleted file mode 100644 (file)
index b46fa57..0000000
Binary files a/Examples/NetscapeCoreAnimationMoviePlugin/Pause.tiff and /dev/null differ
diff --git a/Examples/NetscapeCoreAnimationMoviePlugin/Play.tiff b/Examples/NetscapeCoreAnimationMoviePlugin/Play.tiff
deleted file mode 100644 (file)
index 3071a6f..0000000
Binary files a/Examples/NetscapeCoreAnimationMoviePlugin/Play.tiff and /dev/null differ
diff --git a/Examples/NetscapeCoreAnimationMoviePlugin/SliderTrackCenter.tiff b/Examples/NetscapeCoreAnimationMoviePlugin/SliderTrackCenter.tiff
deleted file mode 100644 (file)
index bef6508..0000000
Binary files a/Examples/NetscapeCoreAnimationMoviePlugin/SliderTrackCenter.tiff and /dev/null differ
diff --git a/Examples/NetscapeCoreAnimationMoviePlugin/SliderTrackLeft.tiff b/Examples/NetscapeCoreAnimationMoviePlugin/SliderTrackLeft.tiff
deleted file mode 100644 (file)
index 1609297..0000000
Binary files a/Examples/NetscapeCoreAnimationMoviePlugin/SliderTrackLeft.tiff and /dev/null differ
diff --git a/Examples/NetscapeCoreAnimationMoviePlugin/SliderTrackRight.tiff b/Examples/NetscapeCoreAnimationMoviePlugin/SliderTrackRight.tiff
deleted file mode 100644 (file)
index 270c42b..0000000
Binary files a/Examples/NetscapeCoreAnimationMoviePlugin/SliderTrackRight.tiff and /dev/null differ
diff --git a/Examples/NetscapeCoreAnimationMoviePlugin/Thumb.tiff b/Examples/NetscapeCoreAnimationMoviePlugin/Thumb.tiff
deleted file mode 100644 (file)
index 392ce56..0000000
Binary files a/Examples/NetscapeCoreAnimationMoviePlugin/Thumb.tiff and /dev/null differ
diff --git a/Examples/NetscapeCoreAnimationMoviePlugin/main.m b/Examples/NetscapeCoreAnimationMoviePlugin/main.m
deleted file mode 100644 (file)
index 3ac5c81..0000000
+++ /dev/null
@@ -1,393 +0,0 @@
-/*
-     File: MovieControllerLayer.m
- Disclaimer: IMPORTANT:  This Apple software is supplied to you by Apple
- Inc. ("Apple") in consideration of your agreement to the following
- terms, and your use, installation, modification or redistribution of
- this Apple software constitutes acceptance of these terms.  If you do
- not agree with these terms, please do not use, install, modify or
- redistribute this Apple software.
- In consideration of your agreement to abide by the following terms, and
- subject to these terms, Apple grants you a personal, non-exclusive
- license, under Apple's copyrights in this original Apple software (the
- "Apple Software"), to use, reproduce, modify and redistribute the Apple
- Software, with or without modifications, in source and/or binary forms;
- provided that if you redistribute the Apple Software in its entirety and
- without modifications, you must retain this notice and the following
- text and disclaimers in all such redistributions of the Apple Software.
- Neither the name, trademarks, service marks or logos of Apple Inc. may
- be used to endorse or promote products derived from the Apple Software
- without specific prior written permission from Apple.  Except as
- expressly stated in this notice, no other rights or licenses, express or
- implied, are granted by Apple herein, including but not limited to any
- patent rights that may be infringed by your derivative works or by other
- works in which the Apple Software may be incorporated.
- The Apple Software is provided by Apple on an "AS IS" basis.  APPLE
- MAKES NO WARRANTIES, EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION
- THE IMPLIED WARRANTIES OF NON-INFRINGEMENT, MERCHANTABILITY AND FITNESS
- FOR A PARTICULAR PURPOSE, REGARDING THE APPLE SOFTWARE OR ITS USE AND
- OPERATION ALONE OR IN COMBINATION WITH YOUR PRODUCTS.
- IN NO EVENT SHALL APPLE BE LIABLE FOR ANY SPECIAL, INDIRECT, INCIDENTAL
- OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
- SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
- INTERRUPTION) ARISING IN ANY WAY OUT OF THE USE, REPRODUCTION,
- MODIFICATION AND/OR DISTRIBUTION OF THE APPLE SOFTWARE, HOWEVER CAUSED
- AND WHETHER UNDER THEORY OF CONTRACT, TORT (INCLUDING NEGLIGENCE),
- STRICT LIABILITY OR OTHERWISE, EVEN IF APPLE HAS BEEN ADVISED OF THE
- POSSIBILITY OF SUCH DAMAGE.
- Copyright (C) 2009 Apple Inc. All Rights Reserved.
- */
-
-#import <WebKit/npapi.h>
-#import <WebKit/npfunctions.h>
-#import <WebKit/npruntime.h>
-
-#import <QuartzCore/QuartzCore.h>
-#import <QTKit/QTKit.h>
-
-#import "MovieControllerLayer.h"
-
-// Browser function table
-static NPNetscapeFuncs* browser;
-
-// Structure for per-instance storage
-typedef struct PluginObject
-{
-    NPP npp;
-    
-    NPWindow window;
-    
-    CALayer *rootLayer;
-    MovieControllerLayer *controllerLayer;
-    QTMovieLayer *movieLayer;
-    
-    CALayer *mouseDownLayer;
-    
-    NSURL *movieURL;
-    QTMovie *movie;
-} PluginObject;
-
-NPError NPP_New(NPMIMEType pluginType, NPP instance, uint16_t mode, int16_t argc, char* argn[], char* argv[], NPSavedData* saved);
-NPError NPP_Destroy(NPP instance, NPSavedData** save);
-NPError NPP_SetWindow(NPP instance, NPWindow* window);
-NPError NPP_NewStream(NPP instance, NPMIMEType type, NPStream* stream, NPBool seekable, uint16* stype);
-NPError NPP_DestroyStream(NPP instance, NPStream* stream, NPReason reason);
-int32_t NPP_WriteReady(NPP instance, NPStream* stream);
-int32_t NPP_Write(NPP instance, NPStream* stream, int32_t offset, int32_t len, void* buffer);
-void NPP_StreamAsFile(NPP instance, NPStream* stream, const char* fname);
-void NPP_Print(NPP instance, NPPrint* platformPrint);
-int16_t NPP_HandleEvent(NPP instance, void* event);
-void NPP_URLNotify(NPP instance, const char* URL, NPReason reason, void* notifyData);
-NPError NPP_GetValue(NPP instance, NPPVariable variable, void *value);
-NPError NPP_SetValue(NPP instance, NPNVariable variable, void *value);
-
-#pragma export on
-// Mach-o entry points
-NPError NP_Initialize(NPNetscapeFuncs *browserFuncs);
-NPError NP_GetEntryPoints(NPPluginFuncs *pluginFuncs);
-void NP_Shutdown(void);
-#pragma export off
-
-NPError NP_Initialize(NPNetscapeFuncs* browserFuncs)
-{
-    browser = browserFuncs;
-    return NPERR_NO_ERROR;
-}
-
-NPError NP_GetEntryPoints(NPPluginFuncs* pluginFuncs)
-{
-    pluginFuncs->version = 11;
-    pluginFuncs->size = sizeof(pluginFuncs);
-    pluginFuncs->newp = NPP_New;
-    pluginFuncs->destroy = NPP_Destroy;
-    pluginFuncs->setwindow = NPP_SetWindow;
-    pluginFuncs->newstream = NPP_NewStream;
-    pluginFuncs->destroystream = NPP_DestroyStream;
-    pluginFuncs->asfile = NPP_StreamAsFile;
-    pluginFuncs->writeready = NPP_WriteReady;
-    pluginFuncs->write = (NPP_WriteProcPtr)NPP_Write;
-    pluginFuncs->print = NPP_Print;
-    pluginFuncs->event = NPP_HandleEvent;
-    pluginFuncs->urlnotify = NPP_URLNotify;
-    pluginFuncs->getvalue = NPP_GetValue;
-    pluginFuncs->setvalue = NPP_SetValue;
-    
-    return NPERR_NO_ERROR;
-}
-
-void NP_Shutdown(void)
-{
-
-}
-
-NPError NPP_New(NPMIMEType pluginType, NPP instance, uint16_t mode, int16_t argc, char* argn[], char* argv[], NPSavedData* saved)
-{
-    // Create per-instance storage
-    PluginObject *obj = (PluginObject *)malloc(sizeof(PluginObject));
-    bzero(obj, sizeof(PluginObject));
-    
-    obj->npp = instance;
-    instance->pdata = obj;
-    
-    // Ask the browser if it supports the Core Animation drawing model
-    NPBool supportsCoreAnimation;
-    if (browser->getvalue(instance, NPNVsupportsCoreAnimationBool, &supportsCoreAnimation) != NPERR_NO_ERROR)
-        supportsCoreAnimation = FALSE;
-    
-    if (!supportsCoreAnimation)
-        return NPERR_INCOMPATIBLE_VERSION_ERROR;
-    
-    // If the browser supports the Core Animation drawing model, enable it.
-    browser->setvalue(instance, NPPVpluginDrawingModel, (void *)NPDrawingModelCoreAnimation);
-
-    // If the browser supports the Cocoa event model, enable it.
-    NPBool supportsCocoa;
-    if (browser->getvalue(instance, NPNVsupportsCocoaBool, &supportsCocoa) != NPERR_NO_ERROR)
-        supportsCocoa = FALSE;
-    
-    if (!supportsCocoa)
-        return NPERR_INCOMPATIBLE_VERSION_ERROR;
-    
-    browser->setvalue(instance, NPPVpluginEventModel, (void *)NPEventModelCocoa);
-    
-    for (int16_t i = 0; i < argc; i++) {
-        if (strcasecmp(argn[i], "movieurl") == 0) {
-            NSString *urlString = [NSString stringWithUTF8String:argv[i]];
-            if (urlString) 
-                obj->movieURL = [[NSURL URLWithString:urlString] retain];
-            break;
-        }
-        
-    }
-    
-    return NPERR_NO_ERROR;
-}
-
-NPError NPP_Destroy(NPP instance, NPSavedData** save)
-{
-    // Free per-instance storage
-    PluginObject *obj = instance->pdata;
-
-    [obj->movie stop];
-    [obj->rootLayer release];
-    
-    free(obj);
-    
-    return NPERR_NO_ERROR;
-}
-
-NPError NPP_SetWindow(NPP instance, NPWindow* window)
-{
-    PluginObject *obj = instance->pdata;
-    obj->window = *window;
-
-    return NPERR_NO_ERROR;
-}
-
-NPError NPP_NewStream(NPP instance, NPMIMEType type, NPStream* stream, NPBool seekable, uint16* stype)
-{
-    *stype = NP_ASFILEONLY;
-    return NPERR_NO_ERROR;
-}
-
-NPError NPP_DestroyStream(NPP instance, NPStream* stream, NPReason reason)
-{
-    return NPERR_NO_ERROR;
-}
-
-int32_t NPP_WriteReady(NPP instance, NPStream* stream)
-{
-    return 0;
-}
-
-int32_t NPP_Write(NPP instance, NPStream* stream, int32_t offset, int32_t len, void* buffer)
-{
-    return 0;
-}
-
-void NPP_StreamAsFile(NPP instance, NPStream* stream, const char* fname)
-{
-}
-
-void NPP_Print(NPP instance, NPPrint* platformPrint)
-{
-
-}
-
-static void handleMouseDown(PluginObject *obj, NPCocoaEvent *event)
-{
-    CGPoint point = CGPointMake(event->data.mouse.pluginX, 
-                                // Flip the y coordinate
-                                obj->window.height - event->data.mouse.pluginY);
-    
-    obj->mouseDownLayer = [obj->rootLayer hitTest:point];
-    if (obj->mouseDownLayer == obj->controllerLayer) {
-        [obj->controllerLayer handleMouseDown:[obj->rootLayer convertPoint:point toLayer:obj->controllerLayer]];
-        return;
-    }    
-}
-
-static void togglePlayPause(PluginObject *obj)
-{
-    if (!obj->movie)
-        return;
-    
-    if ([obj->movie rate] == 0)
-        [obj->movie play];
-    else
-        [obj->movie stop];
-
-}
-
-static void handleMouseUp(PluginObject *obj, NPCocoaEvent *event)
-{
-    CGPoint point = CGPointMake(event->data.mouse.pluginX, 
-                                // Flip the y coordinate
-                                obj->window.height - event->data.mouse.pluginY);
-
-    CALayer *mouseDownLayer = obj->mouseDownLayer;
-    obj->mouseDownLayer = nil;
-    if (mouseDownLayer == obj->controllerLayer) {
-        [obj->controllerLayer handleMouseUp:[obj->rootLayer convertPoint:point toLayer:obj->controllerLayer]];
-        return;
-    }
-}
-
-static void handleMouseDragged(PluginObject *obj, NPCocoaEvent *event)
-{
-    CGPoint point = CGPointMake(event->data.mouse.pluginX, 
-                                // Flip the y coordinate
-                                obj->window.height - event->data.mouse.pluginY);
-    
-    if (obj->mouseDownLayer == obj->controllerLayer) {
-        [obj->controllerLayer handleMouseDragged:[obj->rootLayer convertPoint:point toLayer:obj->controllerLayer]];
-        return;
-    }    
-}
-
-static void handleMouseEntered(PluginObject *obj)
-{
-    // Show the controller layer.
-    obj->controllerLayer.opacity = 1.0;
-}
-
-static void handleMouseExited(PluginObject *obj)
-{
-    // Hide the controller layer if the movie is playing.
-    if ([obj->movie rate])
-        obj->controllerLayer.opacity = 0.0;
-}
-
-static int handleKeyDown(PluginObject *obj, NPCocoaEvent *event)
-{
-    NSString *characters = (NSString *)event->data.key.characters;
-    
-    if ([characters length] == 1 && [characters characterAtIndex:0] == ' ') {
-        togglePlayPause(obj);
-        return 1;
-    }
-    
-    return 0;
-}
-
-
-static int handleScrollEvent(PluginObject *obj, NPCocoaEvent *event)
-{
-    double delta = event->data.mouse.deltaY;
-    if (delta < 0)
-        [obj->movie stepForward];
-    else
-        [obj->movie stepBackward];
-    return 0;
-}
-
-
-
-int16_t NPP_HandleEvent(NPP instance, void* event)
-{
-    PluginObject *obj = instance->pdata;
-
-    NPCocoaEvent *cocoaEvent = event;
-    
-    switch(cocoaEvent->type) {
-        case NPCocoaEventMouseDown:
-            handleMouseDown(obj, cocoaEvent);
-            return 1;
-        case NPCocoaEventMouseUp:
-            handleMouseUp(obj, cocoaEvent);
-            return 1;
-        case NPCocoaEventMouseDragged:
-            handleMouseDragged(obj, cocoaEvent);
-            return 1;
-        case NPCocoaEventMouseEntered:
-            handleMouseEntered(obj);
-            return 1;
-        case NPCocoaEventMouseExited:
-            handleMouseExited(obj);
-            return 1;
-        case NPCocoaEventKeyDown:
-            return handleKeyDown(obj, cocoaEvent);
-        case NPCocoaEventScrollWheel:
-            return handleScrollEvent(obj, cocoaEvent);
-    }
-    
-    return 0;
-}
-
-void NPP_URLNotify(NPP instance, const char* url, NPReason reason, void* notifyData)
-{
-
-}
-
-NPError NPP_GetValue(NPP instance, NPPVariable variable, void *value)
-{
-    PluginObject *obj = instance->pdata;
-
-    switch (variable) {
-        case NPPVpluginCoreAnimationLayer:
-            if (!obj->rootLayer) {
-                // Setup layer hierarchy.
-                obj->rootLayer = [[CALayer layer] retain];
-                
-                obj->movieLayer = [QTMovieLayer layer];
-                obj->movieLayer.autoresizingMask = kCALayerWidthSizable | kCALayerHeightSizable;
-                [obj->rootLayer addSublayer:obj->movieLayer];
-
-                obj->controllerLayer = [MovieControllerLayer layer];
-                [obj->rootLayer addSublayer:obj->controllerLayer];
-                
-                if (obj->movieURL) {
-                    NSDictionary *attributes = [NSDictionary dictionaryWithObjectsAndKeys:obj->movieURL, QTMovieURLAttribute,
-                                                @YES, QTMovieOpenForPlaybackAttribute,
-                                                @YES, QTMovieLoopsAttribute,
-                                                nil];
-                    obj->movie = [QTMovie movieWithAttributes:attributes error:nil];
-
-                    if (obj->movie) {
-                        obj->movieLayer.movie = obj->movie;
-                        [obj->controllerLayer setMovie:obj->movie];
-                    }
-                }
-                    
-            }
-            
-            // Make sure to return a retained layer
-            *((CALayer **)value) = [obj->rootLayer retain];
-            
-            return NPERR_NO_ERROR;
-            
-        default:
-            return NPERR_GENERIC_ERROR;
-    }
-}
-
-NPError NPP_SetValue(NPP instance, NPNVariable variable, void *value)
-{
-    return NPERR_GENERIC_ERROR;
-}
diff --git a/Examples/NetscapeCoreAnimationMoviePlugin/test.html b/Examples/NetscapeCoreAnimationMoviePlugin/test.html
deleted file mode 100644 (file)
index 0ffb77b..0000000
+++ /dev/null
@@ -1,18 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/1999/REC-html401-19991224/loose.dtd">
-<html>
-<head>
-<title>Netscape Core Animation Movie Plug-In</title>
-</head>
-<body>
-<div>
-<!--
-    <embed width="848" height="480" movieurl="http://movies.apple.com/movies/disney/up/up-tlr2_480p.mov"
-        type="test/x-netscape-core-animation-movie-plugin"></embed>
--->
-    <embed width="1280" height="720" movieurl="http://movies.apple.com/movies/disney/up/up-tlr2_720p.mov"
-        type="test/x-netscape-core-animation-movie-plugin"></embed>
-
-
-</div>
-</body>
-</html>
diff --git a/Examples/NetscapeCoreAnimationPlugin/Composition.qtz b/Examples/NetscapeCoreAnimationPlugin/Composition.qtz
deleted file mode 100644 (file)
index 53c0843..0000000
Binary files a/Examples/NetscapeCoreAnimationPlugin/Composition.qtz and /dev/null differ
diff --git a/Examples/NetscapeCoreAnimationPlugin/English.lproj/InfoPlist.strings b/Examples/NetscapeCoreAnimationPlugin/English.lproj/InfoPlist.strings
deleted file mode 100644 (file)
index 5e45963..0000000
Binary files a/Examples/NetscapeCoreAnimationPlugin/English.lproj/InfoPlist.strings and /dev/null differ
diff --git a/Examples/NetscapeCoreAnimationPlugin/Info.plist b/Examples/NetscapeCoreAnimationPlugin/Info.plist
deleted file mode 100644 (file)
index 146bc0d..0000000
+++ /dev/null
@@ -1,36 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
-<plist version="1.0">
-<dict>
-       <key>CFBundleDevelopmentRegion</key>
-       <string>English</string>
-       <key>CFBundleExecutable</key>
-       <string>NetscapeCoreAnimationPlugin</string>
-       <key>CFBundleIconFile</key>
-       <string></string>
-       <key>CFBundleIdentifier</key>
-       <string>com.apple.netscapecoreanimationplugin</string>
-       <key>CFBundleInfoDictionaryVersion</key>
-       <string>6.0</string>
-       <key>CFBundlePackageType</key>
-       <string>BRPL</string>
-       <key>CFBundleShortVersionString</key>
-       <string>1.0</string>
-       <key>CFBundleSignature</key>
-       <string>????</string>
-       <key>CFBundleVersion</key>
-       <string>1.0</string>
-       <key>WebPluginDescription</key>
-       <string>Simple Netscape plug-in that draws using Core Animation and handles events using the Cocoa event model</string>
-       <key>WebPluginMIMETypes</key>
-       <dict>
-               <key>test/x-netscape-core-animation-plugin</key>
-               <dict>
-                       <key>WebPluginTypeDescription</key>
-                       <string>Netscape Core Animation Plug-in</string>
-               </dict>
-       </dict>
-       <key>WebPluginName</key>
-       <string>Netscape Core Animation Plug-in</string>
-</dict>
-</plist>
diff --git a/Examples/NetscapeCoreAnimationPlugin/NetscapeCoreAnimationPlugin.xcodeproj/project.pbxproj b/Examples/NetscapeCoreAnimationPlugin/NetscapeCoreAnimationPlugin.xcodeproj/project.pbxproj
deleted file mode 100644 (file)
index a1e3390..0000000
+++ /dev/null
@@ -1,251 +0,0 @@
-// !$*UTF8*$!
-{
-       archiveVersion = 1;
-       classes = {
-       };
-       objectVersion = 42;
-       objects = {
-
-/* Begin PBXBuildFile section */
-               1A1BA1760EF2FB3200754486 /* Composition.qtz in Resources */ = {isa = PBXBuildFile; fileRef = 1A1BA1750EF2FB3200754486 /* Composition.qtz */; };
-               1A624E590DCBC7F6006898C8 /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = 1A624E580DCBC7F6006898C8 /* main.m */; };
-               1A6250420DCBC81B006898C8 /* Cocoa.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 1A6250410DCBC81B006898C8 /* Cocoa.framework */; };
-               1A8C86AA0EF2FB8F003F6E81 /* Quartz.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 1A8C86A90EF2FB8F003F6E81 /* Quartz.framework */; };
-               1A8C87AA0EF2FBB3003F6E81 /* QuartzCore.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 1A8C87A90EF2FBB3003F6E81 /* QuartzCore.framework */; };
-               8D5B49A804867FD3000E48DA /* InfoPlist.strings in Resources */ = {isa = PBXBuildFile; fileRef = 8D5B49A704867FD3000E48DA /* InfoPlist.strings */; };
-/* End PBXBuildFile section */
-
-/* Begin PBXFileReference section */
-               089C167EFE841241C02AAC07 /* English */ = {isa = PBXFileReference; fileEncoding = 10; lastKnownFileType = text.plist.strings; name = English; path = English.lproj/InfoPlist.strings; sourceTree = "<group>"; };
-               1A1BA1750EF2FB3200754486 /* Composition.qtz */ = {isa = PBXFileReference; lastKnownFileType = file.bplist; path = Composition.qtz; sourceTree = "<group>"; };
-               1A624E580DCBC7F6006898C8 /* main.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = main.m; sourceTree = "<group>"; };
-               1A6250410DCBC81B006898C8 /* Cocoa.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Cocoa.framework; path = /System/Library/Frameworks/Cocoa.framework; sourceTree = "<absolute>"; };
-               1A8C86A90EF2FB8F003F6E81 /* Quartz.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Quartz.framework; path = /System/Library/Frameworks/Quartz.framework; sourceTree = "<absolute>"; };
-               1A8C87A90EF2FBB3003F6E81 /* QuartzCore.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = QuartzCore.framework; path = /System/Library/Frameworks/QuartzCore.framework; sourceTree = "<absolute>"; };
-               8D576316048677EA00EA77CD /* NetscapeCoreAnimationPlugin.plugin */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = NetscapeCoreAnimationPlugin.plugin; sourceTree = BUILT_PRODUCTS_DIR; };
-               8D576317048677EA00EA77CD /* Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist; path = Info.plist; sourceTree = "<group>"; };
-/* End PBXFileReference section */
-
-/* Begin PBXFrameworksBuildPhase section */
-               8D576313048677EA00EA77CD /* Frameworks */ = {
-                       isa = PBXFrameworksBuildPhase;
-                       buildActionMask = 2147483647;
-                       files = (
-                               1A6250420DCBC81B006898C8 /* Cocoa.framework in Frameworks */,
-                               1A8C86AA0EF2FB8F003F6E81 /* Quartz.framework in Frameworks */,
-                               1A8C87AA0EF2FBB3003F6E81 /* QuartzCore.framework in Frameworks */,
-                       );
-                       runOnlyForDeploymentPostprocessing = 0;
-               };
-/* End PBXFrameworksBuildPhase section */
-
-/* Begin PBXGroup section */
-               089C166AFE841209C02AAC07 /* NetscapeCoreAnimationPlugin */ = {
-                       isa = PBXGroup;
-                       children = (
-                               08FB77AFFE84173DC02AAC07 /* Source */,
-                               089C167CFE841241C02AAC07 /* Resources */,
-                               089C1671FE841209C02AAC07 /* External Frameworks and Libraries */,
-                               19C28FB6FE9D52B211CA2CBB /* Products */,
-                       );
-                       name = NetscapeCoreAnimationPlugin;
-                       sourceTree = "<group>";
-               };
-               089C1671FE841209C02AAC07 /* External Frameworks and Libraries */ = {
-                       isa = PBXGroup;
-                       children = (
-                               1A6250410DCBC81B006898C8 /* Cocoa.framework */,
-                               1A8C86A90EF2FB8F003F6E81 /* Quartz.framework */,
-                               1A8C87A90EF2FBB3003F6E81 /* QuartzCore.framework */,
-                       );
-                       name = "External Frameworks and Libraries";
-                       sourceTree = "<group>";
-               };
-               089C167CFE841241C02AAC07 /* Resources */ = {
-                       isa = PBXGroup;
-                       children = (
-                               1A1BA1750EF2FB3200754486 /* Composition.qtz */,
-                               8D576317048677EA00EA77CD /* Info.plist */,
-                               8D5B49A704867FD3000E48DA /* InfoPlist.strings */,
-                       );
-                       name = Resources;
-                       sourceTree = "<group>";
-               };
-               08FB77AFFE84173DC02AAC07 /* Source */ = {
-                       isa = PBXGroup;
-                       children = (
-                               1A624E580DCBC7F6006898C8 /* main.m */,
-                       );
-                       name = Source;
-                       sourceTree = "<group>";
-               };
-               19C28FB6FE9D52B211CA2CBB /* Products */ = {
-                       isa = PBXGroup;
-                       children = (
-                               8D576316048677EA00EA77CD /* NetscapeCoreAnimationPlugin.plugin */,
-                       );
-                       name = Products;
-                       sourceTree = "<group>";
-               };
-/* End PBXGroup section */
-
-/* Begin PBXNativeTarget section */
-               8D57630D048677EA00EA77CD /* NetscapeCoreAnimationPlugin */ = {
-                       isa = PBXNativeTarget;
-                       buildConfigurationList = 149C298308902C53008A9EFC /* Build configuration list for PBXNativeTarget "NetscapeCoreAnimationPlugin" */;
-                       buildPhases = (
-                               8D576311048677EA00EA77CD /* Sources */,
-                               8D57630F048677EA00EA77CD /* Resources */,
-                               8D576313048677EA00EA77CD /* Frameworks */,
-                       );
-                       buildRules = (
-                       );
-                       dependencies = (
-                       );
-                       name = NetscapeCoreAnimationPlugin;
-                       productInstallPath = "$(HOME)/Library/Bundles";
-                       productName = NetscapeCoreAnimationPlugin;
-                       productReference = 8D576316048677EA00EA77CD /* NetscapeCoreAnimationPlugin.plugin */;
-                       productType = "com.apple.product-type.bundle";
-               };
-/* End PBXNativeTarget section */
-
-/* Begin PBXProject section */
-               089C1669FE841209C02AAC07 /* Project object */ = {
-                       isa = PBXProject;
-                       buildConfigurationList = 149C298708902C53008A9EFC /* Build configuration list for PBXProject "NetscapeCoreAnimationPlugin" */;
-                       compatibilityVersion = "Xcode 2.4";
-                       developmentRegion = English;
-                       hasScannedForEncodings = 1;
-                       knownRegions = (
-                               English,
-                               Japanese,
-                               French,
-                               German,
-                       );
-                       mainGroup = 089C166AFE841209C02AAC07 /* NetscapeCoreAnimationPlugin */;
-                       projectDirPath = "";
-                       projectRoot = "";
-                       targets = (
-                               8D57630D048677EA00EA77CD /* NetscapeCoreAnimationPlugin */,
-                       );
-               };
-/* End PBXProject section */
-
-/* Begin PBXResourcesBuildPhase section */
-               8D57630F048677EA00EA77CD /* Resources */ = {
-                       isa = PBXResourcesBuildPhase;
-                       buildActionMask = 2147483647;
-                       files = (
-                               1A1BA1760EF2FB3200754486 /* Composition.qtz in Resources */,
-                               8D5B49A804867FD3000E48DA /* InfoPlist.strings in Resources */,
-                       );
-                       runOnlyForDeploymentPostprocessing = 0;
-               };
-/* End PBXResourcesBuildPhase section */
-
-/* Begin PBXSourcesBuildPhase section */
-               8D576311048677EA00EA77CD /* Sources */ = {
-                       isa = PBXSourcesBuildPhase;
-                       buildActionMask = 2147483647;
-                       files = (
-                               1A624E590DCBC7F6006898C8 /* main.m in Sources */,
-                       );
-                       runOnlyForDeploymentPostprocessing = 0;
-               };
-/* End PBXSourcesBuildPhase section */
-
-/* Begin PBXVariantGroup section */
-               8D5B49A704867FD3000E48DA /* InfoPlist.strings */ = {
-                       isa = PBXVariantGroup;
-                       children = (
-                               089C167EFE841241C02AAC07 /* English */,
-                       );
-                       name = InfoPlist.strings;
-                       sourceTree = "<group>";
-               };
-/* End PBXVariantGroup section */
-
-/* Begin XCBuildConfiguration section */
-               149C298408902C53008A9EFC /* Debug */ = {
-                       isa = XCBuildConfiguration;
-                       buildSettings = {
-                               COPY_PHASE_STRIP = NO;
-                               GCC_DEBUGGING_SYMBOLS = full;
-                               GCC_DYNAMIC_NO_PIC = NO;
-                               GCC_ENABLE_FIX_AND_CONTINUE = YES;
-                               GCC_MODEL_TUNING = G5;
-                               GCC_OPTIMIZATION_LEVEL = 0;
-                               INFOPLIST_FILE = Info.plist;
-                               INSTALL_PATH = "$(HOME)/Library/Bundles";
-                               PRODUCT_NAME = NetscapeCoreAnimationPlugin;
-                               WRAPPER_EXTENSION = plugin;
-                               ZERO_LINK = YES;
-                       };
-                       name = Debug;
-               };
-               149C298508902C53008A9EFC /* Release */ = {
-                       isa = XCBuildConfiguration;
-                       buildSettings = {
-                               ARCHS = (
-                                       ppc,
-                                       i386,
-                               );
-                               GCC_DEBUGGING_SYMBOLS = full;
-                               GCC_GENERATE_DEBUGGING_SYMBOLS = NO;
-                               GCC_MODEL_TUNING = G5;
-                               GCC_OPTIMIZATION_LEVEL = 0;
-                               INFOPLIST_FILE = Info.plist;
-                               INSTALL_PATH = "$(HOME)/Library/Bundles";
-                               PRODUCT_NAME = NetscapeCoreAnimationPlugin;
-                               WRAPPER_EXTENSION = plugin;
-                       };
-                       name = Release;
-               };
-               149C298808902C53008A9EFC /* Debug */ = {
-                       isa = XCBuildConfiguration;
-                       buildSettings = {
-                               ARCHS = i386;
-                               ARCHS_STANDARD_32_64_BIT_PRE_XCODE_3_1 = "ppc i386 ppc64 x86_64";
-                               GCC_WARN_ABOUT_RETURN_TYPE = YES;
-                               GCC_WARN_UNUSED_VARIABLE = YES;
-                               PREBINDING = NO;
-                       };
-                       name = Debug;
-               };
-               149C298908902C53008A9EFC /* Release */ = {
-                       isa = XCBuildConfiguration;
-                       buildSettings = {
-                               ARCHS = i386;
-                               ARCHS_STANDARD_32_64_BIT_PRE_XCODE_3_1 = "ppc i386 ppc64 x86_64";
-                               GCC_WARN_ABOUT_RETURN_TYPE = YES;
-                               GCC_WARN_UNUSED_VARIABLE = YES;
-                               PREBINDING = NO;
-                       };
-                       name = Release;
-               };
-/* End XCBuildConfiguration section */
-
-/* Begin XCConfigurationList section */
-               149C298308902C53008A9EFC /* Build configuration list for PBXNativeTarget "NetscapeCoreAnimationPlugin" */ = {
-                       isa = XCConfigurationList;
-                       buildConfigurations = (
-                               149C298408902C53008A9EFC /* Debug */,
-                               149C298508902C53008A9EFC /* Release */,
-                       );
-                       defaultConfigurationIsVisible = 0;
-                       defaultConfigurationName = Release;
-               };
-               149C298708902C53008A9EFC /* Build configuration list for PBXProject "NetscapeCoreAnimationPlugin" */ = {
-                       isa = XCConfigurationList;
-                       buildConfigurations = (
-                               149C298808902C53008A9EFC /* Debug */,
-                               149C298908902C53008A9EFC /* Release */,
-                       );
-                       defaultConfigurationIsVisible = 0;
-                       defaultConfigurationName = Release;
-               };
-/* End XCConfigurationList section */
-       };
-       rootObject = 089C1669FE841209C02AAC07 /* Project object */;
-}
diff --git a/Examples/NetscapeCoreAnimationPlugin/main.m b/Examples/NetscapeCoreAnimationPlugin/main.m
deleted file mode 100644 (file)
index fa26880..0000000
+++ /dev/null
@@ -1,246 +0,0 @@
-/*
- IMPORTANT:  This Apple software is supplied to you by Apple Inc. ("Apple") in
- consideration of your agreement to the following terms, and your use, installation, 
- modification or redistribution of this Apple software constitutes acceptance of these 
- terms.  If you do not agree with these terms, please do not use, install, modify or 
- redistribute this Apple software.
- In consideration of your agreement to abide by the following terms, and subject to these 
- terms, Apple grants you a personal, non-exclusive license, under Apple’s copyrights in 
- this original Apple software (the "Apple Software"), to use, reproduce, modify and 
- redistribute the Apple Software, with or without modifications, in source and/or binary 
- forms; provided that if you redistribute the Apple Software in its entirety and without 
- modifications, you must retain this notice and the following text and disclaimers in all 
- such redistributions of the Apple Software.  Neither the name, trademarks, service marks 
- or logos of Apple Inc. may be used to endorse or promote products derived from 
- the Apple Software without specific prior written permission from Apple. Except as expressly
- stated in this notice, no other rights or licenses, express or implied, are granted by Apple
- herein, including but not limited to any patent rights that may be infringed by your 
- derivative works or by other works in which the Apple Software may be incorporated.
- The Apple Software is provided by Apple on an "AS IS" basis.  APPLE MAKES NO WARRANTIES, 
- EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION THE IMPLIED WARRANTIES OF NON-INFRINGEMENT, 
- MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE, REGARDING THE APPLE SOFTWARE OR ITS 
- USE AND OPERATION ALONE OR IN COMBINATION WITH YOUR PRODUCTS.
- IN NO EVENT SHALL APPLE BE LIABLE FOR ANY SPECIAL, INDIRECT, INCIDENTAL OR CONSEQUENTIAL 
- DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS 
- OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) ARISING IN ANY WAY OUT OF THE USE, 
- REPRODUCTION, MODIFICATION AND/OR DISTRIBUTION OF THE APPLE SOFTWARE, HOWEVER CAUSED AND 
- WHETHER UNDER THEORY OF CONTRACT, TORT (INCLUDING NEGLIGENCE), STRICT LIABILITY OR 
- OTHERWISE, EVEN IF APPLE HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-
-#import <WebKit/npapi.h>
-#import <WebKit/npfunctions.h>
-#import <WebKit/npruntime.h>
-
-#import <Cocoa/Cocoa.h>
-#import <Quartz/Quartz.h>
-#import <QuartzCore/QuartzCore.h>
-
-// Browser function table
-static NPNetscapeFuncs* browser;
-
-// Structure for per-instance storage
-typedef struct PluginObject
-{
-    NPP npp;
-    
-    NPWindow window;
-    
-    QCCompositionLayer *layer;
-    bool gold;
-} PluginObject;
-
-NPError NPP_New(NPMIMEType pluginType, NPP instance, uint16 mode, int16 argc, char* argn[], char* argv[], NPSavedData* saved);
-NPError NPP_Destroy(NPP instance, NPSavedData** save);
-NPError NPP_SetWindow(NPP instance, NPWindow* window);
-NPError NPP_NewStream(NPP instance, NPMIMEType type, NPStream* stream, NPBool seekable, uint16* stype);
-NPError NPP_DestroyStream(NPP instance, NPStream* stream, NPReason reason);
-int32 NPP_WriteReady(NPP instance, NPStream* stream);
-int32 NPP_Write(NPP instance, NPStream* stream, int32 offset, int32 len, void* buffer);
-void NPP_StreamAsFile(NPP instance, NPStream* stream, const char* fname);
-void NPP_Print(NPP instance, NPPrint* platformPrint);
-int16 NPP_HandleEvent(NPP instance, void* event);
-void NPP_URLNotify(NPP instance, const char* URL, NPReason reason, void* notifyData);
-NPError NPP_GetValue(NPP instance, NPPVariable variable, void *value);
-NPError NPP_SetValue(NPP instance, NPNVariable variable, void *value);
-
-#pragma export on
-// Mach-o entry points
-NPError NP_Initialize(NPNetscapeFuncs *browserFuncs);
-NPError NP_GetEntryPoints(NPPluginFuncs *pluginFuncs);
-void NP_Shutdown(void);
-#pragma export off
-
-NPError NP_Initialize(NPNetscapeFuncs* browserFuncs)
-{
-    browser = browserFuncs;
-    return NPERR_NO_ERROR;
-}
-
-NPError NP_GetEntryPoints(NPPluginFuncs* pluginFuncs)
-{
-    pluginFuncs->version = 11;
-    pluginFuncs->size = sizeof(pluginFuncs);
-    pluginFuncs->newp = NPP_New;
-    pluginFuncs->destroy = NPP_Destroy;
-    pluginFuncs->setwindow = NPP_SetWindow;
-    pluginFuncs->newstream = NPP_NewStream;
-    pluginFuncs->destroystream = NPP_DestroyStream;
-    pluginFuncs->asfile = NPP_StreamAsFile;
-    pluginFuncs->writeready = NPP_WriteReady;
-    pluginFuncs->write = (NPP_WriteProcPtr)NPP_Write;
-    pluginFuncs->print = NPP_Print;
-    pluginFuncs->event = NPP_HandleEvent;
-    pluginFuncs->urlnotify = NPP_URLNotify;
-    pluginFuncs->getvalue = NPP_GetValue;
-    pluginFuncs->setvalue = NPP_SetValue;
-    
-    return NPERR_NO_ERROR;
-}
-
-void NP_Shutdown(void)
-{
-
-}
-
-NPError NPP_New(NPMIMEType pluginType, NPP instance, uint16 mode, int16 argc, char* argn[], char* argv[], NPSavedData* saved)
-{
-    // Create per-instance storage
-    PluginObject *obj = (PluginObject *)malloc(sizeof(PluginObject));
-    bzero(obj, sizeof(PluginObject));
-    
-    obj->npp = instance;
-    instance->pdata = obj;
-    
-    // Ask the browser if it supports the Core Animation drawing model
-    NPBool supportsCoreAnimation;
-    if (browser->getvalue(instance, NPNVsupportsCoreAnimationBool, &supportsCoreAnimation) != NPERR_NO_ERROR)
-        supportsCoreAnimation = FALSE;
-    
-    if (!supportsCoreAnimation)
-        return NPERR_INCOMPATIBLE_VERSION_ERROR;
-    
-    // If the browser supports the Core Animation drawing model, enable it.
-    browser->setvalue(instance, NPPVpluginDrawingModel, (void *)NPDrawingModelCoreAnimation);
-
-    // If the browser supports the Cocoa event model, enable it.
-    NPBool supportsCocoa;
-    if (browser->getvalue(instance, NPNVsupportsCocoaBool, &supportsCocoa) != NPERR_NO_ERROR)
-        supportsCocoa = FALSE;
-    
-    if (!supportsCocoa)
-        return NPERR_INCOMPATIBLE_VERSION_ERROR;
-    
-    browser->setvalue(instance, NPPVpluginEventModel, (void *)NPEventModelCocoa);
-    
-    return NPERR_NO_ERROR;
-}
-
-NPError NPP_Destroy(NPP instance, NPSavedData** save)
-{
-    // Free per-instance storage
-    PluginObject *obj = instance->pdata;
-
-    [obj->layer release];
-    
-    free(obj);
-    
-    return NPERR_NO_ERROR;
-}
-
-NPError NPP_SetWindow(NPP instance, NPWindow* window)
-{
-    PluginObject *obj = instance->pdata;
-    obj->window = *window;
-
-    return NPERR_NO_ERROR;
-}
-
-NPError NPP_NewStream(NPP instance, NPMIMEType type, NPStream* stream, NPBool seekable, uint16* stype)
-{
-    *stype = NP_ASFILEONLY;
-    return NPERR_NO_ERROR;
-}
-
-NPError NPP_DestroyStream(NPP instance, NPStream* stream, NPReason reason)
-{
-    return NPERR_NO_ERROR;
-}
-
-int32 NPP_WriteReady(NPP instance, NPStream* stream)
-{
-    return 0;
-}
-
-int32 NPP_Write(NPP instance, NPStream* stream, int32 offset, int32 len, void* buffer)
-{
-    return 0;
-}
-
-void NPP_StreamAsFile(NPP instance, NPStream* stream, const char* fname)
-{
-}
-
-void NPP_Print(NPP instance, NPPrint* platformPrint)
-{
-
-}
-
-static void handleMouseClick(PluginObject *obj, NPCocoaEvent *event)
-{
-    obj->gold = !obj->gold;
-    
-    [obj->layer setValue:[NSNumber numberWithBool:obj->gold] forInputKey:@"gold"];
-}
-
-int16 NPP_HandleEvent(NPP instance, void* event)
-{
-    PluginObject *obj = instance->pdata;
-
-    NPCocoaEvent *cocoaEvent = event;
-    
-    switch(cocoaEvent->type) {
-        case NPCocoaEventMouseDown:
-            handleMouseClick(obj, cocoaEvent);
-            return 1;
-    }
-    
-    return 0;
-}
-
-void NPP_URLNotify(NPP instance, const char* url, NPReason reason, void* notifyData)
-{
-
-}
-
-NPError NPP_GetValue(NPP instance, NPPVariable variable, void *value)
-{
-    PluginObject *obj = instance->pdata;
-
-    switch (variable) {
-        case NPPVpluginCoreAnimationLayer:
-            if (!obj->layer) {
-                NSString *path = [[NSBundle bundleWithIdentifier:@"com.apple.netscapecoreanimationplugin"] pathForResource:@"Composition" ofType:@"qtz"];
-
-                QCComposition *composition = [QCComposition compositionWithFile:path];
-                obj->layer = [[QCCompositionLayer compositionLayerWithComposition:composition] retain];
-            }
-            
-            // Make sure to return a retained layer
-            *((CALayer **)value) = [obj->layer retain];
-            
-            return NPERR_NO_ERROR;
-            
-        default:
-            return NPERR_GENERIC_ERROR;
-    }
-}
-
-NPError NPP_SetValue(NPP instance, NPNVariable variable, void *value)
-{
-    return NPERR_GENERIC_ERROR;
-}
diff --git a/Examples/NetscapeCoreAnimationPlugin/test.html b/Examples/NetscapeCoreAnimationPlugin/test.html
deleted file mode 100644 (file)
index 8e0b4be..0000000
+++ /dev/null
@@ -1,11 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/1999/REC-html401-19991224/loose.dtd">
-<html>
-<head>
-<title>Cocoa Netscape Plug-In</title>
-</head>
-<body>
-<div>
-    <embed width="400" height="400" type="test/x-netscape-core-animation-plugin"></embed>
-</div>
-</body>
-</html>
diff --git a/Examples/NetscapeInputMethodPlugin/English.lproj/InfoPlist.strings b/Examples/NetscapeInputMethodPlugin/English.lproj/InfoPlist.strings
deleted file mode 100644 (file)
index 5e45963..0000000
Binary files a/Examples/NetscapeInputMethodPlugin/English.lproj/InfoPlist.strings and /dev/null differ
diff --git a/Examples/NetscapeInputMethodPlugin/Info.plist b/Examples/NetscapeInputMethodPlugin/Info.plist
deleted file mode 100644 (file)
index a09cb1f..0000000
+++ /dev/null
@@ -1,36 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
-<plist version="1.0">
-<dict>
-       <key>CFBundleDevelopmentRegion</key>
-       <string>English</string>
-       <key>CFBundleExecutable</key>
-       <string>NetscapeInputMethodPlugin</string>
-       <key>CFBundleIconFile</key>
-       <string></string>
-       <key>CFBundleIdentifier</key>
-       <string>com.apple.netscapeinputmethodplugin</string>
-       <key>CFBundleInfoDictionaryVersion</key>
-       <string>6.0</string>
-       <key>CFBundlePackageType</key>
-       <string>BRPL</string>
-       <key>CFBundleShortVersionString</key>
-       <string>1.0</string>
-       <key>CFBundleSignature</key>
-       <string>????</string>
-       <key>CFBundleVersion</key>
-       <string>1.0</string>
-       <key>WebPluginDescription</key>
-       <string>Simple Netscape plug-in that shows how to use input methods</string>
-       <key>WebPluginMIMETypes</key>
-       <dict>
-               <key>test/x-netscape-input-method-plugin</key>
-               <dict>
-                       <key>WebPluginTypeDescription</key>
-                       <string>Netscape Input Method Plug-in</string>
-               </dict>
-       </dict>
-       <key>WebPluginName</key>
-       <string>Netscape Input Method Plug-in</string>
-</dict>
-</plist>
diff --git a/Examples/NetscapeInputMethodPlugin/NetscapeInputMethodPlugin.xcodeproj/project.pbxproj b/Examples/NetscapeInputMethodPlugin/NetscapeInputMethodPlugin.xcodeproj/project.pbxproj
deleted file mode 100644 (file)
index 474c2cb..0000000
+++ /dev/null
@@ -1,243 +0,0 @@
-// !$*UTF8*$!
-{
-       archiveVersion = 1;
-       classes = {
-       };
-       objectVersion = 42;
-       objects = {
-
-/* Begin PBXBuildFile section */
-               1A624E590DCBC7F6006898C8 /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = 1A624E580DCBC7F6006898C8 /* main.m */; };
-               1A6250420DCBC81B006898C8 /* Cocoa.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 1A6250410DCBC81B006898C8 /* Cocoa.framework */; };
-               8D5B49A804867FD3000E48DA /* InfoPlist.strings in Resources */ = {isa = PBXBuildFile; fileRef = 8D5B49A704867FD3000E48DA /* InfoPlist.strings */; };
-/* End PBXBuildFile section */
-
-/* Begin PBXFileReference section */
-               089C167EFE841241C02AAC07 /* English */ = {isa = PBXFileReference; fileEncoding = 10; lastKnownFileType = text.plist.strings; name = English; path = English.lproj/InfoPlist.strings; sourceTree = "<group>"; };
-               1A624E580DCBC7F6006898C8 /* main.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = main.m; sourceTree = "<group>"; };
-               1A6250410DCBC81B006898C8 /* Cocoa.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Cocoa.framework; path = /System/Library/Frameworks/Cocoa.framework; sourceTree = "<absolute>"; };
-               8D576316048677EA00EA77CD /* NetscapeInputMethodPlugin.plugin */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = NetscapeInputMethodPlugin.plugin; sourceTree = BUILT_PRODUCTS_DIR; };
-               8D576317048677EA00EA77CD /* Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist; path = Info.plist; sourceTree = "<group>"; };
-/* End PBXFileReference section */
-
-/* Begin PBXFrameworksBuildPhase section */
-               8D576313048677EA00EA77CD /* Frameworks */ = {
-                       isa = PBXFrameworksBuildPhase;
-                       buildActionMask = 2147483647;
-                       files = (
-                               1A6250420DCBC81B006898C8 /* Cocoa.framework in Frameworks */,
-                       );
-                       runOnlyForDeploymentPostprocessing = 0;
-               };
-/* End PBXFrameworksBuildPhase section */
-
-/* Begin PBXGroup section */
-               089C166AFE841209C02AAC07 /* NetscapeInputMethodPlugin */ = {
-                       isa = PBXGroup;
-                       children = (
-                               08FB77AFFE84173DC02AAC07 /* Source */,
-                               089C167CFE841241C02AAC07 /* Resources */,
-                               089C1671FE841209C02AAC07 /* External Frameworks and Libraries */,
-                               19C28FB6FE9D52B211CA2CBB /* Products */,
-                       );
-                       name = NetscapeInputMethodPlugin;
-                       sourceTree = "<group>";
-               };
-               089C1671FE841209C02AAC07 /* External Frameworks and Libraries */ = {
-                       isa = PBXGroup;
-                       children = (
-                               1A6250410DCBC81B006898C8 /* Cocoa.framework */,
-                       );
-                       name = "External Frameworks and Libraries";
-                       sourceTree = "<group>";
-               };
-               089C167CFE841241C02AAC07 /* Resources */ = {
-                       isa = PBXGroup;
-                       children = (
-                               8D576317048677EA00EA77CD /* Info.plist */,
-                               8D5B49A704867FD3000E48DA /* InfoPlist.strings */,
-                       );
-                       name = Resources;
-                       sourceTree = "<group>";
-               };
-               08FB77AFFE84173DC02AAC07 /* Source */ = {
-                       isa = PBXGroup;
-                       children = (
-                               1A624E580DCBC7F6006898C8 /* main.m */,
-                       );
-                       name = Source;
-                       sourceTree = "<group>";
-               };
-               19C28FB6FE9D52B211CA2CBB /* Products */ = {
-                       isa = PBXGroup;
-                       children = (
-                               8D576316048677EA00EA77CD /* NetscapeInputMethodPlugin.plugin */,
-                       );
-                       name = Products;
-                       sourceTree = "<group>";
-               };
-/* End PBXGroup section */
-
-/* Begin PBXNativeTarget section */
-               8D57630D048677EA00EA77CD /* NetscapeInputMethodPlugin */ = {
-                       isa = PBXNativeTarget;
-                       buildConfigurationList = 149C298308902C53008A9EFC /* Build configuration list for PBXNativeTarget "NetscapeInputMethodPlugin" */;
-                       buildPhases = (
-                               8D576311048677EA00EA77CD /* Sources */,
-                               8D57630F048677EA00EA77CD /* Resources */,
-                               8D576313048677EA00EA77CD /* Frameworks */,
-                       );
-                       buildRules = (
-                       );
-                       dependencies = (
-                       );
-                       name = NetscapeInputMethodPlugin;
-                       productInstallPath = "$(HOME)/Library/Bundles";
-                       productName = NetscapeInputMethodPlugin;
-                       productReference = 8D576316048677EA00EA77CD /* NetscapeInputMethodPlugin.plugin */;
-                       productType = "com.apple.product-type.bundle";
-               };
-/* End PBXNativeTarget section */
-
-/* Begin PBXProject section */
-               089C1669FE841209C02AAC07 /* Project object */ = {
-                       isa = PBXProject;
-                       buildConfigurationList = 149C298708902C53008A9EFC /* Build configuration list for PBXProject "NetscapeInputMethodPlugin" */;
-                       compatibilityVersion = "Xcode 2.4";
-                       developmentRegion = English;
-                       hasScannedForEncodings = 1;
-                       knownRegions = (
-                               English,
-                               Japanese,
-                               French,
-                               German,
-                       );
-                       mainGroup = 089C166AFE841209C02AAC07 /* NetscapeInputMethodPlugin */;
-                       projectDirPath = "";
-                       projectRoot = "";
-                       targets = (
-                               8D57630D048677EA00EA77CD /* NetscapeInputMethodPlugin */,
-                       );
-               };
-/* End PBXProject section */
-
-/* Begin PBXResourcesBuildPhase section */
-               8D57630F048677EA00EA77CD /* Resources */ = {
-                       isa = PBXResourcesBuildPhase;
-                       buildActionMask = 2147483647;
-                       files = (
-                               8D5B49A804867FD3000E48DA /* InfoPlist.strings in Resources */,
-                       );
-                       runOnlyForDeploymentPostprocessing = 0;
-               };
-/* End PBXResourcesBuildPhase section */
-
-/* Begin PBXSourcesBuildPhase section */
-               8D576311048677EA00EA77CD /* Sources */ = {
-                       isa = PBXSourcesBuildPhase;
-                       buildActionMask = 2147483647;
-                       files = (
-                               1A624E590DCBC7F6006898C8 /* main.m in Sources */,
-                       );
-                       runOnlyForDeploymentPostprocessing = 0;
-               };
-/* End PBXSourcesBuildPhase section */
-
-/* Begin PBXVariantGroup section */
-               8D5B49A704867FD3000E48DA /* InfoPlist.strings */ = {
-                       isa = PBXVariantGroup;
-                       children = (
-                               089C167EFE841241C02AAC07 /* English */,
-                       );
-                       name = InfoPlist.strings;
-                       sourceTree = "<group>";
-               };
-/* End PBXVariantGroup section */
-
-/* Begin XCBuildConfiguration section */
-               149C298408902C53008A9EFC /* Debug */ = {
-                       isa = XCBuildConfiguration;
-                       buildSettings = {
-                               COPY_PHASE_STRIP = NO;
-                               GCC_DEBUGGING_SYMBOLS = full;
-                               GCC_DYNAMIC_NO_PIC = NO;
-                               GCC_ENABLE_FIX_AND_CONTINUE = YES;
-                               GCC_MODEL_TUNING = G5;
-                               GCC_OPTIMIZATION_LEVEL = 0;
-                               INFOPLIST_FILE = Info.plist;
-                               INSTALL_PATH = "$(HOME)/Library/Bundles";
-                               PRODUCT_NAME = NetscapeInputMethodPlugin;
-                               WRAPPER_EXTENSION = plugin;
-                               ZERO_LINK = YES;
-                       };
-                       name = Debug;
-               };
-               149C298508902C53008A9EFC /* Release */ = {
-                       isa = XCBuildConfiguration;
-                       buildSettings = {
-                               ARCHS = (
-                                       ppc,
-                                       i386,
-                               );
-                               GCC_DEBUGGING_SYMBOLS = full;
-                               GCC_GENERATE_DEBUGGING_SYMBOLS = NO;
-                               GCC_MODEL_TUNING = G5;
-                               GCC_OPTIMIZATION_LEVEL = 0;
-                               INFOPLIST_FILE = Info.plist;
-                               INSTALL_PATH = "$(HOME)/Library/Bundles";
-                               PRODUCT_NAME = NetscapeInputMethodPlugin;
-                               WRAPPER_EXTENSION = plugin;
-                       };
-                       name = Release;
-               };
-               149C298808902C53008A9EFC /* Debug */ = {
-                       isa = XCBuildConfiguration;
-                       buildSettings = {
-                               ARCHS = "$(ARCHS_STANDARD_32_64_BIT_PRE_XCODE_3_1)";
-                               ARCHS_STANDARD_32_64_BIT_PRE_XCODE_3_1 = "ppc i386 ppc64 x86_64";
-                               GCC_C_LANGUAGE_STANDARD = c99;
-                               GCC_WARN_ABOUT_RETURN_TYPE = YES;
-                               GCC_WARN_UNUSED_VARIABLE = YES;
-                               PREBINDING = NO;
-                               SDKROOT = /Developer/SDKs/MacOSX10.5.sdk;
-                       };
-                       name = Debug;
-               };
-               149C298908902C53008A9EFC /* Release */ = {
-                       isa = XCBuildConfiguration;
-                       buildSettings = {
-                               ARCHS = "$(ARCHS_STANDARD_32_64_BIT_PRE_XCODE_3_1)";
-                               ARCHS_STANDARD_32_64_BIT_PRE_XCODE_3_1 = "ppc i386 ppc64 x86_64";
-                               GCC_C_LANGUAGE_STANDARD = c99;
-                               GCC_WARN_ABOUT_RETURN_TYPE = YES;
-                               GCC_WARN_UNUSED_VARIABLE = YES;
-                               PREBINDING = NO;
-                               SDKROOT = /Developer/SDKs/MacOSX10.5.sdk;
-                       };
-                       name = Release;
-               };
-/* End XCBuildConfiguration section */
-
-/* Begin XCConfigurationList section */
-               149C298308902C53008A9EFC /* Build configuration list for PBXNativeTarget "NetscapeInputMethodPlugin" */ = {
-                       isa = XCConfigurationList;
-                       buildConfigurations = (
-                               149C298408902C53008A9EFC /* Debug */,
-                               149C298508902C53008A9EFC /* Release */,
-                       );
-                       defaultConfigurationIsVisible = 0;
-                       defaultConfigurationName = Release;
-               };
-               149C298708902C53008A9EFC /* Build configuration list for PBXProject "NetscapeInputMethodPlugin" */ = {
-                       isa = XCConfigurationList;
-                       buildConfigurations = (
-                               149C298808902C53008A9EFC /* Debug */,
-                               149C298908902C53008A9EFC /* Release */,
-                       );
-                       defaultConfigurationIsVisible = 0;
-                       defaultConfigurationName = Release;
-               };
-/* End XCConfigurationList section */
-       };
-       rootObject = 089C1669FE841209C02AAC07 /* Project object */;
-}
diff --git a/Examples/NetscapeInputMethodPlugin/main.m b/Examples/NetscapeInputMethodPlugin/main.m
deleted file mode 100644 (file)
index 16b5338..0000000
+++ /dev/null
@@ -1,398 +0,0 @@
-/*
- IMPORTANT:  This Apple software is supplied to you by Apple Inc. ("Apple") in
- consideration of your agreement to the following terms, and your use, installation, 
- modification or redistribution of this Apple software constitutes acceptance of these 
- terms.  If you do not agree with these terms, please do not use, install, modify or 
- redistribute this Apple software.
- In consideration of your agreement to abide by the following terms, and subject to these 
- terms, Apple grants you a personal, non-exclusive license, under Apple’s copyrights in 
- this original Apple software (the "Apple Software"), to use, reproduce, modify and 
- redistribute the Apple Software, with or without modifications, in source and/or binary 
- forms; provided that if you redistribute the Apple Software in its entirety and without 
- modifications, you must retain this notice and the following text and disclaimers in all 
- such redistributions of the Apple Software.  Neither the name, trademarks, service marks 
- or logos of Apple Inc. may be used to endorse or promote products derived from 
- the Apple Software without specific prior written permission from Apple. Except as expressly
- stated in this notice, no other rights or licenses, express or implied, are granted by Apple
- herein, including but not limited to any patent rights that may be infringed by your 
- derivative works or by other works in which the Apple Software may be incorporated.
- The Apple Software is provided by Apple on an "AS IS" basis.  APPLE MAKES NO WARRANTIES, 
- EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION THE IMPLIED WARRANTIES OF NON-INFRINGEMENT, 
- MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE, REGARDING THE APPLE SOFTWARE OR ITS 
- USE AND OPERATION ALONE OR IN COMBINATION WITH YOUR PRODUCTS.
- IN NO EVENT SHALL APPLE BE LIABLE FOR ANY SPECIAL, INDIRECT, INCIDENTAL OR CONSEQUENTIAL 
- DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS 
- OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) ARISING IN ANY WAY OUT OF THE USE, 
- REPRODUCTION, MODIFICATION AND/OR DISTRIBUTION OF THE APPLE SOFTWARE, HOWEVER CAUSED AND 
- WHETHER UNDER THEORY OF CONTRACT, TORT (INCLUDING NEGLIGENCE), STRICT LIABILITY OR 
- OTHERWISE, EVEN IF APPLE HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-
-#import <WebKit/npapi.h>
-#import <WebKit/npfunctions.h>
-#import <WebKit/npruntime.h>
-
-#import <Cocoa/Cocoa.h>
-
-// Browser function table
-static NPNetscapeFuncs* browser;
-
-// Structure for per-instance storage
-typedef struct PluginObject
-{
-    NPP npp;
-    
-    NPWindow window;
-    
-    bool pluginHasFocus;
-    
-    bool textFieldHasFocus;
-    NSRect textFieldRect;
-    
-    NSRange selectedRange;
-    NSTextStorage *textStorage;
-    NSLayoutManager *layoutManager;
-    NSTextContainer *textContainer;
-    
-} PluginObject;
-
-NPError NPP_New(NPMIMEType pluginType, NPP instance, uint16 mode, int16 argc, char* argn[], char* argv[], NPSavedData* saved);
-NPError NPP_Destroy(NPP instance, NPSavedData** save);
-NPError NPP_SetWindow(NPP instance, NPWindow* window);
-NPError NPP_NewStream(NPP instance, NPMIMEType type, NPStream* stream, NPBool seekable, uint16* stype);
-NPError NPP_DestroyStream(NPP instance, NPStream* stream, NPReason reason);
-int32 NPP_WriteReady(NPP instance, NPStream* stream);
-int32 NPP_Write(NPP instance, NPStream* stream, int32 offset, int32 len, void* buffer);
-void NPP_StreamAsFile(NPP instance, NPStream* stream, const char* fname);
-void NPP_Print(NPP instance, NPPrint* platformPrint);
-int16 NPP_HandleEvent(NPP instance, void* event);
-void NPP_URLNotify(NPP instance, const char* URL, NPReason reason, void* notifyData);
-NPError NPP_GetValue(NPP instance, NPPVariable variable, void* value);
-NPError NPP_SetValue(NPP instance, NPNVariable variable, void* value);
-
-#pragma export on
-// Mach-o entry points
-NPError NP_Initialize(NPNetscapeFuncs* browserFuncs);
-NPError NP_GetEntryPoints(NPPluginFuncs* pluginFuncs);
-void NP_Shutdown(void);
-#pragma export off
-
-NPError NP_Initialize(NPNetscapeFuncs* browserFuncs)
-{
-    browser = browserFuncs;
-    return NPERR_NO_ERROR;
-}
-
-NPError NP_GetEntryPoints(NPPluginFuncs* pluginFuncs)
-{
-    pluginFuncs->version = 11;
-    pluginFuncs->size = sizeof(pluginFuncs);
-    pluginFuncs->newp = NPP_New;
-    pluginFuncs->destroy = NPP_Destroy;
-    pluginFuncs->setwindow = NPP_SetWindow;
-    pluginFuncs->newstream = NPP_NewStream;
-    pluginFuncs->destroystream = NPP_DestroyStream;
-    pluginFuncs->asfile = NPP_StreamAsFile;
-    pluginFuncs->writeready = NPP_WriteReady;
-    pluginFuncs->write = (NPP_WriteProcPtr)NPP_Write;
-    pluginFuncs->print = NPP_Print;
-    pluginFuncs->event = NPP_HandleEvent;
-    pluginFuncs->urlnotify = NPP_URLNotify;
-    pluginFuncs->getvalue = NPP_GetValue;
-    pluginFuncs->setvalue = NPP_SetValue;
-    
-    return NPERR_NO_ERROR;
-}
-
-void NP_Shutdown(void)
-{
-}
-
-NPError NPP_New(NPMIMEType pluginType, NPP instance, uint16 mode, int16 argc, char* argn[], char* argv[], NPSavedData* saved)
-{
-    // Create per-instance storage
-    PluginObject* obj = (PluginObject*)malloc(sizeof(PluginObject));
-    bzero(obj, sizeof(PluginObject));
-    
-    obj->npp = instance;
-    instance->pdata = obj;
-    
-    // Ask the browser if it supports the CoreGraphics drawing model
-    NPBool supportsCoreGraphics;
-    if (browser->getvalue(instance, NPNVsupportsCoreGraphicsBool, &supportsCoreGraphics) != NPERR_NO_ERROR)
-        supportsCoreGraphics = FALSE;
-    
-    if (!supportsCoreGraphics)
-        return NPERR_INCOMPATIBLE_VERSION_ERROR;
-    
-    // If the browser supports the CoreGraphics drawing model, enable it.
-    browser->setvalue(instance, NPPVpluginDrawingModel, (void*)NPDrawingModelCoreGraphics);
-
-    // If the browser supports the Cocoa event model, enable it.
-    NPBool supportsCocoa;
-    if (browser->getvalue(instance, NPNVsupportsCocoaBool, &supportsCocoa) != NPERR_NO_ERROR)
-        supportsCocoa = FALSE;
-    
-    if (!supportsCocoa)
-        return NPERR_INCOMPATIBLE_VERSION_ERROR;
-    
-    browser->setvalue(instance, NPPVpluginEventModel, (void*)NPEventModelCocoa);
-
-    obj->textFieldRect = NSMakeRect(10, 10, 200, 100);
-
-    obj->textStorage = [[NSTextStorage alloc] initWithString:@""];
-    obj->layoutManager = [[NSLayoutManager alloc] init];
-    [obj->textStorage addLayoutManager:obj->layoutManager];
-    
-    obj->textContainer = [[NSTextContainer alloc] initWithContainerSize:obj->textFieldRect.size];
-    [obj->layoutManager addTextContainer:obj->textContainer];
-
-    obj->selectedRange.location = [obj->textStorage length];
-    
-    return NPERR_NO_ERROR;
-}
-
-NPError NPP_Destroy(NPP instance, NPSavedData** save)
-{
-    // Free per-instance storage
-    PluginObject* obj = instance->pdata;
-    
-    [obj->textStorage release];
-    [obj->layoutManager release];
-    
-    free(obj);
-    
-    return NPERR_NO_ERROR;
-}
-
-NPError NPP_SetWindow(NPP instance, NPWindow* window)
-{
-    PluginObject* obj = instance->pdata;
-    obj->window = *window;
-
-    return NPERR_NO_ERROR;
-}
-
-NPError NPP_NewStream(NPP instance, NPMIMEType type, NPStream* stream, NPBool seekable, uint16* stype)
-{
-    *stype = NP_ASFILEONLY;
-    return NPERR_NO_ERROR;
-}
-
-NPError NPP_DestroyStream(NPP instance, NPStream* stream, NPReason reason)
-{
-    return NPERR_NO_ERROR;
-}
-
-int32 NPP_WriteReady(NPP instance, NPStream* stream)
-{
-    return 0;
-}
-
-int32 NPP_Write(NPP instance, NPStream* stream, int32 offset, int32 len, void* buffer)
-{
-    return 0;
-}
-
-void NPP_StreamAsFile(NPP instance, NPStream* stream, const char* fname)
-{
-}
-
-void NPP_Print(NPP instance, NPPrint* platformPrint)
-{
-
-}
-
-static void handleDraw(PluginObject* obj, NPCocoaEvent *event)
-{
-    NSGraphicsContext *oldContext = [[NSGraphicsContext currentContext] retain];
-    
-    NSGraphicsContext *context = [NSGraphicsContext graphicsContextWithGraphicsPort:event->data.draw.context
-                                                                            flipped:YES];
-
-
-    [NSGraphicsContext setCurrentContext:context];
-    
-    NSRect rect = NSMakeRect(0, 0, obj->window.width, obj->window.height);
-    
-    [[NSColor lightGrayColor] set];
-    [NSBezierPath fillRect:rect];
-
-    if (obj->pluginHasFocus) {
-        [[NSColor blackColor] set];
-        [NSBezierPath strokeRect:rect];
-    }
-    
-    [[NSColor whiteColor] set];
-    [NSBezierPath fillRect:obj->textFieldRect];
-
-    // Draw the text
-    NSRange glyphRange = [obj->layoutManager glyphRangeForTextContainer:obj->textContainer];
-    if (glyphRange.length > 0) {
-        [obj->layoutManager drawBackgroundForGlyphRange:glyphRange atPoint:obj->textFieldRect.origin];
-        [obj->layoutManager drawGlyphsForGlyphRange:glyphRange atPoint:obj->textFieldRect.origin];
-    }
-    
-    NSBezierPath *textInputBorder = [NSBezierPath bezierPathWithRect:obj->textFieldRect];
-    [[NSColor blackColor] set];
-    
-    if (obj->pluginHasFocus && obj->textFieldHasFocus)
-        [textInputBorder setLineWidth:2];
-    else
-        [textInputBorder setLineWidth:1];
-    
-    [textInputBorder stroke];
-    
-    if (obj->pluginHasFocus && obj->textFieldHasFocus) {
-        NSUInteger rectCount;
-        NSRect *rectArray = [obj->layoutManager rectArrayForCharacterRange:obj->selectedRange
-                                            withinSelectedCharacterRange:obj->selectedRange
-                                                        inTextContainer:obj->textContainer
-                                                                rectCount:&rectCount];
-        
-        [[NSColor blackColor] set];
-        for (unsigned i = 0; i < rectCount; i++) {
-            NSRect rect = rectArray[i];
-            rect.origin.x += obj->textFieldRect.origin.x;
-            rect.origin.y += obj->textFieldRect.origin.y;
-            
-            [NSBezierPath strokeRect:rect];
-        }        
-    }
-    
-    [NSGraphicsContext setCurrentContext:oldContext];
-}
-
-static void invalidatePlugin(PluginObject* obj)
-{
-    NPRect rect;
-    rect.left = 0;
-    rect.top = 0;
-    rect.right = obj->window.width;
-    rect.bottom = obj->window.height;
-    
-    browser->invalidaterect(obj->npp, &rect);    
-}
-
-static void handleFocusChanged(NPCocoaEvent* cocoaEvent, PluginObject* obj)
-{
-    obj->pluginHasFocus = cocoaEvent->data.focus.hasFocus;
-    
-    invalidatePlugin(obj);
-}
-
-static void handleMouseMoved(NPCocoaEvent* cocoaEvent, PluginObject* obj)
-{
-    NSPoint point = NSMakePoint(cocoaEvent->data.mouse.pluginX, cocoaEvent->data.mouse.pluginY);
-    
-    if (NSPointInRect(point, obj->textFieldRect))
-        [[NSCursor IBeamCursor] set];
-    else
-        [[NSCursor arrowCursor] set];
-}
-
-static void handleMouseDown(NPCocoaEvent* cocoaEvent, PluginObject* obj) 
-{
-    NSPoint point = NSMakePoint(cocoaEvent->data.mouse.pluginX, cocoaEvent->data.mouse.pluginY);
-    
-    obj->textFieldHasFocus = NSPointInRect(point, obj->textFieldRect);
-    
-    invalidatePlugin(obj);
-}
-
-static int16_t handleTextFieldKeyDown(NPCocoaEvent* event, PluginObject* obj)
-{
-    NSString *string = (NSString *)event->data.key.charactersIgnoringModifiers;
-    
-    unichar c = [string length] > 0 ? [string characterAtIndex:0] : 0;
-    
-    switch (c) {
-        case NSLeftArrowFunctionKey:
-            if (obj->selectedRange.location > 0) {
-                obj->selectedRange.location--;
-                invalidatePlugin(obj);
-            }
-            return 1;
-            
-        case NSRightArrowFunctionKey:
-            if (obj->selectedRange.location < [obj->textStorage length]) {
-                obj->selectedRange.location++;  
-                invalidatePlugin(obj);
-            }
-                
-            return 1;
-            
-        default:
-            // Return 0 and let the text input system handle it.
-            return 0;
-    }
-}
-
-
-static int16_t handleTextInput(NPCocoaEvent* event, PluginObject* obj)
-{
-    NSString *string = (NSString *)event->data.text.text;
-    NSRange range = obj->selectedRange;
-        
-    [obj->textStorage replaceCharactersInRange:range withString:string];
-        
-    obj->selectedRange.location = range.location + [string length];
-    obj->selectedRange.length = 0;
-
-    invalidatePlugin(obj);
-    
-    return 1;
-}
-
-int16 NPP_HandleEvent(NPP instance, void* event)
-{
-    PluginObject* obj = instance->pdata;
-
-    NPCocoaEvent* cocoaEvent = event;
-    
-    switch (cocoaEvent->type) {
-        case NPCocoaEventDrawRect:
-            handleDraw(obj, cocoaEvent);
-            return 1;
-        case NPCocoaEventFocusChanged:
-            handleFocusChanged(cocoaEvent, obj);
-            return 1;
-        case NPCocoaEventMouseMoved:
-            handleMouseMoved(cocoaEvent, obj);
-            return 1;
-        case NPCocoaEventMouseDown:
-            handleMouseDown(cocoaEvent, obj);
-            return 1;
-        case NPCocoaEventKeyDown:
-            // If the text field has focus we ignore the event, causing it
-            // to be sent to the input manager.
-            if (obj->textFieldHasFocus)
-                return handleTextFieldKeyDown(cocoaEvent, obj);
-            else
-                return 1;
-        case NPCocoaEventTextInput:
-            return handleTextInput(cocoaEvent, obj);
-            return 1;
-                
-    }
-    
-    return 0;
-}
-
-void NPP_URLNotify(NPP instance, const char* url, NPReason reason, void* notifyData)
-{
-}
-
-NPError NPP_GetValue(NPP instance, NPPVariable variable, void* value)
-{
-    return NPERR_GENERIC_ERROR;
-}
-
-NPError NPP_SetValue(NPP instance, NPNVariable variable, void* value)
-{
-    return NPERR_GENERIC_ERROR;
-}
diff --git a/Examples/NetscapeInputMethodPlugin/test.html b/Examples/NetscapeInputMethodPlugin/test.html
deleted file mode 100644 (file)
index d41a4c0..0000000
+++ /dev/null
@@ -1,11 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/1999/REC-html401-19991224/loose.dtd">
-<html>
-<head>
-<title>Netscape Input Method Plug-In</title>
-</head>
-<body>
-<div>
-    <embed width="400" height="400" type="test/x-netscape-input-method-plugin"></embed>
-</div>
-</body>
-</html>
diff --git a/Examples/NetscapeMuteAPIPlugin/AudioPlayer.h b/Examples/NetscapeMuteAPIPlugin/AudioPlayer.h
deleted file mode 100644 (file)
index e8dd6bc..0000000
+++ /dev/null
@@ -1,62 +0,0 @@
-/*
- IMPORTANT:  This Apple software is supplied to you by Apple Inc. ("Apple") in
- consideration of your agreement to the following terms, and your use, installation,
- modification or redistribution of this Apple software constitutes acceptance of these
- terms.  If you do not agree with these terms, please do not use, install, modify or
- redistribute this Apple software.
-
- In consideration of your agreement to abide by the following terms, and subject to these
- terms, Apple grants you a personal, non-exclusive license, under Apple’s copyrights in
- this original Apple software (the "Apple Software"), to use, reproduce, modify and
- redistribute the Apple Software, with or without modifications, in source and/or binary
- forms; provided that if you redistribute the Apple Software in its entirety and without
- modifications, you must retain this notice and the following text and disclaimers in all
- such redistributions of the Apple Software.  Neither the name, trademarks, service marks
- or logos of Apple Inc. may be used to endorse or promote products derived from
- the Apple Software without specific prior written permission from Apple. Except as expressly
- stated in this notice, no other rights or licenses, express or implied, are granted by Apple
- herein, including but not limited to any patent rights that may be infringed by your
- derivative works or by other works in which the Apple Software may be incorporated.
-
- The Apple Software is provided by Apple on an "AS IS" basis.  APPLE MAKES NO WARRANTIES,
- EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION THE IMPLIED WARRANTIES OF NON-INFRINGEMENT,
- MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE, REGARDING THE APPLE SOFTWARE OR ITS
- USE AND OPERATION ALONE OR IN COMBINATION WITH YOUR PRODUCTS.
-
- IN NO EVENT SHALL APPLE BE LIABLE FOR ANY SPECIAL, INDIRECT, INCIDENTAL OR CONSEQUENTIAL
- DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
- OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) ARISING IN ANY WAY OUT OF THE USE,
- REPRODUCTION, MODIFICATION AND/OR DISTRIBUTION OF THE APPLE SOFTWARE, HOWEVER CAUSED AND
- WHETHER UNDER THEORY OF CONTRACT, TORT (INCLUDING NEGLIGENCE), STRICT LIABILITY OR
- OTHERWISE, EVEN IF APPLE HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-
-#import <WebKit/npfunctions.h>
-
-@class AVPlayer;
-@class AVPlayerItem;
-@class AudioPlayer;
-
-@protocol AudioPlayerDelegate <NSObject>
-
-- (void)readyStateDidChangeForAudioPlayer:(AudioPlayer *)audioPlayer;
-- (void)mutedStateDidChangeForAudioPlayer:(AudioPlayer *)audioPlayer;
-- (void)playStateDidChangeForAudioPlayer:(AudioPlayer *)audioPlayer;
-
-@end
-
-@interface AudioPlayer : NSObject {
-    BOOL _playing;
-    AVPlayer *_audioPlayer;
-    AVPlayerItem *_playerItem;
-    id<AudioPlayerDelegate> _audioPlayerDelegate;
-}
-
-- (instancetype)initWithURL:(NSURL *)url;
-
-@property (nonatomic, weak) id<AudioPlayerDelegate> audioPlayerDelegate;
-@property (nonatomic, readonly, getter=isReadyToPlay) BOOL readyToPlay;
-@property (nonatomic, getter=isPlaying) BOOL playing;
-@property (nonatomic, getter=isMuted) BOOL muted;
-
-@end
diff --git a/Examples/NetscapeMuteAPIPlugin/AudioPlayer.mm b/Examples/NetscapeMuteAPIPlugin/AudioPlayer.mm
deleted file mode 100644 (file)
index 751231c..0000000
+++ /dev/null
@@ -1,118 +0,0 @@
-/*
- IMPORTANT:  This Apple software is supplied to you by Apple Inc. ("Apple") in
- consideration of your agreement to the following terms, and your use, installation,
- modification or redistribution of this Apple software constitutes acceptance of these
- terms.  If you do not agree with these terms, please do not use, install, modify or
- redistribute this Apple software.
-
- In consideration of your agreement to abide by the following terms, and subject to these
- terms, Apple grants you a personal, non-exclusive license, under Apple’s copyrights in
- this original Apple software (the "Apple Software"), to use, reproduce, modify and
- redistribute the Apple Software, with or without modifications, in source and/or binary
- forms; provided that if you redistribute the Apple Software in its entirety and without
- modifications, you must retain this notice and the following text and disclaimers in all
- such redistributions of the Apple Software.  Neither the name, trademarks, service marks
- or logos of Apple Inc. may be used to endorse or promote products derived from
- the Apple Software without specific prior written permission from Apple. Except as expressly
- stated in this notice, no other rights or licenses, express or implied, are granted by Apple
- herein, including but not limited to any patent rights that may be infringed by your
- derivative works or by other works in which the Apple Software may be incorporated.
-
- The Apple Software is provided by Apple on an "AS IS" basis.  APPLE MAKES NO WARRANTIES,
- EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION THE IMPLIED WARRANTIES OF NON-INFRINGEMENT,
- MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE, REGARDING THE APPLE SOFTWARE OR ITS
- USE AND OPERATION ALONE OR IN COMBINATION WITH YOUR PRODUCTS.
-
- IN NO EVENT SHALL APPLE BE LIABLE FOR ANY SPECIAL, INDIRECT, INCIDENTAL OR CONSEQUENTIAL
- DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
- OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) ARISING IN ANY WAY OUT OF THE USE,
- REPRODUCTION, MODIFICATION AND/OR DISTRIBUTION OF THE APPLE SOFTWARE, HOWEVER CAUSED AND
- WHETHER UNDER THEORY OF CONTRACT, TORT (INCLUDING NEGLIGENCE), STRICT LIABILITY OR
- OTHERWISE, EVEN IF APPLE HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-
-#import "AudioPlayer.h"
-
-#import <AVFoundation/AVFoundation.h>
-
-static void *itemStatusKVOContext = &itemStatusKVOContext;
-
-@implementation AudioPlayer
-
-@synthesize audioPlayerDelegate=_audioPlayerDelegate;
-
-- (instancetype)initWithURL:(NSURL *)url
-{
-    if (!url.absoluteString.length)
-        return nil;
-
-    if (!(self = [super init]))
-        return nil;
-
-    AVURLAsset *avAsset = [AVURLAsset URLAssetWithURL:url options:nil];
-    _playerItem = [[AVPlayerItem alloc] initWithAsset:avAsset];
-    [_playerItem addObserver:self forKeyPath:@"status" options:0 context:itemStatusKVOContext];
-    _audioPlayer = [[AVPlayer alloc] initWithPlayerItem:_playerItem];
-
-    return self;
-}
-
-- (void)dealloc
-{
-    [_playerItem removeObserver:self forKeyPath:@"status"];
-    [_audioPlayer release];
-    [_playerItem release];
-    [super dealloc];
-}
-
-- (BOOL)isReadyToPlay
-{
-    return _audioPlayer.currentItem.status == AVPlayerItemStatusReadyToPlay;
-}
-
-- (BOOL)isPlaying
-{
-    return _playing;
-}
-
-- (void)setPlaying:(BOOL)playing
-{
-    if (_playing == playing)
-        return;
-
-    if (playing && !self.isReadyToPlay)
-        return;
-
-    _playing = playing;
-
-    if (_playing)
-        [_audioPlayer play];
-    else
-        [_audioPlayer pause];
-
-    [_audioPlayerDelegate playStateDidChangeForAudioPlayer:self];
-}
-
-- (BOOL)isMuted
-{
-    return _audioPlayer.isMuted;
-}
-
-- (void)setMuted:(BOOL)muted
-{
-    if (self.isMuted == muted)
-        return;
-
-    _audioPlayer.muted = muted;
-    [_audioPlayerDelegate mutedStateDidChangeForAudioPlayer:self];
-}
-
-- (void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary *)change context:(void *)context {
-
-    if (context == &itemStatusKVOContext) {
-        dispatch_async(dispatch_get_main_queue(), ^{ [_audioPlayerDelegate readyStateDidChangeForAudioPlayer:self]; });
-        return;
-    }
-    [super observeValueForKeyPath:keyPath ofObject:object change:change context:context];
-}
-@end
diff --git a/Examples/NetscapeMuteAPIPlugin/English.lproj/InfoPlist.strings b/Examples/NetscapeMuteAPIPlugin/English.lproj/InfoPlist.strings
deleted file mode 100644 (file)
index 5e45963..0000000
Binary files a/Examples/NetscapeMuteAPIPlugin/English.lproj/InfoPlist.strings and /dev/null differ
diff --git a/Examples/NetscapeMuteAPIPlugin/Info.plist b/Examples/NetscapeMuteAPIPlugin/Info.plist
deleted file mode 100644 (file)
index 7d235cc..0000000
+++ /dev/null
@@ -1,36 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
-<plist version="1.0">
-<dict>
-       <key>CFBundleDevelopmentRegion</key>
-       <string>English</string>
-       <key>CFBundleExecutable</key>
-       <string>NetscapeMuteAPIPlugin</string>
-       <key>CFBundleIconFile</key>
-       <string></string>
-       <key>CFBundleIdentifier</key>
-       <string>com.apple.netscapemuteapiplugin</string>
-       <key>CFBundleInfoDictionaryVersion</key>
-       <string>6.0</string>
-       <key>CFBundlePackageType</key>
-       <string>BRPL</string>
-       <key>CFBundleShortVersionString</key>
-       <string>1.0</string>
-       <key>CFBundleSignature</key>
-       <string>????</string>
-       <key>CFBundleVersion</key>
-       <string>1.0</string>
-       <key>WebPluginDescription</key>
-       <string>Simple Netscape plug-in that uses the Mute API</string>
-       <key>WebPluginMIMETypes</key>
-       <dict>
-               <key>test/x-netscape-mute-api-plugin</key>
-               <dict>
-                       <key>WebPluginTypeDescription</key>
-                       <string>Netscape Cocoa Plug-in</string>
-               </dict>
-       </dict>
-       <key>WebPluginName</key>
-       <string>Netscape Mute API Plug-in</string>
-</dict>
-</plist>
diff --git a/Examples/NetscapeMuteAPIPlugin/MenuHandler.h b/Examples/NetscapeMuteAPIPlugin/MenuHandler.h
deleted file mode 100644 (file)
index 3dd5887..0000000
+++ /dev/null
@@ -1,46 +0,0 @@
-/*
- IMPORTANT:  This Apple software is supplied to you by Apple Inc. ("Apple") in
- consideration of your agreement to the following terms, and your use, installation, 
- modification or redistribution of this Apple software constitutes acceptance of these 
- terms.  If you do not agree with these terms, please do not use, install, modify or 
- redistribute this Apple software.
- In consideration of your agreement to abide by the following terms, and subject to these 
- terms, Apple grants you a personal, non-exclusive license, under Apple’s copyrights in 
- this original Apple software (the "Apple Software"), to use, reproduce, modify and 
- redistribute the Apple Software, with or without modifications, in source and/or binary 
- forms; provided that if you redistribute the Apple Software in its entirety and without 
- modifications, you must retain this notice and the following text and disclaimers in all 
- such redistributions of the Apple Software.  Neither the name, trademarks, service marks 
- or logos of Apple Inc. may be used to endorse or promote products derived from 
- the Apple Software without specific prior written permission from Apple. Except as expressly
- stated in this notice, no other rights or licenses, express or implied, are granted by Apple
- herein, including but not limited to any patent rights that may be infringed by your 
- derivative works or by other works in which the Apple Software may be incorporated.
- The Apple Software is provided by Apple on an "AS IS" basis.  APPLE MAKES NO WARRANTIES, 
- EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION THE IMPLIED WARRANTIES OF NON-INFRINGEMENT, 
- MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE, REGARDING THE APPLE SOFTWARE OR ITS 
- USE AND OPERATION ALONE OR IN COMBINATION WITH YOUR PRODUCTS.
- IN NO EVENT SHALL APPLE BE LIABLE FOR ANY SPECIAL, INDIRECT, INCIDENTAL OR CONSEQUENTIAL 
- DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS 
- OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) ARISING IN ANY WAY OUT OF THE USE, 
- REPRODUCTION, MODIFICATION AND/OR DISTRIBUTION OF THE APPLE SOFTWARE, HOWEVER CAUSED AND 
- WHETHER UNDER THEORY OF CONTRACT, TORT (INCLUDING NEGLIGENCE), STRICT LIABILITY OR 
- OTHERWISE, EVEN IF APPLE HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-
-#import <Cocoa/Cocoa.h>
-
-@class AudioPlayer;
-
-@interface MenuHandler : NSObject {
-    NSMenu *_menu;
-    AudioPlayer *_audioPlayer;
-}
-
-- (id)initWithAudioPlayer:(AudioPlayer *)audioPlayer;
-- (NSMenu *)menu;
-
-@end
diff --git a/Examples/NetscapeMuteAPIPlugin/MenuHandler.m b/Examples/NetscapeMuteAPIPlugin/MenuHandler.m
deleted file mode 100644 (file)
index 0911fff..0000000
+++ /dev/null
@@ -1,100 +0,0 @@
-/*
- IMPORTANT:  This Apple software is supplied to you by Apple Inc. ("Apple") in
- consideration of your agreement to the following terms, and your use, installation, 
- modification or redistribution of this Apple software constitutes acceptance of these 
- terms.  If you do not agree with these terms, please do not use, install, modify or 
- redistribute this Apple software.
- In consideration of your agreement to abide by the following terms, and subject to these 
- terms, Apple grants you a personal, non-exclusive license, under Apple’s copyrights in 
- this original Apple software (the "Apple Software"), to use, reproduce, modify and 
- redistribute the Apple Software, with or without modifications, in source and/or binary 
- forms; provided that if you redistribute the Apple Software in its entirety and without 
- modifications, you must retain this notice and the following text and disclaimers in all 
- such redistributions of the Apple Software.  Neither the name, trademarks, service marks 
- or logos of Apple Inc. may be used to endorse or promote products derived from 
- the Apple Software without specific prior written permission from Apple. Except as expressly
- stated in this notice, no other rights or licenses, express or implied, are granted by Apple
- herein, including but not limited to any patent rights that may be infringed by your 
- derivative works or by other works in which the Apple Software may be incorporated.
- The Apple Software is provided by Apple on an "AS IS" basis.  APPLE MAKES NO WARRANTIES, 
- EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION THE IMPLIED WARRANTIES OF NON-INFRINGEMENT, 
- MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE, REGARDING THE APPLE SOFTWARE OR ITS 
- USE AND OPERATION ALONE OR IN COMBINATION WITH YOUR PRODUCTS.
- IN NO EVENT SHALL APPLE BE LIABLE FOR ANY SPECIAL, INDIRECT, INCIDENTAL OR CONSEQUENTIAL 
- DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS 
- OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) ARISING IN ANY WAY OUT OF THE USE, 
- REPRODUCTION, MODIFICATION AND/OR DISTRIBUTION OF THE APPLE SOFTWARE, HOWEVER CAUSED AND 
- WHETHER UNDER THEORY OF CONTRACT, TORT (INCLUDING NEGLIGENCE), STRICT LIABILITY OR 
- OTHERWISE, EVEN IF APPLE HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-
-#import "MenuHandler.h"
-
-#import "AudioPlayer.h"
-
-@implementation MenuHandler
-
-- (void)_play:(id)sender
-{
-    _audioPlayer.playing = YES;
-}
-
-- (void)_pause:(id)sender
-{
-    _audioPlayer.playing = NO;
-}
-
-- (BOOL)validateUserInterfaceItem:(id <NSValidatedUserInterfaceItem>)anItem
-{
-    SEL sel = [anItem action];
-    
-    if (sel == @selector(_play:))
-        return _audioPlayer.isReadyToPlay && !_audioPlayer.isPlaying;
-
-    if (sel == @selector(_pause:))
-        return _audioPlayer.isPlaying;
-
-    return NO;
-}
-
-- (id)initWithAudioPlayer:(AudioPlayer *)audioPlayer
-{
-    self = [super init];
-    if (!self)
-        return nil;
-
-    _audioPlayer = [audioPlayer retain];
-
-    // Create the menu
-    _menu = [[NSMenu alloc] initWithTitle:@"Menu"];
-    
-    NSMenuItem *item = [[NSMenuItem alloc] initWithTitle:@"Play" action:@selector(_play:) keyEquivalent:@""];
-    [item setTarget:self];
-    [_menu addItem:item];
-    [item release];
-
-    item = [[NSMenuItem alloc] initWithTitle:@"Pause" action:@selector(_pause:) keyEquivalent:@""];
-    [item setTarget:self];
-    [_menu addItem:item];
-    [item release];
-
-    return self;
-}
-
-- (void)dealloc
-{
-    [_menu release];
-    [_audioPlayer release];
-    
-    [super dealloc];
-}
-
-- (NSMenu *)menu
-{
-    return _menu;
-}
-
-@end
diff --git a/Examples/NetscapeMuteAPIPlugin/NetscapeMuteAPIPlugin.xcodeproj/project.pbxproj b/Examples/NetscapeMuteAPIPlugin/NetscapeMuteAPIPlugin.xcodeproj/project.pbxproj
deleted file mode 100644 (file)
index 81e68e9..0000000
+++ /dev/null
@@ -1,263 +0,0 @@
-// !$*UTF8*$!
-{
-       archiveVersion = 1;
-       classes = {
-       };
-       objectVersion = 46;
-       objects = {
-
-/* Begin PBXBuildFile section */
-               1A624E590DCBC7F6006898C8 /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = 1A624E580DCBC7F6006898C8 /* main.m */; };
-               1A6250420DCBC81B006898C8 /* Cocoa.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 1A6250410DCBC81B006898C8 /* Cocoa.framework */; };
-               1AAD6A090DD0DC52003985DA /* MenuHandler.m in Sources */ = {isa = PBXBuildFile; fileRef = 1AAD6A080DD0DC52003985DA /* MenuHandler.m */; };
-               52E2CAF119F856E9001EEB4F /* AVFoundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 52E2CAF019F856E9001EEB4F /* AVFoundation.framework */; };
-               52E2CAF419F85A47001EEB4F /* AudioPlayer.mm in Sources */ = {isa = PBXBuildFile; fileRef = 52E2CAF319F85A47001EEB4F /* AudioPlayer.mm */; };
-               8D5B49A804867FD3000E48DA /* InfoPlist.strings in Resources */ = {isa = PBXBuildFile; fileRef = 8D5B49A704867FD3000E48DA /* InfoPlist.strings */; };
-/* End PBXBuildFile section */
-
-/* Begin PBXFileReference section */
-               089C167EFE841241C02AAC07 /* English */ = {isa = PBXFileReference; fileEncoding = 10; lastKnownFileType = text.plist.strings; name = English; path = English.lproj/InfoPlist.strings; sourceTree = "<group>"; };
-               1A624E580DCBC7F6006898C8 /* main.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = main.m; sourceTree = "<group>"; };
-               1A6250410DCBC81B006898C8 /* Cocoa.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Cocoa.framework; path = /System/Library/Frameworks/Cocoa.framework; sourceTree = "<absolute>"; };
-               1AAD6A070DD0DC52003985DA /* MenuHandler.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MenuHandler.h; sourceTree = "<group>"; };
-               1AAD6A080DD0DC52003985DA /* MenuHandler.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = MenuHandler.m; sourceTree = "<group>"; };
-               52E2CAF019F856E9001EEB4F /* AVFoundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AVFoundation.framework; path = ../../../../../../../../System/Library/Frameworks/AVFoundation.framework; sourceTree = "<group>"; };
-               52E2CAF219F85A47001EEB4F /* AudioPlayer.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = AudioPlayer.h; sourceTree = "<group>"; };
-               52E2CAF319F85A47001EEB4F /* AudioPlayer.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = AudioPlayer.mm; sourceTree = "<group>"; };
-               8D576316048677EA00EA77CD /* NetscapeMuteAPIPlugin.plugin */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = NetscapeMuteAPIPlugin.plugin; sourceTree = BUILT_PRODUCTS_DIR; };
-               8D576317048677EA00EA77CD /* Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist; path = Info.plist; sourceTree = "<group>"; };
-/* End PBXFileReference section */
-
-/* Begin PBXFrameworksBuildPhase section */
-               8D576313048677EA00EA77CD /* Frameworks */ = {
-                       isa = PBXFrameworksBuildPhase;
-                       buildActionMask = 2147483647;
-                       files = (
-                               52E2CAF119F856E9001EEB4F /* AVFoundation.framework in Frameworks */,
-                               1A6250420DCBC81B006898C8 /* Cocoa.framework in Frameworks */,
-                       );
-                       runOnlyForDeploymentPostprocessing = 0;
-               };
-/* End PBXFrameworksBuildPhase section */
-
-/* Begin PBXGroup section */
-               089C166AFE841209C02AAC07 /* NetscapeMuteAPIPlugin */ = {
-                       isa = PBXGroup;
-                       children = (
-                               52E2CAF019F856E9001EEB4F /* AVFoundation.framework */,
-                               08FB77AFFE84173DC02AAC07 /* Source */,
-                               089C167CFE841241C02AAC07 /* Resources */,
-                               089C1671FE841209C02AAC07 /* External Frameworks and Libraries */,
-                               19C28FB6FE9D52B211CA2CBB /* Products */,
-                       );
-                       name = NetscapeMuteAPIPlugin;
-                       sourceTree = "<group>";
-               };
-               089C1671FE841209C02AAC07 /* External Frameworks and Libraries */ = {
-                       isa = PBXGroup;
-                       children = (
-                               1A6250410DCBC81B006898C8 /* Cocoa.framework */,
-                       );
-                       name = "External Frameworks and Libraries";
-                       sourceTree = "<group>";
-               };
-               089C167CFE841241C02AAC07 /* Resources */ = {
-                       isa = PBXGroup;
-                       children = (
-                               8D576317048677EA00EA77CD /* Info.plist */,
-                               8D5B49A704867FD3000E48DA /* InfoPlist.strings */,
-                       );
-                       name = Resources;
-                       sourceTree = "<group>";
-               };
-               08FB77AFFE84173DC02AAC07 /* Source */ = {
-                       isa = PBXGroup;
-                       children = (
-                               1A624E580DCBC7F6006898C8 /* main.m */,
-                               1AAD6A070DD0DC52003985DA /* MenuHandler.h */,
-                               1AAD6A080DD0DC52003985DA /* MenuHandler.m */,
-                               52E2CAF219F85A47001EEB4F /* AudioPlayer.h */,
-                               52E2CAF319F85A47001EEB4F /* AudioPlayer.mm */,
-                       );
-                       name = Source;
-                       sourceTree = "<group>";
-               };
-               19C28FB6FE9D52B211CA2CBB /* Products */ = {
-                       isa = PBXGroup;
-                       children = (
-                               8D576316048677EA00EA77CD /* NetscapeMuteAPIPlugin.plugin */,
-                       );
-                       name = Products;
-                       sourceTree = "<group>";
-               };
-/* End PBXGroup section */
-
-/* Begin PBXNativeTarget section */
-               8D57630D048677EA00EA77CD /* NetscapeMuteAPIPlugin */ = {
-                       isa = PBXNativeTarget;
-                       buildConfigurationList = 149C298308902C53008A9EFC /* Build configuration list for PBXNativeTarget "NetscapeMuteAPIPlugin" */;
-                       buildPhases = (
-                               8D576311048677EA00EA77CD /* Sources */,
-                               8D57630F048677EA00EA77CD /* Resources */,
-                               8D576313048677EA00EA77CD /* Frameworks */,
-                       );
-                       buildRules = (
-                       );
-                       dependencies = (
-                       );
-                       name = NetscapeMuteAPIPlugin;
-                       productInstallPath = "$(HOME)/Library/Bundles";
-                       productName = NetscapeMuteAPIPlugin;
-                       productReference = 8D576316048677EA00EA77CD /* NetscapeMuteAPIPlugin.plugin */;
-                       productType = "com.apple.product-type.bundle";
-               };
-/* End PBXNativeTarget section */
-
-/* Begin PBXProject section */
-               089C1669FE841209C02AAC07 /* Project object */ = {
-                       isa = PBXProject;
-                       attributes = {
-                               LastUpgradeCheck = 0600;
-                       };
-                       buildConfigurationList = 149C298708902C53008A9EFC /* Build configuration list for PBXProject "NetscapeMuteAPIPlugin" */;
-                       compatibilityVersion = "Xcode 3.2";
-                       developmentRegion = English;
-                       hasScannedForEncodings = 1;
-                       knownRegions = (
-                               English,
-                               Japanese,
-                               French,
-                               German,
-                       );
-                       mainGroup = 089C166AFE841209C02AAC07 /* NetscapeMuteAPIPlugin */;
-                       projectDirPath = "";
-                       projectRoot = "";
-                       targets = (
-                               8D57630D048677EA00EA77CD /* NetscapeMuteAPIPlugin */,
-                       );
-               };
-/* End PBXProject section */
-
-/* Begin PBXResourcesBuildPhase section */
-               8D57630F048677EA00EA77CD /* Resources */ = {
-                       isa = PBXResourcesBuildPhase;
-                       buildActionMask = 2147483647;
-                       files = (
-                               8D5B49A804867FD3000E48DA /* InfoPlist.strings in Resources */,
-                       );
-                       runOnlyForDeploymentPostprocessing = 0;
-               };
-/* End PBXResourcesBuildPhase section */
-
-/* Begin PBXSourcesBuildPhase section */
-               8D576311048677EA00EA77CD /* Sources */ = {
-                       isa = PBXSourcesBuildPhase;
-                       buildActionMask = 2147483647;
-                       files = (
-                               1A624E590DCBC7F6006898C8 /* main.m in Sources */,
-                               52E2CAF419F85A47001EEB4F /* AudioPlayer.mm in Sources */,
-                               1AAD6A090DD0DC52003985DA /* MenuHandler.m in Sources */,
-                       );
-                       runOnlyForDeploymentPostprocessing = 0;
-               };
-/* End PBXSourcesBuildPhase section */
-
-/* Begin PBXVariantGroup section */
-               8D5B49A704867FD3000E48DA /* InfoPlist.strings */ = {
-                       isa = PBXVariantGroup;
-                       children = (
-                               089C167EFE841241C02AAC07 /* English */,
-                       );
-                       name = InfoPlist.strings;
-                       sourceTree = "<group>";
-               };
-/* End PBXVariantGroup section */
-
-/* Begin XCBuildConfiguration section */
-               149C298408902C53008A9EFC /* Debug */ = {
-                       isa = XCBuildConfiguration;
-                       buildSettings = {
-                               COMBINE_HIDPI_IMAGES = YES;
-                               COPY_PHASE_STRIP = NO;
-                               FRAMEWORK_SEARCH_PATHS = (
-                                       "$(inherited)",
-                                       "$(SYSTEM_LIBRARY_DIR)/PrivateFrameworks",
-                               );
-                               GCC_DEBUGGING_SYMBOLS = full;
-                               GCC_DYNAMIC_NO_PIC = NO;
-                               GCC_ENABLE_FIX_AND_CONTINUE = YES;
-                               GCC_MODEL_TUNING = G5;
-                               GCC_OPTIMIZATION_LEVEL = 0;
-                               INFOPLIST_FILE = Info.plist;
-                               INSTALL_PATH = "$(HOME)/Library/Bundles";
-                               PRODUCT_NAME = NetscapeMuteAPIPlugin;
-                               WRAPPER_EXTENSION = plugin;
-                               ZERO_LINK = YES;
-                       };
-                       name = Debug;
-               };
-               149C298508902C53008A9EFC /* Release */ = {
-                       isa = XCBuildConfiguration;
-                       buildSettings = {
-                               COMBINE_HIDPI_IMAGES = YES;
-                               FRAMEWORK_SEARCH_PATHS = (
-                                       "$(inherited)",
-                                       "$(SYSTEM_LIBRARY_DIR)/PrivateFrameworks",
-                               );
-                               GCC_DEBUGGING_SYMBOLS = full;
-                               GCC_GENERATE_DEBUGGING_SYMBOLS = NO;
-                               GCC_MODEL_TUNING = G5;
-                               GCC_OPTIMIZATION_LEVEL = 0;
-                               INFOPLIST_FILE = Info.plist;
-                               INSTALL_PATH = "$(HOME)/Library/Bundles";
-                               PRODUCT_NAME = NetscapeMuteAPIPlugin;
-                               WRAPPER_EXTENSION = plugin;
-                       };
-                       name = Release;
-               };
-               149C298808902C53008A9EFC /* Debug */ = {
-                       isa = XCBuildConfiguration;
-                       buildSettings = {
-                               ARCHS_STANDARD_32_64_BIT_PRE_XCODE_3_1 = "ppc i386 ppc64 x86_64";
-                               GCC_WARN_ABOUT_RETURN_TYPE = YES;
-                               GCC_WARN_UNUSED_VARIABLE = YES;
-                               ONLY_ACTIVE_ARCH = YES;
-                               PREBINDING = NO;
-                       };
-                       name = Debug;
-               };
-               149C298908902C53008A9EFC /* Release */ = {
-                       isa = XCBuildConfiguration;
-                       buildSettings = {
-                               ARCHS_STANDARD_32_64_BIT_PRE_XCODE_3_1 = "ppc i386 ppc64 x86_64";
-                               GCC_WARN_ABOUT_RETURN_TYPE = YES;
-                               GCC_WARN_UNUSED_VARIABLE = YES;
-                               PREBINDING = NO;
-                       };
-                       name = Release;
-               };
-/* End XCBuildConfiguration section */
-
-/* Begin XCConfigurationList section */
-               149C298308902C53008A9EFC /* Build configuration list for PBXNativeTarget "NetscapeMuteAPIPlugin" */ = {
-                       isa = XCConfigurationList;
-                       buildConfigurations = (
-                               149C298408902C53008A9EFC /* Debug */,
-                               149C298508902C53008A9EFC /* Release */,
-                       );
-                       defaultConfigurationIsVisible = 0;
-                       defaultConfigurationName = Release;
-               };
-               149C298708902C53008A9EFC /* Build configuration list for PBXProject "NetscapeMuteAPIPlugin" */ = {
-                       isa = XCConfigurationList;
-                       buildConfigurations = (
-                               149C298808902C53008A9EFC /* Debug */,
-                               149C298908902C53008A9EFC /* Release */,
-                       );
-                       defaultConfigurationIsVisible = 0;
-                       defaultConfigurationName = Release;
-               };
-/* End XCConfigurationList section */
-       };
-       rootObject = 089C1669FE841209C02AAC07 /* Project object */;
-}
diff --git a/Examples/NetscapeMuteAPIPlugin/main.m b/Examples/NetscapeMuteAPIPlugin/main.m
deleted file mode 100644 (file)
index 86c3340..0000000
+++ /dev/null
@@ -1,408 +0,0 @@
-/*
- IMPORTANT:  This Apple software is supplied to you by Apple Inc. ("Apple") in
- consideration of your agreement to the following terms, and your use, installation, 
- modification or redistribution of this Apple software constitutes acceptance of these 
- terms.  If you do not agree with these terms, please do not use, install, modify or 
- redistribute this Apple software.
- In consideration of your agreement to abide by the following terms, and subject to these 
- terms, Apple grants you a personal, non-exclusive license, under Apple’s copyrights in 
- this original Apple software (the "Apple Software"), to use, reproduce, modify and 
- redistribute the Apple Software, with or without modifications, in source and/or binary 
- forms; provided that if you redistribute the Apple Software in its entirety and without 
- modifications, you must retain this notice and the following text and disclaimers in all 
- such redistributions of the Apple Software.  Neither the name, trademarks, service marks 
- or logos of Apple Inc. may be used to endorse or promote products derived from 
- the Apple Software without specific prior written permission from Apple. Except as expressly
- stated in this notice, no other rights or licenses, express or implied, are granted by Apple
- herein, including but not limited to any patent rights that may be infringed by your 
- derivative works or by other works in which the Apple Software may be incorporated.
- The Apple Software is provided by Apple on an "AS IS" basis.  APPLE MAKES NO WARRANTIES, 
- EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION THE IMPLIED WARRANTIES OF NON-INFRINGEMENT, 
- MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE, REGARDING THE APPLE SOFTWARE OR ITS 
- USE AND OPERATION ALONE OR IN COMBINATION WITH YOUR PRODUCTS.
- IN NO EVENT SHALL APPLE BE LIABLE FOR ANY SPECIAL, INDIRECT, INCIDENTAL OR CONSEQUENTIAL 
- DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS 
- OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) ARISING IN ANY WAY OUT OF THE USE, 
- REPRODUCTION, MODIFICATION AND/OR DISTRIBUTION OF THE APPLE SOFTWARE, HOWEVER CAUSED AND 
- WHETHER UNDER THEORY OF CONTRACT, TORT (INCLUDING NEGLIGENCE), STRICT LIABILITY OR 
- OTHERWISE, EVEN IF APPLE HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-
-#import "AudioPlayer.h"
-#import "MenuHandler.h"
-#import <Cocoa/Cocoa.h>
-#import <WebKit/npapi.h>
-#import <WebKit/npfunctions.h>
-#import <WebKit/npruntime.h>
-
-// Browser function table
-static NPNetscapeFuncs* browser;
-
-// Structure for per-instance storage
-@interface PluginObject : NSObject <AudioPlayerDelegate> {
-    AudioPlayer *_audioPlayer;
-    MenuHandler *_menuHandler;
-}
-
-@property (nonatomic, readonly) NPP npp;
-@property (nonatomic) NPWindow window;
-@property (nonatomic, strong, readonly) NSURL *audioURL;
-@property (nonatomic, copy, readonly) NSString *displayString;
-@property (nonatomic, strong, readonly) MenuHandler *menuHandler;
-@property (nonatomic) BOOL hasFocus;
-@property (nonatomic, readonly, getter=isPlayingAudio) BOOL playingAudio;
-@property (nonatomic, getter=isMuted) BOOL muted;
-
-- (instancetype)initWithNPP:(NPP)npp audioURL:(NSURL *)audioURL;
-
-@end
-
-NPError NPP_New(NPMIMEType pluginType, NPP instance, uint16_t mode, int16_t argc, char* argn[], char* argv[], NPSavedData*);
-NPError NPP_Destroy(NPP instance, NPSavedData**);
-NPError NPP_SetWindow(NPP instance, NPWindow*);
-NPError NPP_NewStream(NPP instance, NPMIMEType, NPStream*, NPBool seekable, uint16_t* stype);
-NPError NPP_DestroyStream(NPP instance, NPStream*, NPReason);
-int32_t NPP_WriteReady(NPP instance, NPStream*);
-int32_t NPP_Write(NPP instance, NPStream*, int32_t offset, int32_t len, void* buffer);
-void NPP_StreamAsFile(NPP instance, NPStream*, const char* fname);
-void NPP_Print(NPP instance, NPPrint* platformPrint);
-int16_t NPP_HandleEvent(NPP instance, void* event);
-void NPP_URLNotify(NPP instance, const char* URL, NPReason, void* notifyData);
-NPError NPP_GetValue(NPP instance, NPPVariable, void *value);
-NPError NPP_SetValue(NPP instance, NPNVariable, void *value);
-
-#pragma export on
-// Mach-o entry points
-NPError NP_Initialize(NPNetscapeFuncs *browserFuncs);
-NPError NP_GetEntryPoints(NPPluginFuncs *);
-void NP_Shutdown(void);
-#pragma export off
-
-static void invalidatePlugin(PluginObject *);
-
-@implementation PluginObject
-
-- (instancetype)initWithNPP:(NPP)npp audioURL:(NSURL *)audioURL
-{
-    if (!(self = [super init]))
-        return nil;
-
-    _npp = npp;
-    _audioURL = [audioURL retain];
-    _audioPlayer = [[AudioPlayer alloc] initWithURL:audioURL];
-    _audioPlayer.audioPlayerDelegate = self;
-
-    NPBool isMuted;
-    if (browser->getvalue(npp, NPNVmuteAudioBool, &isMuted) != NPERR_NO_ERROR)
-        isMuted = FALSE;
-    self.muted = isMuted;
-
-    [self _invalidateDisplayString];
-
-    return self;
-}
-
-- (void)dealloc
-{
-    [_audioURL release];
-    [_menuHandler release];
-    [_audioPlayer release];
-    [_displayString release];
-
-    [super dealloc];
-}
-
-- (MenuHandler *)menuHandler
-{
-    if (!_menuHandler)
-        _menuHandler = [[MenuHandler alloc] initWithAudioPlayer:_audioPlayer];
-
-    return _menuHandler;
-}
-
-- (BOOL)isPlayingAudio
-{
-    return _audioPlayer.isPlaying;
-}
-
-- (BOOL)isMuted
-{
-    return _audioPlayer.isMuted;
-}
-
-- (void)setMuted:(BOOL)muted
-{
-    _audioPlayer.muted = muted;
-}
-
-- (void)readyStateDidChangeForAudioPlayer:(AudioPlayer *)audioPlayer
-{
-    [self _invalidateDisplayString];
-    invalidatePlugin(self);
-}
-
-- (void)mutedStateDidChangeForAudioPlayer:(AudioPlayer *)audioPlayer
-{
-}
-
-- (void)playStateDidChangeForAudioPlayer:(AudioPlayer *)audioPlayer
-{
-    [self _invalidateDisplayString];
-    invalidatePlugin(self);
-    browser->setvalue(_npp, NPPVpluginIsPlayingAudio, _audioPlayer.isPlaying);
-}
-
-- (void)_invalidateDisplayString
-{
-    [_displayString release];
-
-    NSString *prefix;
-    if (!_audioPlayer.isReadyToPlay)
-        prefix = @"Loading: ";
-    else if (_audioPlayer.isPlaying)
-        prefix = @"Playing: ";
-    else
-        prefix = @"Ready to play: ";
-
-    _displayString = [[NSString stringWithFormat:@"%@ %@", prefix, _audioURL.absoluteString] retain];
-}
-
-@end
-
-
-NPError NP_Initialize(NPNetscapeFuncs* browserFuncs)
-{
-    browser = browserFuncs;
-    return NPERR_NO_ERROR;
-}
-
-NPError NP_GetEntryPoints(NPPluginFuncs* pluginFuncs)
-{
-    pluginFuncs->version = 11;
-    pluginFuncs->size = sizeof(pluginFuncs);
-    pluginFuncs->newp = NPP_New;
-    pluginFuncs->destroy = NPP_Destroy;
-    pluginFuncs->setwindow = NPP_SetWindow;
-    pluginFuncs->newstream = NPP_NewStream;
-    pluginFuncs->destroystream = NPP_DestroyStream;
-    pluginFuncs->asfile = NPP_StreamAsFile;
-    pluginFuncs->writeready = NPP_WriteReady;
-    pluginFuncs->write = (NPP_WriteProcPtr)NPP_Write;
-    pluginFuncs->print = NPP_Print;
-    pluginFuncs->event = NPP_HandleEvent;
-    pluginFuncs->urlnotify = NPP_URLNotify;
-    pluginFuncs->getvalue = NPP_GetValue;
-    pluginFuncs->setvalue = NPP_SetValue;
-    
-    return NPERR_NO_ERROR;
-}
-
-void NP_Shutdown(void)
-{
-
-}
-
-NPError NPP_New(NPMIMEType pluginType, NPP instance, uint16_t mode, int16_t argc, char* argn[], char* argv[], NPSavedData* saved)
-{
-    // Create per-instance storage
-    // Ask the browser if it supports the CoreGraphics drawing model
-    NPBool supportsCoreGraphics;
-    if (browser->getvalue(instance, NPNVsupportsCoreGraphicsBool, &supportsCoreGraphics) != NPERR_NO_ERROR)
-        supportsCoreGraphics = FALSE;
-    
-    if (!supportsCoreGraphics)
-        return NPERR_INCOMPATIBLE_VERSION_ERROR;
-    
-    // If the browser supports the CoreGraphics drawing model, enable it.
-    browser->setvalue(instance, NPPVpluginDrawingModel, (void *)NPDrawingModelCoreGraphics);
-
-    // If the browser supports the Cocoa event model, enable it.
-    NPBool supportsCocoa;
-    if (browser->getvalue(instance, NPNVsupportsCocoaBool, &supportsCocoa) != NPERR_NO_ERROR)
-        supportsCocoa = FALSE;
-    
-    if (!supportsCocoa)
-        return NPERR_INCOMPATIBLE_VERSION_ERROR;
-    
-    browser->setvalue(instance, NPPVpluginEventModel, (void *)NPEventModelCocoa);
-
-    NSURL *audioURL = nil;
-    for (int16_t i = 0; i < argc; i++) {
-        if (!strcasecmp(argn[i], "audiourl")) {
-            NSString *urlString = [NSString stringWithUTF8String:argv[i]];
-            if (urlString)
-                audioURL = [NSURL URLWithString:urlString];
-            break;
-        }
-    }
-
-    PluginObject *obj = [[PluginObject alloc] initWithNPP:instance audioURL:audioURL];
-    instance->pdata = obj;
-
-    return NPERR_NO_ERROR;
-}
-
-NPError NPP_Destroy(NPP instance, NPSavedData** save)
-{
-    // Free per-instance storage
-    PluginObject *obj = instance->pdata;
-    [obj release];
-
-    return NPERR_NO_ERROR;
-}
-
-NPError NPP_SetWindow(NPP instance, NPWindow* window)
-{
-    PluginObject *obj = instance->pdata;
-    obj.window = *window;
-
-    return NPERR_NO_ERROR;
-}
-
-NPError NPP_NewStream(NPP instance, NPMIMEType type, NPStream* stream, NPBool seekable, uint16_t* stype)
-{
-    *stype = NP_ASFILEONLY;
-    return NPERR_NO_ERROR;
-}
-
-NPError NPP_DestroyStream(NPP instance, NPStream* stream, NPReason reason)
-{
-    return NPERR_NO_ERROR;
-}
-
-int32_t NPP_WriteReady(NPP instance, NPStream* stream)
-{
-    return 0;
-}
-
-int32_t NPP_Write(NPP instance, NPStream* stream, int32_t offset, int32_t len, void* buffer)
-{
-    return 0;
-}
-
-void NPP_StreamAsFile(NPP instance, NPStream* stream, const char* fname)
-{
-}
-
-void NPP_Print(NPP instance, NPPrint* platformPrint)
-{
-}
-
-static void handleDraw(PluginObject *obj, NPCocoaEvent *event)
-{
-    NSGraphicsContext *oldContext = [[NSGraphicsContext currentContext] retain];
-    
-    NSGraphicsContext *context = [NSGraphicsContext graphicsContextWithGraphicsPort:event->data.draw.context flipped:YES];
-
-    [NSGraphicsContext setCurrentContext:context];
-    
-    NSRect rect = NSMakeRect(0, 0, obj.window.width, obj.window.height);
-    
-    [[NSColor lightGrayColor] set];
-    [NSBezierPath fillRect:rect];
-
-    // If the plugin has focus, draw a focus indicator
-    if (obj.hasFocus) {
-        [[NSColor blackColor] set];
-        NSBezierPath *path = [NSBezierPath bezierPathWithRect:rect];
-        [path setLineWidth:5];
-        [path stroke];
-    }
-    
-    [obj.displayString drawAtPoint:NSMakePoint(10, 10) withAttributes:nil];
-    
-    [NSGraphicsContext setCurrentContext:oldContext];
-    [oldContext release];
-}
-
-static void invalidatePlugin(PluginObject *obj)
-{
-    NPRect rect;
-    rect.left = 0;
-    rect.top = 0;
-    rect.right = obj.window.width;
-    rect.bottom = obj.window.height;
-    
-    browser->invalidaterect(obj.npp, &rect);
-}
-
-
-static void handleMouseEvent(PluginObject *obj, NPCocoaEvent *event)
-{
-    if (event->data.mouse.buttonNumber == 1)
-        browser->popupcontextmenu(obj.npp, (NPNSMenu *)[obj.menuHandler menu]);
-}
-
-int16_t NPP_HandleEvent(NPP instance, void* event)
-{
-    PluginObject *obj = instance->pdata;
-
-    NPCocoaEvent *cocoaEvent = event;
-    
-    switch (cocoaEvent->type) {
-    case NPCocoaEventFocusChanged:
-        obj.hasFocus = cocoaEvent->data.focus.hasFocus;
-        invalidatePlugin(obj);
-        return 1;
-        
-    case NPCocoaEventDrawRect:
-        handleDraw(obj, cocoaEvent);
-        return 1;
-    
-    case NPCocoaEventMouseDown:
-    case NPCocoaEventMouseUp:
-        
-    // FIXME: NPCocoaEventMouseMoved is currently disabled in order to see other events more clearly
-    // without "drowning" in mouse moved events.
-//        case NPCocoaEventMouseMoved:
-    case NPCocoaEventMouseEntered:
-    case NPCocoaEventMouseExited:
-    case NPCocoaEventMouseDragged:
-    case NPCocoaEventScrollWheel:
-        handleMouseEvent(obj, cocoaEvent);
-        return 1;
-
-    default:
-        break;
-    }
-    
-    return 0;
-}
-
-void NPP_URLNotify(NPP instance, const char* url, NPReason reason, void* notifyData)
-{
-
-}
-
-NPError NPP_GetValue(NPP instance, NPPVariable variable, void *value)
-{
-    PluginObject *obj = instance->pdata;
-
-    switch (variable) {
-    case NPPVpluginIsPlayingAudio:
-        if (value)
-            *((NPBool **)value) = obj.isPlayingAudio;
-        return NPERR_NO_ERROR;
-
-    default:
-        return NPERR_GENERIC_ERROR;
-    }
-}
-
-NPError NPP_SetValue(NPP instance, NPNVariable variable, void *value)
-{
-    PluginObject *obj = instance->pdata;
-
-    switch (variable) {
-    case NPNVmuteAudioBool:
-        if (value)
-            obj.muted = *((NPBool *)value);
-        return NPERR_NO_ERROR;
-
-    default:
-        return NPERR_GENERIC_ERROR;
-    }
-}
diff --git a/Examples/NetscapeMuteAPIPlugin/test.html b/Examples/NetscapeMuteAPIPlugin/test.html
deleted file mode 100644 (file)
index 32145cc..0000000
+++ /dev/null
@@ -1,12 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/1999/REC-html401-19991224/loose.dtd">
-<html>
-<head>
-<title>Cocoa Mute API Plug-In</title>
-</head>
-<body>
-<p>To test, set audiourl to an absolute URL to an audio file (e.g. mp3).</p>
-<div>
-    <embed width="700" height="50" type="test/x-netscape-mute-api-plugin" audiourl=""></embed>
-</div>
-</body>
-</html>