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.
