2010-06-22  Andreia Gaita  <avidigal@novell.com>

	* plugin.[h|cpp]: added checks for a MOONLIGHT_RELAXED_MEDIA_MODE_GUIDS
	  env variable that enables relaxed mode
	  (bug #614781, patch from abock)

2010-05-25  Andreia Gaita  <avidigal@novell.com>

	* plugin.cpp: remove reentrant hack for chrome, fixed upstream
	(see http://code.google.com/p/chromium/issues/detail?id=32797)

2010-04-30  Andreia Gaita  <avidigal@novell.com>

	* plugin.cpp: set the surface on the bridge

2010-04-28  Andreia Gaita  <avidigal@novell.com>

	* Makefile.am, plugin.cpp: remove ff36 bridge.

2010-04-27  Jeffrey Stedfast  <fejj@novell.com>

	* plugin.cpp (TryLoadBridge): Set the Surface on the Bridge rather
	than the plugin.

	* curl/*.cpp|h: Updated for API changes.

	* browser-bridge.h (BrowserBridge): Instead of having a
	PluginInstance member, keep a Surface member instead.

2010-04-27  Jeffrey Stedfast  <fejj@novell.com>

	* curl/*.cpp|h: Updated for API changes.

	* browser-bridge.h (BrowserBridge): Make the plugin and
	shutting_down members private and provide accessors for them.

2010-04-09  Andreia Gaita  <avidigal@novell.com>

	* browser-bridge.h: fix premature abortion due to missing
	initialization

2010-03-22  Andreia Gaita  <avidigal@novell.com>

	* browser-bridge.h: Add Shutdown method
	* plugin.cpp: (Shutdown) call the bridge Shutdown method

2010-03-19  Andreia Gaita  <avidigal@novell.com>

	* plugin-entry.cpp: don't touch Deployment on NPN_Mem* calls, the
	curl backend calls them on side threads

2010-03-03  Andreia Gaita  <avidigal@novell.com>

	* plugin.cpp: If available, load the curl backend by default for
	all non-ff browsers

2010-02-26  Andreia Gaita  <avidigal@novell.com>

	* Makefile.am: fix conditional compilation of the bridges, and
	add missing ff36 lib copy

2010-02-26  Andreia Gaita  <avidigal@novell.com>

	* Makefile.am: add bridge/ subdir to the build
	* browser-bridge.h: save a ref to the plugin, the curl bridge
	needs it to add tick calls
	* plugin.cpp: (Shutdown) kill the bridge only after shutting
	down the deployment, because it aborts downloaders and the curl
	bridge downloaders need to know if the plugin is shutting down to
	know if they can safely remove tick callbacks
	(Initialize) If the curl bridge is available and activated via
	the env flag, then load it regardless of browser

2010-02-16  Larry Ewing  <lewing@novell.com>

	* plugin.cpp (StreamAsFile): work around some opera evilness and
	avoid a crash where stream->url is lost out from under us.

	Allows Opera to start up moonlight and load the chess app.

2010-02-16  Andreia Gaita  <avidigal@novell.com>

	* plugin.cpp: dup the values coming in from the object tag, chrome
	throws them away immediately

2010-02-13  Larry Ewing  <lewing@novell.com>

	* plugin.cpp, plugin.h: add an instance flag that helps us decide
	if we should attempt normal startup or try to avoid reentering at
	all calls in CreateWindow.

	Works aroud the hang when trying to load moonlight in chromium
	without breaking the firefox startup sequence.

2010-02-05  Sebastien Pouliot  <sebastien@ximian.com>

	* plugin.cpp|h: The default value for AllowHtmlPopupWindow is
	different for same-domain applications (true) and cross-domain
	applications (false) unless it is specifically specified.

2010-01-28  Chris Toshok  <toshok@ximian.com>

	* plugin.cpp (plugin_menu_about): correct url to moonlight-project
	website.


2010-01-28  Andreia Gaita  <avidigal@novell.com>

	* plugin-class.[h.in|cpp]: Use plugin code for
	HtmlObject(Attach|Detach)Event instead of bridge calls

	* plugin-domevents.[h|cpp]: NPAPI implementation
	  of DOM Event listeners, to replace the gecko-specific
	  bridge code

	* plugin.[h|cpp]: Add FF3.6 bridge. Replace bridge calls
	  for HtmlObject(Attach|Detach)Event with NPAPI implementations

	* browser-bridge.h: removed DOM code, replaced by
	  plugin-domevents.*

	* plugin-class.h: regenerated

2010-01-28  Rolf Bjarne Kvinge  <RKvinge@novell.com>

	* plugin-class.cpp: value_to_variant: add a ref to the NPObject, so
	that the caller can call NPN_RelaseVariantObject on the returned
	variant (which must be done to free it if it is a string).
	html_object_set_property: call NPN_ReleaseVariantObject on the
	temporary variant.

2010-01-25  Andreia Gaita  <avidigal@novell.com>

      * moonlight.h, npstream-request.cpp, plugin-class.cpp,
        plugin-class.h, plugin-class.h.in, plugin-entry.cpp,
        plugin-glue.cpp, plugin.cpp, plugin.h,
        moz-sdk/npapi.h, moz-sdk/npruntime.h: NPAPI symbol renaming

2010-01-14  Andreia Gaita  <avidigal@novell.com>

	* plugin-entry.cpp, plugin-glue.cpp, moz-sdk/npapi.h: add
	MOON_ prefix to NPP_GetMIMEDescription, NPP_Initialize,
	NPP_Shutdown and NPP_GetValue, as these are exported as C
	symbols by a lot of plugins, and it appears that our calls
	to them might be ending up on the wrong plugin somehow.
	Possibly fixes the plugin reg problems.

2010-01-12  Andreia Gaita  <avidigal@novell.com>

	* plugin.[h.in|cpp]: (SetProperty) Add support for indexed property
	setters

2009-01-06  Sebastien Pouliot  <sebastien@ximian.com> 

	* plugin.h: Return 'false' for IS_NOTIFY_[SPLASH]SOURCE macros
	when 'x' is NULL so we can continue to the default behavior.
	Fix crasher #568186

2009-12-29  Andreia Gaita  <avidigal@novell.com>

	Initial support for indexed properties, like this[int index]. Only
	getters are supported right now.

	* plugin-class.[h.in|cpp]: Add parameters to the
	GetProperty delegate, to support indexed property getters

	* plugin-class.h: regenerated

2009-12-16  Larry Ewing  <lewing@novell.com>

	* plugin-spinner.h: the updated spinner.

	* plugin-spinner.xaml: the xaml for the spinner

2009-12-10  Rolf Bjarne Kvinge  <RKvinge@novell.com>

	* npstream-request.cpp: If the PluginDownloader has been aborted when
	we get the stream, abort the stream immediately.

	* plugin-downloader.cpp|h: Added an aborted/IsAborted property.

2009-12-10  Rolf Bjarne Kvinge  <RKvinge@novell.com>

	* npstream-request.cpp|h: Remove unused fields, add 'virtual' methods to
	virtual methods for the code to be clearer, add a static SetStreamData
	method that makes two public setters obsolete, move code to cpp file.

	* plugin.cpp: Update according to NPStreamRequest changes.

2009-12-08  Chris Toshok  <toshok@ximian.com>

	* plugin.cpp: add a toggle button to the Properties dialog to map
	between gdk keyvals and windows platform keycodes.

2009-12-07  Rolf Bjarne Kvinge  <RKvinge@novell.com>

	* plugin.cpp: Put the "Reinstall media pack" into an DEBUG #ifdef.
	It causes us to crash if we've already loaded the codecs into the
	processes.

2009-12-08  Chris Toshok  <toshok@ximian.com>

	* silverlight-versions.h.in: new file.

	* moonlight.h: include silverlight-versions.h and use those
	#defines instead of the strings for the TargetRuntime versions.

	* Makefile.am (EXTRA_DIST): add silverlight-versions.h.in

2009-11-26  Chris Toshok  <toshok@ximian.com>

	* plugin.cpp (PluginInstance::StreamAsFile): remove the source
	setting from here because it has to happen both with xaps and xaml
	files.
	(PluginInstance::UpdateSource): it needs to happen here.  in the
	case where we aren't calling SetPageUrl, we need to need to worry
	about relative/absolute urls.  lots of comments added.  should fix
	the three different problematic splash scenarios I've found (2
	telerik demos and the sl3 toolkit demo), and their relative url
	references.

2009-11-26  Chris Toshok  <toshok@ximian.com>

	* plugin.cpp (PluginInstance::StreamAsFile): set the source
	location to the xaml file when parsing the splash screen so that
	urls are resolved correctly for images/etc during the loading
	process.  Set it back again afterward.
	(PluginInstance::LoadSplash): when loading the splash we need to
	allow separators at the end of the urls so that relative urls are
	resolved correctly.

2009-11-19  Rolf Bjarne Kvinge  <RKvinge@novell.com>

	* plugin.mdp: Updated with new files.

2009-11-18  Rolf Bjarne Kvinge  <RKvinge@novell.com>

	* cbinding.h: Regenerated.

	* plugin-class.h.in: Add changes to the .in file too so that the
	changes survive the generator.

2009-11-18  Rolf Bjarne Kvinge  <RKvinge@novell.com>

	* plugin-class.cpp|h: Name change from MarkerReachedEventArgs -> 
	TimelineMarkerRoutedEventArgs (to better match managed code).

	* cbinding.h: Regenerated.

2009-11-18  Rolf Bjarne Kvinge  <RKvinge@novell.com>

	* cbinding.h: Regenerated.

2009-11-18  Rolf Bjarne Kvinge  <RKvinge@novell.com>

	* plugin.cpp: When requesting a codec download, indicate that the user
	initiated the download.

2009-11-17  Rolf Bjarne Kvinge  <RKvinge@novell.com>

	* plugin.cpp:
	* plugin-debug.cpp:
	* plugin-class.cpp: Update according to Type / Value API changes.

	r: toshok

2009-11-06  Chris Toshok  <toshok@ximian.com>

	* plugin.cpp (PluginInstance::FlushSplash): WalkTreeForLoaded ->
	WalkTreeForLoadedHandlers, and explicitly emit Loaded
	synchronously.

2009-11-05  Alan McGovern  <amcgovern@novell.com>

	* cbinding.h: regen. r: toshok

2009-11-05  Rolf Bjarne Kvinge  <RKvinge@novell.com>

	* plugin-class.cpp: Don't try to throw js exceptions when returning
	from js.

	* plugin-class.h: Remove THROW_JS_EXCEPTION2, not used anymore.

	r: andreia

2009-11-03  Rolf Bjarne Kvinge  <RKvinge@novell.com>

	* plugin.cpp|h: Don't create the window if the splash failed to load - 
	this fixes a crash with MS DRT #352 where the splash error handler
	shuts down the browser, causing us to crash later on when we try to
	create the window.

	r: spouliot

2009-11-03  Rolf Bjarne Kvinge  <RKvinge@novell.com>

	* plugin.cpp|h: Remove all code which handles downloading of assemblies
	which aren't in the xap, since that can't happen. Some of this code was
	already commented out.

	r: spouliot

2009-11-02  Alan McGovern  <amcgovern@novell.com>

	* cbinding.h: regen. r: rolf

2009-10-29  Rolf Bjarne Kvinge  <RKvinge@novell.com>

	* plugin.cpp: Add missing Deployment::SetCurrent.

	r: sde

2009-10-23  Rolf Bjarne Kvinge  <RKvinge@novell.com>

	* plugin.cpp: Always show the codec download entry in the right click
	menu - this allows easy redownload for whatever reason, instead of
	requiring the user to manually locate and delete the codecs if they're
	invalid.

	r: sde

2009-10-20  Jeffrey Stedfast  <fejj@novell.com>

	* plugin.cpp (same_site_of_origin): If either of the urls is null,
	return true. Fixes drt #329.

	r: spouliot

2009-10-20  Chris Toshok  <toshok@ximian.com>

	* plugin-class.cpp (MoonlightObject::ClearEventProxies): fix
	ancient sles-10 build.

	r: kangaroo

2009-10-20  Rolf Bjarne Kvinge  <RKvinge@novell.com>

	* plugin-glue.cpp: We might need the current plugin (NPP->pdata) during
	plugin shutdown (to report errors to js in case of any errors).
	
	* plugin-class.cpp|h|in.h:
	Added MoonlightScriptControlObject::[Pre|Post]SwitchPlugin methods: stores
	the data (event handlers) we need to copy over from one plugin instance to
	the next when the source changes. Also make sure to delete all current 
	event handlers / proxies, since the root npobjects are not recreated. 
	EventListenerProxy: added GetCallback and IsFunc accessors. 
	MoonlightObject: Add a SetPlugin method that allows moving MoonlightObjects
	from one PluginInstance to another.
	
	* plugin.cpp|h:
	Added a PluginInstance::Recreate method that recreates the PluginInstance
	when the source changes. Remove unused parameter to PluginInstance ctor. 
	Keep track whether the window has been created or not (used to not recreate
	the window, since it moves from one PluginInstance to another).

	r: spouliot

2009-10-20  Rolf Bjarne Kvinge  <RKvinge@novell.com>

	* plugin-class.h.in: Update with recent changes to plugin-class.h.

	r: alan

2009-10-20  Rolf Bjarne Kvinge  <RKvinge@novell.com>

	* plugin-class.[g.]cpp|h: Store a reference to the PluginInstance on
	all MoonlightObjects instead of the NPP instance, since we'll soon
	have more than one PluginInstance per NPP instance.

	r: spouliot

2009-10-20  Rolf Bjarne Kvinge  <RKvinge@novell.com>

	* plugin.cpp|h:
	* plugin-class.h: Use the proper type for the content and settings
	objects.

	r: spouliot

2009-10-20  Rolf Bjarne Kvinge  <RKvinge@novell.com>

	* windowless.cpp: Don't access the deployment field, use the
	new SetCurrentDeployment method.

	r: spouliot

2009-10-20  Rolf Bjarne Kvinge  <RKvinge@novell.com>

	* plugin.cpp|h: Move all managed code handling to Deployment.

	r: spouliot

2009-10-19  Rolf Bjarne Kvinge  <RKvinge@novell.com>

	* plugin-downloader.cpp: We should never allow downloading with another
	plugin than the correct one.

	r: spouliot

2009-10-16  Rolf Bjarne Kvinge  <RKvinge@novell.com>

	* plugin.cpp|h: Remove two obsolete and unused methods.

	r: alan

2009-10-15  Rolf Bjarne Kvinge  <RKvinge@novell.com>

	* cbinding.h: Regenerated.

	r: sde

2009-10-08  Chris Toshok  <toshok@ximian.com>

	* plugin.cpp (PluginInstance::StreamAsFile): Add another cross
	domain check after loading the splash (and emitting loaded
	events).
	(PluginInstance::LoadSplash): substantially bulk up this code to
	check for all the XDomain splash possibilities defined in drt
	#283.

	* plugin-class.cpp (EventListenerProxy::proxy_listener_to_javascript):
	comment out a line of spew that's really really spewing in xdomain
	tests.

	r: lewing, kangaroo

2009-10-07  Rolf Bjarne Kvinge  <RKvinge@novell.com>

	* plugin.cpp|h: Make PluginInstance work with async shutdown by using
	refcounting to only delete the PluginInstance when nobody needs it
	anymore. Add two flags, HasShutdown and IsShuttingDown informing about
	the current shutdown status. Destructor: rename to Shutdown and make
	sure we zero/null out all the fields. Finalize: removed, not used.
	Also ensure that the PluginInstance is not deleted until the managed
	appdomain has been unloaded, since managed code has references to it.
	Maintain a counter of the number of instances alive so that we can detect
	when they are all deleted.

	* plugin-class.cpp: Make html_release_object thread-safe by marshalling
	any calls to the main thread. Also detect if the plugin has shut down
	when trying to retain or release a npobject, in which case do nothing
	at all,	since firefox has already freed it.

	* plugin-glue.cpp: Don't delete the plugin instance, call Shutdown
	instead and unref it. Only shutdown moonlight if all the plugin instances
	and all the deployments have been destroyed.

	r: andreia

2009-09-29  Rolf Bjarne Kvinge  <RKvinge@novell.com>

	* plugin.cpp: Remove unused variable (fixes compiler warning).

	r: spouliot

2009-09-29  Rolf Bjarne Kvinge  <RKvinge@novell.com>

	* cbinding.h: Regenerated.

	r: alan, spouliot

2009-09-25  Sebastien Pouliot  <sebastien@ximian.com>

	* plugin-class.cpp|h|h.in: Change html_object_invoke[_self] to 
	return the boolean representing the invokation result.

	r: andreia

2009-09-24  Rolf Bjarne Kvinge  <RKvinge@novell.com>

	* plugin-debug.cpp: Remove unused variable (fixes compiler warning).

	r: andreia

2009-09-23  Chris Toshok  <toshok@ximian.com>

	* plugin-class.cpp (EventObjectCreateWrapper): return
	dependency_object_classes [MOUSE_EVENT_ARGS_CLASS]; for both
	MOUSEBUTTONEVENTARGS and MOUSEWHEELEVENTARGS.

	fixes DRT #50 regression.
	
	r: lewing
	
2009-09-23  Chris Toshok  <toshok@ximian.com>

	* cbinding.h: regen.

	r: lewing

2009-09-23  Chris Toshok  <toshok@ximian.com>

	* plugin-accessibility.h (class Accessibility):
	@ManagedEvents=Manual

	* cbinding.h: regen.

	r: spouliot, andriea

2009-09-18  Jackson Harper  <jackson@ximian.com>

	* plugin-class.cpp:
	* plugin.cpp: Remove the import_default_xmlns stuff, this is
	handled by flags now.
	* cbinding.h: regen

2009-09-16  Jeffrey Stedfast  <fejj@novell.com>

	* plugin.cpp (Properties): Display the RuntimeVersion attribute.

	r:toshok

2009-09-14  Chris Toshok  <toshok@ximian.com>

	* plugin-class.cpp (MoonlightErrorEventArgs::GetProperty): use
	ErrorEventArgs accessors.

	* plugin.cpp (PluginInstance::network_error_tickcall): pass a
	MoonError to the ErrorEventArgs ctor.
	(PluginInstance::splashscreen_error_tickcall): same.
	(PluginXamlLoader::TryLoad): same, use accessor.
	(PluginInstance::ManagedExceptionToErrorEventArgs): same.

2009-09-14  Jackson Harper  <jackson@ximian.com>

	* plugin-debug.cpp: Use foreach instead of gtkiter

2009-09-11  Sebastien Pouliot  <sebastien@ximian.com>

	* plugin.cpp: Fix regression/crash on DRT455 since 
	splashscreensource is now freed. Add missing g_free on 
	vm_missing_file

	r: sde

2009-09-11  Rolf Bjarne Kvinge  <RKvinge@novell.com>

	* cbinding.h: Regenerated.

	r: sde

2009-09-10  Jackson Harper  <jackson@ximian.com>

	* plugin.cpp: Add some namescope info to the debugging tree

	r: spouliot

2009-09-10  Jackson Harper  <jackson@ximian.com>

	* plugin.cpp|h: Update signature on SetProperty

2009-09-09  Chris Toshok  <toshok@ximian.com>

	* plugin.cpp (PluginInstance::PluginInstance): init
	culture/uiculture to null.
	(PluginInstance::~PluginInstance): free culture/uiculture, and
	also plug a leak by freeing onSourceDownloadProgressChanged,
	onSourceDownloadComplete, and splashscreensource.
	(PluginInstance::Initialize): parse culture/uiculture <param>
	tags.
	(PluginInstance::InitializePluginAppDomain): track change to
	InitializeDeployment argcount
	(PluginInstance::ManagedInitializeDeployment): add
	culture/uiculture args when calling the managed methods.

	r: andreia

2009-09-03  Stephane Delcroix  <sdelcroix@novell.com>

	* plugin-class.cpp|.g.cpp.in|.h.in: no longer auto generate bindings
	for MSI, copy paste the autogenerated from .g.cpp to .cpp. add a 
	SetProperty method and use to set the UriSource of the DZITS instead
	of creating a new DZITS everytime.

	* plugin-class.h|g.cpp: regen

2009-09-03  Alan McGovern  <amcgovern@novell.com>

	* plugin.cpp: It's possible that window will be null, so check
	  it exists before using it. r: toshok

2009-08-27  Chris Toshok  <toshok@ximian.com>

	* plugin.cpp (PluginInstance::NewStream): set the current deployment here.

	r: kangaroo
	
2009-08-26  Jackson Harper  <jackson@ximian.com>

	* plugin.cpp: check for the zip file magic instead of using file
	extension. r: toshok

2009-08-26  Alan McGovern  <amcgovern@novell.com>

	* cbinding.h: regen r: shana

2009-08-26  Jackson Harper  <jackson@ximian.com>

	* plugin.cpp: Use the xaml function for parsing bools so things
	like enablehtmlaccess=1 are handled properly.

	r: shana && kangaroo

2009-08-24  Sebastien Pouliot  <sebastien@ximian.com>

	* plugin-class.cpp: Free NPVariant array leaks

	r: andreia

2009-08-16  Chris Toshok  <toshok@ximian.com>

	* plugin.cpp (plugin_menu_about): we aren't doing previews
	anymore, we're doing betas.

	r: andreia
	
2009-08-12  Alan McGovern  <amcgovern@novell.com>

	* cbinding.h: regen r: toshok

2009-07-30  Rolf Bjarne Kvinge  <RKvinge@novell.com>

	* plugin.mdp: Connect the Build command in
        MonoDevelop with 'make install'.

2009-07-27  Rolf Bjarne Kvinge  <RKvinge@novell.com>

	* plugin.mdp: Use Makefile integration.

2009-07-23  Sebastien Pouliot  <sebastien at ximian.com>

	* plugin.cpp: Make sure 'source_original' is set even when scripting
	is used to initialize source. Remove xdomain warnings from mstv.cz

2009-07-22  Rolf Bjarne Kvinge  <RKvinge@novell.com>

	* plugin-class.cpp:
	* plugin-class.h.in: Added html_object_retain.

	* plugin-class.h: Regenerated.

2009-07-22  Rolf Bjarne Kvinge  <RKvinge@novell.com>

	* plugin.mdp: Updated.

2009-07-22  Sebastien Pouliot  <sebastien at ximian.com> 

	* plugin-class.cpp: Fix DEBUG_WARN_NOTIMPLEMENTED macro to output 
	all related information on the same line. Use NULL_TO_NPVARIANT
	with MoonId_MethodName (since this is a string).
	* windowless.cpp: Initialize GdkEventKey correctly (valgrind) and
	provide a Window pointer so we avoid a SEGSIGV when TextBox calls
	gtk_im_context_xim_filter_keypress (webide)

2009-07-22  Rolf Bjarne Kvinge  <RKvinge@novell.com>

	* plugin-class.cpp: Incorporate significant advances in debugging
	technology.

2009-07-20  Chris Toshok  <toshok@ximian.com>

	* plugin-class.cpp (MoonlightContentObject::Invoke): pass null for
	resource_base.
	(MoonlightContentObject::Invoke): same.

	* plugin.h|cpp: add resource base parameters to all the XamlLoader
	calls, and pass stream->url for that value when we have it.

	* cbinding.h: regen.
	
2009-07-20  Chris Toshok  <toshok@ximian.com>

	* plugin-class.cpp (MoonlightDependencyObjectObject::Invoke): add
	the fallback findName lookup here, since we removed it from
	DependencyObject::FindName.

2009-07-18  Jackson Harper  <jackson@ximian.com>

	* plugin-class.cpp:
	* plugin.h|cpp: Add a flag to import the default xmlns. Basically
	nothing sets this to true except for the JS CreateFromXaml
	function.

2009-07-17  Larry Ewing  <lewing@novell.com>

	* plugin.cpp:  get agressive about flushing loaded events to the
	plugin from splash elements.  Fixes 285,445.

2009-07-16  Larry Ewing  <lewing@novell.com>

	* plugin.cpp, plugin.h: rework the splash logic to handle document
	fragment references and get closer to emitting the correct events
	in the correct order.

	* plugin-class.cpp: use PluginInstance::IsLoaded instead of poking
	at the surface.

2009-07-17  Rolf Bjarne Kvinge  <RKvinge@novell.com>

	* cbinding.h: Regenerated.

2009-07-16  Rolf Bjarne Kvinge  <RKvinge@novell.com>

	* plugin.cpp: PluginInstance::UpdateSourceByReference: add a
	Deployment::SetCurrent.

2009-07-16  Rolf Bjarne Kvinge  <RKvinge@novell.com>

	* plugin-entry.cpp: Push/Pop the current deployment on every
	transition to the browser. Makes MS DRT #2003 not spew a lot
	of deployment mismatch warnings.

2009-07-15  Larry Ewing  <lewing@novell.com>

	* plugin.cpp: reconnect onload in LoadXAML and LoadXAP so that
	source changes reset the oneshot call.  Fixes DRT#21.

2009-07-13  Sebastien Pouliot  <sebastien at ximian.com> 

	* plugin.cpp: Check for NULL *and* Empty inside UpdateSource.
	Gives a bit of progress for DRT#354

2009-07-13  Rolf Bjarne Kvinge  <RKvinge@novell.com>

	* cbinding.h: Regenerated.

2009-07-13  Alan McGovern  <amcgovern@novell.com>

	* plugin-class.h.in: Var should be named
	  'OnSourceDownloadComplete' not 'OnSourceDownloadCompleted'

2009-07-13  Alan McGovern  <amcgovern@novell.com>

	* cbinding.h: Commit the initial implementation of the
	  TabNavigationWalker. Supports the three tabbing modes and
	  also forward/backward tabbing. Passes drt 323 except for a
	  default focusing issue.

2009-07-10  Sebastien Pouliot  <sebastien at ximian.com> 

	* plugin.cpp: Only call EmitSourceDownloadComplete is we needed
	to download the splashscreen (versus embedded using #)

2009-07-10  Sebastien Pouliot  <sebastien at ximian.com>

	* plugin.cpp|h, plugin-class.cpp|h: Rename 
	SourceDownloadCompletedEvent to SourceDownloadCompleteEvent

2009-07-09  Sebastien Pouliot  <sebastien at ximian.com>

	* plugin.cpp: Check for redirection each time a new stream
	is created (i.e. before downloading) using the current URI (not
	the original one) so we can detect redirection correctly.

2009-07-07  Rolf Bjarne Kvinge  <RKvinge@novell.com>

	* plugin-class.cpp: EventObjectCreateWrapper: return null as the
	wrapper for a null object.

2009-07-02  Rolf Bjarne Kvinge  <RKvinge@novell.com>

	* plugin-downloader.h: Add response getter.

	* plugin-downloader.cpp: Regenerated.

	* cbinding.h: Regenerated.

2009-07-01  Rolf Bjarne Kvinge  <RKvinge@novell.com>

	* plugin-downloader.cpp: When calling Send, reset the finished
	field, so that we abort it properly upon destruction if the
	PluginDownloader has been reused.

2009-07-01  Chris Toshok  <toshok@ximian.com>

	* plugin-proxy.cpp (load): check the return value of
	dlopen(libmono.so) before we make use of mono_config_parse_memory.

	* plugin-entry.cpp: remove the moz-sdk includes, since they get
	pulled in from moonlight.h

	* plugin-class.h|cpp (MoonlightContentObject::GetProperty): add
	Accessibility support.
	(MoonlightContentObject::SetProperty): same.
	(MoonlightContentObject::~MoonlightContentObject): unref the
	accessibility object.

	* moonlight.h: add the moz-sdk/ prefix for the np* headers here.

	* Makefile.am (libmoonplugin_la_SOURCES): add
	plugin-accessibility.
	(INCLUDES): remove the moz-sdk include, and add it the #includes
	so things work when files are included from the src/ directory.

	* plugin-accessibility.h|cpp: new DependencyObject subclass to
	represent the plugin's content.accessibility object.
	
	* cbinding.h, plugin-class.h: regen.

2009-06-30  Jackson Harper  <jackson@ximian.com>

	* plugin-class.cpp: Update function signature, add the validate
	templates param
	* cbinding.h: regen

2009-06-30  Alan McGovern  <amcgovern@novell.com>

	* plugin-class.cpp: Use SetValueWithError instead of SetValue
	  and propagate the exception back to javascript. Fixes drt
	  638

2009-06-29  Sebastien Pouliot  <sebastien@ximian.com>

	* plugin.cpp: Initialize enable_html_access to true since the value
	can be queried before anything is loaded (e.g. scripting). Remove
	failure message from DRT #21 bitmap.

2009-06-26  Chris Toshok  <toshok@ximian.com>

	* plugin-class.h.in|cpp: add support for GridLengths.

	* plugin-class.h: regen.

2009-06-26  Larry Ewing  <lewing@novell.com>

	* plugin-class.h.in: add MoonlightCornerRadius and MoonIds.

	* plugin-class.cpp: implement cornerradius foo.

2009-06-25  Chris Toshok  <toshok@ximian.com>

	* plugin-class.cpp (thickness_mapping): fix the mapping of "top"
	to MoonId_Top, not MoonId_Right.  Fixes drt test 421.

2009-06-25  Chris Toshok  <toshok@ximian.com>

	* plugin.cpp (PluginXamlLoader::SetProperty): track change to
	xaml_is_valid_event_name.

2009-06-25  Chris Toshok  <toshok@ximian.com>

	* plugin-class.cpp (_set_dependency_property_value): add a
	MoonError parameter so we can communicate it back to our callers.
	(MoonlightTextBoxObject::Invoke): use textbox->SelectWithError and
	throw the exception if it failed.
	(MoonlightPasswordBoxObject::Invoke): same.

2009-06-25  Chris Toshok  <toshok@ximian.com>

	* plugin-class.cpp (MoonlightCollectionObject::Invoke): add
	"remove(string)" support for resource dictionaries.
2009-06-25  Chris Toshok  <toshok@ximian.com>

	* plugin-class.cpp (value_to_variant): add support for
	FontWeight/Style/Stretch here.  Fixes DRT test 94.

2009-06-25  Rolf Bjarne Kvinge  <RKvinge@novell.com>

	* cbinding.h: Regenerated.

2009-06-25  Sebastien Pouliot  <sebastien@ximian.com>

	* plugin-class.cpp: Return "" not NULL for empty files (DRT #180)

2009-06-25  Rolf Bjarne Kvinge  <RKvinge@novell.com>

	* plugin-class.cpp: proxy_listener_to_javascript: we need to restore
	the current deployment after returning from javascript, if the
	javascript did anything which caused firefox to process events,
	we may have entered any other deployment while processing those
	events.

2009-06-24  Chris Toshok  <toshok@ximian.com>

	* cbinding.h: regen.

2009-06-22  Chris Toshok  <toshok@ximian.com>

	* plugin-class.h.in|cpp: MediaElements and Images need to subclass
	from UIElement here instead of DependencyObject, or else we can't
	call UIElement methods on them.  gets fixture #282 further than
	the stupid .js error.

	* plugin-class.h: regen

2009-06-19  Rolf Bjarne Kvinge  <RKvinge@novell.com>

	* plugin-class.cpp: Add support for MultiScaleImage methods.

	* plugin-class.g.cpp.in: Added required header.

	* plugin-class.g.cpp:
	* plugin-class.h:
	* cbinding.h: Regenerated.

2009-06-19  Rolf Bjarne Kvinge  <RKvinge@novell.com>

	* plugin.mdp: Updated with new files.

2009-06-18  Jeffrey Stedfast  <fejj@novell.com>

	* plugin-class.cpp (value_to_variant): Handle Type::CHAR by
	converting to an NPVariant string.

2009-06-18  Sebastien Pouliot  <sebastien@ximian.com>

	* cbinding.cpp|h: regen
	* plugin.cpp|h: Keep the original location and source (before any
	redirection can happen) and use them in the check for cross-domain
	applications. Fixing DRT 955-958

2009-06-17  Chris Toshok  <toshok@ximian.com>

	* plugin-class.h.in, plugin-class.cpp: add textbox and passwordbox
	types (select and selectAll methods.)

	* plugin-class.g.*, cbinding.h: regen.

2009-06-17  Alan McGovern  <amcgovern@novell.com>

	* plugin-class.g.cpp.in: We need to include textbox.h 

2009-06-17  Rolf Bjarne Kvinge  <RKvinge@novell.com>

	* plugin.cpp: SetXapLocation must be set before 
	ManagedInitializeDeployment is called, since
	ManagedInitializeDeployment ends up executing managed code, which
	may need SetXapLocation to be set (for downloading files). 
	MS DRT #483 is an example.

2009-06-16  Sebastien Pouliot  <sebastien@ximian.com>

	* plugin.cpp: Set default cross_domain_app to false since using
	embedded XAML is valid (and not cross domain) and won't trigger
	a load (to update the value). Should fix XAML #401 test

2009-06-15  Sebastien Pouliot  <sebastien@ximian.com>

	* plugin.cpp|h: Move cross-domain application check to it's own
	method. Call it once we download the source (it could be later
	than anticipated). This fix sites using custom scripts like 
	ASP.NET <asp:Silverlight>
	* plugin-class.cpp: Don't emit javascript events for cross
	domain applications.

2009-06-15  Rolf Bjarne Kvinge  <RKvinge@novell.com>

	* plugin.cpp: same_site_of_origin: add nre protection. Makes
	moonlight test #408 not crash.

2009-06-15  Rolf Bjarne Kvinge  <RKvinge@novell.com>

	* plugin-class.cpp: Update after MediaElementState -> MediaState 
	name change.

2009-06-13  Sebastien Pouliot  <sebastien@ximian.com>

	* plugin.cpp|h: Move cross-domain application check earlier to
	not register the events (e.g. onLoad, onError...) for cross-domain
	applications. Complete fix for DRT 361, 362, 364, 365 and 370

2009-06-12  Sebastien Pouliot  <sebastien@ximian.com>

	* plugin.cpp|h: Fix 'enableHtmlAccess' to have a different 
	default value when used for the same 'site of origin' (true)
	wrt to be used for 'cross-domain' applications (false).
	* plugin-class.cpp: Add restrictions on cross-domain applications
	based on the manifest ExternalCallersFromCrossDomain value.

2009-06-11  Rolf Bjarne Kvinge  <RKvinge@novell.com>

	* plugin.cpp: Disable the spinner for now, it's breaking a lot of
	tests.

2009-06-10  Larry Ewing  <lewing@novell.com>

	* plugin.cpp (CreateWindow): add a simple spinner if nothing is
	specified.

	* plugin-spinner.h: new simple spinner.

2009-06-08  Chris Toshok  <toshok@ximian.com>

	* plugin.cpp (class PluginClosure): new class to wrap
	PluginInstance.
	(PluginInstance::network_error_tickcall): use PluginClosure.
	(PluginInstance::splashscreen_error_tickcall): use PluginClosure,
	also don't UpdateSource if the surface is zombified (since the
	plugin is likely already gone.)
	(PluginInstance::UrlNotify): use PluginClosure's and add the tick
	calls directly via the timemanager so we can specify both method
	and closure.

	* plugin.h (class PluginInstance): make network_error_tickcall and
	splashscreen_error_tickcall static methods on PluginInstance.

2009-06-08  Jackson Harper  <jackson@ximian.com>

	* plugin.cpp|h: Update signature for SetProperty

2009-06-05  Chris Toshok  <toshok@ximian.com>

	* plugin.cpp (PluginInstance::UrlNotify): only emit the 2104 error
	if the network failure was on the XAP itself.  move the
	Deployment::SetCurrent call a little earlier, and make the splash
	screen download error async as well.

2009-06-04  Chris Toshok  <toshok@ximian.com>

	* plugin.cpp (PluginInstance::MonoGetPropertyFromName): new
	method, look up the property on a type and print a nice warning if
	we fail.
	(surface_network_error_tickcall): we can't emit the network error
	from inside UrlNotify, since the handler can remove the plugin at
	that point, and firefox takes a shit all over itself in that case.
	(PluginInstance::UrlNotify): if there was a network error
	downloading the xap, add the tick call to emit the proper error.
	(PluginInstance::InitializePluginAppDomain): look up the
	MoonException type and some properties to use when accessing it.
	(PluginInstance::ManagedExceptionToErrorEventArgs): convert from a
	managed exception to an ErrorEventArgs which we'll then emit
	through the surface's ErrorEvent.
	(PluginInstance::ManagedCreateXamlLoader): check for an exception,
	and if there was one, emit the error on the surface.
	(PluginInstance::ManagedInitializeDeployment): same.
	(PluginInstance::ManagedDestroyApplication): same.

	* plugin-class.cpp (EventListenerProxy::proxy_listener_to_javascript):
	set the current deployment earlier.  definitely needs to be set
	before we call the callback :)

2009-06-02  Geoff Norton  <gnorton@novell.com>

	* plugin.cpp: Ensure we dont start downloading the source until we have
	the splash.  If the splash 404's we need to emit a 2108.

2009-06-02  Rolf Bjarne Kvinge  <RKvinge@novell.com>

	* cbinding.h: Regenerated

2009-06-01  Chris Toshok  <toshok@ximian.com>

	* plugin-class.cpp (MoonlightContentObject::Invoke): for
	createFromXaml make sure we call LoadVM on the XamlLoader so we
	can access managed types (like StackPanel).

2009-06-01  Chris Toshok  <toshok@ximian.com>

	* plugin-class.cpp|h: add MoonlightThickness* and add
	Type::THICKNESS to value_to_variant.  this fixes a few instances
	in the tests where they're accessing margins from javascript.

2009-05-28  Jeffrey Stedfast  <fejj@novell.com>

	* plugin-utils.cpp: New source file which has utility functions
	such as check_arg_list().

	* plugin-class.h.in: Removed static impl of check_arg_list() -
	this was causing compile warnings about unused functions and also
	bloating up the binary ;-)

2009-05-28  Rolf Bjarne Kvinge  <RKvinge@novell.com>

	* plugin.cpp: Sprinkle SetCurrentDeployment.

2009-05-27  Geoff Norton  <gnorton@novell.com>

	* plugin.cpp|h: Ensure we only emit the source progress/completed events
	on the source, and not on the source splash ourself.  Also, we need to make
	sure we have a toplevel before emitting otherwise sender is null going to the
	js event.

2009-05-27  Geoff Norton  <gnorton@novell.com>

	* plugin.cpp|h:
	* plugin-class.cpp|h|h.in: Support the splash screen progress/completed events
	* cbinding.h: regen

2009-05-27  Geoff Norton  <gnorton@novell.com>

	* plugin.cpp: Avoid a double-delete of the splash xaml_loader

2009-05-27  Geoff Norton  <gnorton@novell.com>

	* plugin.cpp|h: Support splash screen.

2009-05-27  Geoff Norton  <gnorton@novell.com>

	* plugin.cpp|h: Ensure we spin up a default application for the xaml
	case as well since <Canvas><StackPanel /></Canvas> works.

2009-05-27  Rolf Bjarne Kvinge  <RKvinge@novell.com>

	* plugin-downloader.h:
	* plugin-downloader.cpp: Add support for retrieving response headers
	  and disable cache.

	* cbinding.h: Regenerated.

	* browser-bridge.h: Updated according to downloader API changes.

	* plugin.mdp: Updated.

2009-05-27  Rolf Bjarne Kvinge  <RKvinge@novell.com>

	* plugin-downloader.cpp: Don't hard code the verb.

2009-05-25  Chris Toshok  <toshok@ximian.com>

	* plugin-class.cpp (value_to_variant): robustify this and support
	NULL Value*'s.  Fixes crash in DRT #485.

2009-05-23  Chris Toshok  <toshok@ximian.com>

	* plugin-class.cpp, plugin-class.h: add a Control plugin class,
	which exposes "focus".  Should get DRT #250 a little further (and
	keep it from timing out.)

2009-05-21  Rusty Howell  <rhowell@novell.com>

	 * Makefile.am: Changed install dir to DIST_SUBDIRS for make dist

2009-05-21  Andreia Gaita  <avidigal@novell.com>

	* plugin-class.cpp: disable throwing js exceptions on html_object_invoke
	and html_object_get_property, the exceptions get stuck on firefox and
	any subsequent eval call will fail

2009-05-21  Rolf Bjarne Kvinge  <RKvinge@novell.com>

	* npstream-request.cpp: Fix typo.

2009-05-20  Rusty Howell  <rhowell@novell.com>

	 * Makefile.am: Added install dir to SUBDIRS for 'make dist'

2009-05-20  Larry Ewing  <lewing@novell.com>

	* plugin.cpp (TryLoad): update the error string for 2021 to match
	2.0.

2009-05-19  Rolf Bjarne Kvinge  <RKvinge@novell.com>

	* cbinding.cpp|h: Regenerated.

2009-05-18  Rolf Bjarne Kvinge  <RKvinge@novell.com>

	* cbinding.cpp|h: Regenerated.

2009-05-18  Rolf Bjarne Kvinge  <RKvinge@novell.com>

	* cbinding.cpp|h: Regenerated.

2009-05-18  Rolf Bjarne Kvinge  <RKvinge@novell.com>

	* cbinding.cpp|h: Regenerated.

2009-05-18  Rolf Bjarne Kvinge  <RKvinge@novell.com>

	* plugin.h: Add a GetBrowserHost which returns a void* to avoid
	putting NPObject/mozilla headers in the c bindings.

	* cbinding.cpp|cbinding.h: Regenerated.

2009-05-17  Andreia Gaita  <avidigal@novell.com>

	* plugin-class.cpp: If a managed method called from js returns
	void, create a valid NPVariant_Void return object

2009-05-15  Chris Toshok  <toshok@ximian.com>

	* plugin-class.cpp (MoonlightCollectionObject::Invoke): for
	getItem on a resource dictionary, a string parameter (the key)
	works as well.

2009-05-13  Jackson Harper  <jackson@ximian.com>

	* plugin.cpp|h: Update params for SetProperty.

2009-05-12  Larry Ewing  <lewing@novell.com>

	* plugin-debug.cpp (reflect_value): add output for point.

2009-05-11  Larry Ewing  <lewing@novell.com>

	* plugin-class.cpp: remove UpdateLayout now that it is
	autogenerated.

2009-05-09  Andreia Gaita  <avidigal@novell.com>

	* plugin-class.h.in, plugin-class.g.cpp.in: Added, used to 
	generate Moonlight* classes and MoonId types, for automatic
	js binding with the GenerateJSBinding annotation.
	plugin-class.cpp has the bulk of the code, plugin-class.g.cpp
	has the autogenerated implementations.

	* plugin-class.[h|g.cpp]: regen.

	* plugin-class.cpp: moved some definitions to the header file,
	so .g.cpp can use them too. Added uielement class support, which
	is autogenerated on plugin-class.g.cpp. Removed CaptureMouse and
	ReleaseMouseCapture, it's handled on uielement on .g.cpp now.

	* Makefile.am: Added plugin-class.g.cpp

2009-05-03  Chris Toshok  <toshok@ximian.com>

	* plugin-class.h|.cpp (MoonlightDependencyObjectObject::Invoke):
	add UpdateLayout() as a JS callable function.  fixable a JS error
	in the MS DRT.

2009-05-02  Chris Toshok  <toshok@ximian.com>

	* plugin-proxy.cpp (load): add RTLD_GLOBAL to real_plugin,
	otherwise we can't call mono_config_parse_memory from the plugin
	loader (since it doesn't link to libmono directly).

2009-05-02  Rusty Howell  <rhowell@novell.com>

	* plugin-proxy.cpp: Detect which libmoonloader we are (xpi or sys)
	and dlopen accordingly
	* moonlight.h: Remove PLUGIN_INSTALL
	* plugin-proxy-xpi.cpp: removed from svn
	* Makefile.am: Added check in user-plugin target.
	Changed source of libmoonloader back to plugin-proxy.cpp

2009-04-22  Chris Toshok  <toshok@ximian.com>

	* moonlight.h: moon the #include <glib.h> here from windowless so
	we can guarantee glibconfig.h has been included before we check
	GLIB_SIZEOF_VOID_P.

	* windowless.h: drop the include glib.h from here.

2009-04-22  Rusty Howell  <rhowell@novell.com>

	* make builds separate binaries for xpi
		libmoonloaderxpi, libmoonpluginxpi

2009-04-20  Chris Toshok  <toshok@ximian.com>

	* plugin.cpp (plugin_menu_about): use a preview link for preview
	releases.

2009-04-18  Chris Toshok  <toshok@ximian.com>

	* plugin-class.cpp (value_to_variant): add support for FontFamily.

2009-04-18  Chris Toshok  <toshok@ximian.com>

	* plugin-class.cpp (MoonlightStoryboardObject::Invoke): track
	storyboard changes.

2009-04-17  Chris Toshok  <toshok@ximian.com>

	* plugin.h|.cpp: remove loaded_xap field, and use
	GetDeployment()->IsLoadedFromXap().  Also, switch from
	Surface::SetXapLocation to Deployment::SetXapLocation.

2009-04-16  Jeffrey Stedfast  <fejj@novell.com>

	* plugin-debug.cpp (reflect_value): Hush formatter warnings.

2009-04-16  Geoff Norton  <gnorton@novell.com>

	* plugin-debug.cpp: Avoid having a null deployment in remove_destroyed.

2009-04-16  Geoff Norton  <gnorton@novell.com>

	* plugin-debug.cpp: Avoid having a null deployment in selection_changed.

2009-04-15  Rolf Bjarne Kvinge  <RKvinge@novell.com>

	* plugin.h:
	* plugin.cpp:
	* plugin-class.cpp: Implement some missing js properties.
	  Almost completely fixes MS DRT #21.

2009-04-15  Stephane Delcroix  <sdelcroix@novell.com>

	* plugin.cpp (PluginInstance::LoadXAP): set the surface xap_location

2009-04-14  Rolf Bjarne Kvinge  <RKvinge@novell.com>

	* plugin.h:
	* plugin.cpp:
	* plugin-class.h: Added @GeneratePInvoke to all methods used
	  in managed code. For C++ methods also generate the
	  corresponding C method.

	* cbinding.h:
	* cbinding.cpp: Regenerated.

2009-04-10  Jackson Harper  <jackson@ximian.com>

	* plugin-class.cpp: Instead of unreffing just delete the value.

2009-04-09  Jackson Harper  <jackson@ximian.com>

	* plugin.cpp: Updated method names.
	* plugin-class.cpp: Update now that we are getting Value*s from
	xaml.

2009-04-08  Geoff Norton  <gnorton@novell.com>

	* plugin-debug.cpp: Ensure we set the Deployment here too to avoid
	crashes in the XAML window.

2009-04-08  Jeffrey Stedfast  <fejj@novell.com>

	* plugin*.cpp|h: Use glib integer types rather than stdint.h types
	especially see as how we aren't including stdint.h anywhere.

	* plugin-class.cpp: Updated for slight Downloader API changes.

2009-04-07  Larry Ewing  <lewing@novell.com>

	* plugin-debug.cpp (reflect_value): Fix the markup for GRIDLENGTH
	so that it renders.

2009-04-06  Geoff Norton  <gnorton@novell.com>

	* plugin-debug.cpp: Ensure we set our deployment before poking in
	the surface

2009-04-03  Sebastien Pouliot  <sebastien@ximian.com>

	* plugin.cpp|h: Parse enablehtmlaccess and allowhtmlpopupwindow
	from the plugin properties. Add missing properties and C bindings.

2009-04-01  Stephane Delcroix  <sdelcroix@novell.com>

	* plugin-class.cpp: use Uri::ToString instead of originalstring.
	BitmapImage::GetUriSource never returns a NULL

2009-04-01  Andreia Gaita  <avidigal@novell.com>

        * plugin-class.[cpp|h]: move some declarations to the header
        so that the bridge code can use it too.

2009-03-31  Jb Evain  <jbevain@novell.com>

	* plugin-class.h: add key_code and char_code parameters
	to callback_dom_event.

2009-03-30  Chris Toshok  <toshok@ximian.com>

	* plugin.cpp: #include timemanager.h

2009-03-29  Geoff Norton  <gnorton@novell.com>

	* plugin-class.cpp: Ensure that the ImageSource we get is a BitmapImage
	before treating it as such.

2009-03-29  Geoff Norton  <gnorton@novell.com>

	* plugin-class.cpp: Image.Source is always a BitmapImage

2009-03-28  Sebastien Pouliot  <sebastien@ximian.com>

	* plugin.cpp|h: Export a new function (get_plugin_dir) that returns
	the location of the plugin.
	* plugin-glue.cpp: Initialize the runtime using the plugin location.

2009-03-27  Andreia Gaita  <avidigal@novell.com>

	* plugin.cpp: Don't release return from Eval if they're npobj,
	client code might reference it later

2009-03-25  Chris Toshok  <toshok@ximian.com>

	* plugin.cpp (PluginInstance::StreamAsFile): use uri accessors.

	* plugin-class.cpp (MoonlightImageBrushObject::GetProperty): same.
	(MoonlightImageObject::GetProperty): same.

	* plugin-debug.cpp (get_common_prefix_len): same.
	(save_callback): same.

2009-03-25  Jeffrey Stedfast  <fejj@novell.com>

	* plugin-class.cpp (MoonlightObjectType::LookupName): No longer
	takes an include_sl2 argument.

	* plugin.cpp (PluginInstance::StreamAsFile): We no longer have
	IsSilverlight2() so check the filename extension (fixed to not be
	a gross hack). Also got rid of #if PLUGIN_2_0 confusion, we are no
	longer supporting a 1.0-only build.
	(PluginInstance::CreateWindow): Surface.ctor() no longer takes a
	silverlight2 argument.

	* plugin-debug.cpp (reflect_value): Don't crash when the
	DependencyObject is null.

2009-03-25  Rolf Bjarne Kvinge  <RKvinge@novell.com>

	* plugin-class.cpp: Move IsVersionSupported implementation to
	  Surface.

2009-03-25  Rolf Bjarne Kvinge  <RKvinge@novell.com>

	* plugin.mdp:
	* cbinding.h:
	* Makefile.am:
	* cbinding.cpp: Include generated files in the build.

2009-03-23  Chris Toshok  <toshok@ximian.com>

	* plugin-class.cpp (value_to_variant): getting a Uri in the plugin
	returns a string.

2009-03-21  Andreia Gaita  <avidigal@novell.com>

	* plugin-class.[h|cpp]: Add html_object_invoke_self
	(same as _invoke but with no name arg), that uses
	NPN_InvokeDefault	instead.

2009-03-21  Chris Toshok  <toshok@ximian.com>

	* plugin-class.cpp (MoonlightImageObject::GetProperty):
	source->GetUriSource() returns a Uri, not a string.
	(MoonlightImageBrushObject::GetProperty): same.

2009-03-13  Rolf Bjarne Kvinge  <RKvinge@novell.com>

	* plugin-downloader.h:
	* plugin-downloader.cpp: PluginDownloader: follow refcounting
	  laws and ref/unref the response.This fixes a crash where
	  firefox would unref FFxDownloaderResponse causing its
	  destruction, and then PluginDownloader would attempt to use
	  (abort) that response later on.

2009-03-10  Chris Toshok  <toshok@ximian.com>

	* plugin-class.cpp (MoonlightDependencyObjectObject::Invoke): for
	DumpNameScope, s/LogicalParent/Parent.
	(MoonlightDependencyObjectObject::Invoke): for GetParent, make
	sure the dob is a frameworkelement subclass, and call
	GetLogicalParent on it.

2009-03-10  Jackson Harper  <jackson@ximian.com>

	* plugin-debug.cpp: COnsistentify method name.

2009-03-03  Jackson Harper  <jackson@ximian.com>

	* plugin.cpp|h: Update signature of SetProperty.

2009-03-02  Rolf Bjarne Kvinge  <RKvinge@novell.com>

	* plugin.cpp: Add informational printf.

2009-02-23  Chris Toshok  <toshok@ximian.com>

	* plugin-class.cpp (MoonlightContentObject::Invoke): add better
	error messages on createFromXaml.

2009-02-23  Andreia Gaita  <avidigal@novell.com>

	* plugin-class.[cpp|h]: Add html_object_has_property so managed code
	can check for properties before trying to get them. Free scriptable
	objects hashtables.

2009-02-22  Larry Ewing  <lewing@novell.com>

	* plugin-entry.cpp:
	* plugin.cpp, plugin.h: add extra padding to our NPBool values so
	that buggy browsers don't smash the stack.

2009-02-19  Andreia Gaita  <avidigal@novell.com>

	* plugin-class.[cpp|h]: On [Get|Set]Property for scriptable objects,
	use the property name instead of the handle to call back to the
	property. This way we can reuse the virtual functions on
	ScriptObject, and	it's one less GCHandle walking around.
	Fix exception define to have a block.

2009-02-19  Andreia Gaita  <avidigal@novell.com>

	* plugin-class.cpp: Fix casing lookup

2009-02-19  Andreia Gaita  <avidigal@novell.com>

	* plugin.cpp: Implement returning values from Evaluate
	* plugin-class.[cpp|h]: Expose variant_to_value so Evaluate can
	use it to convert values from js

2009-02-17  Jeffrey Stedfast  <fejj@novell.com>

	* plugin-debug.cpp: Pass true as the only_changed argument to
	DO::GetProperties().

2009-02-17  Rolf Bjarne Kvinge  <RKvinge@novell.com>

	* plugin-class.cpp: Remove case for MediaErrorEventArgs.

2009-02-17  Rolf Bjarne Kvinge  <RKvinge@novell.com>

	* plugin-class.cpp: EventListenerProxy: set our object type
	  upon construction.

2009-02-16  Andreia Gaita  <avidigal@novell.com>

	* plugin-class.cpp: Check return value on GetProperty and throw a js
	exception if it wasn't found. Don't lowercase names, scriptable objects
	are case sensitive.

2009-02-16  Geoff Norton  <gnorton@novell.com>

	* plugin-class.cpp|h: Image(Brush).(Image)Source is the UriSource of the
	underlying ImageSource in the javascript API.

2009-02-14  Jeffrey Stedfast  <fejj@novell.com>

	* plugin-debug.cpp (reflect_dependency_object_in_tree): Updated to
	use DO::GetProperties() instead so that we could get attached
	properties as well.

2009-02-14  Jeffrey Stedfast  <fejj@novell.com>

	* plugin-debug.cpp (reflect_dependency_object_in_tree): Fixed up
	to use Type::GetProperties().

2009-02-11  Andreia Gaita  <avidigal@novell.com>

	* plugin-class.cpp: lowercase all method, property and event name
	references, they're all added in lowercase

2009-02-11  Andreia Gaita  <avidigal@novell.com>

	* plugin-class.cpp (html_object_invoke): Check method invoke return
	value and throw an exception if it fails. Add an alternate "static"
	version of the js exception throwing macro.

2009-02-11  Rolf Bjarne Kvinge  <RKvinge@novell.com>

	* plugin-class.cpp: Change our static DependencyProperty
	  backing fields to store an integer id instead of an
	  instance to a DependencyProperty. This way we can have true
	  per-deployment dependency properties.

2009-02-10  Jackson Harper  <jackson@ximian.com>

	* plugin.cpp|h: Added a param to the SetProperty callback, plugin
	doesn't need to use it for anything.

2009-02-05  Geoff Norton  <gnorton@novell.com>

	* plugin.cpp: We cannot safely null the deployment here as NPN_GetURLNotify
	can sync invoke NPN_URLNotify in the same tick, and we might need the deployment
	later as we unwind.

2009-02-05  Jeffrey Stedfast  <fejj@novell.com>

	* plugin-class.cpp (MoonlightDependencyObjectObject::GetProperty):
	Updated for ReadLocalValue method rename.

	* plugin-downloader.cpp (plugin_downloader_create_webrequest):
	Don't crash if we don't have a browser bridge.

2009-02-04  Jackson Harper  <jackson@ximian.com>

	* plugin.cpp|h: Updated xaml signatures.

2009-02-04  Andreia Gaita  <avidigal@novell.com>

	* plugin-class.[cpp|h]: Change Invoke call to take a name parameter,
	  so that methods can be called by name as well.

2009-02-03  Rolf Bjarne Kvinge  <RKvinge@novell.com>

	* plugin.cpp: PluginInstance::UrlNotify: We need to set the
	  current deployment here.

	* plugin-glue.cpp: NPP_Destroy: We need to set the current
	  deployment here.

2009-02-03  Rolf Bjarne Kvinge  <RKvinge@novell.com>

	* plugin-class.cpp: Use Type::GetName () instead of accessing
	  the field directly.

2009-02-03  Fernando Herrera  <fherrera@novell.com>

	* plugin.cpp: moonlight_flags is 64bits now.

2009-01-30  Rolf Bjarne Kvinge  <RKvinge@novell.com>

	* plugin-class.cpp: proxy_listener_to_javascript: we need to set the
	current deployment after emitting an event to javascript.

2009-01-29  Geoff Norton  <gnorton@novell.com>

	* plugin.cpp:
	* plugin-class.cpp: Ensure that we set the correct context when dtoring our
	plugin and its js-object instances.

2009-01-29  Geoff Norton  <gnorton@novell.com>

	* plugin.cpp: When there are 2 plugins on a page, StreamAsFile can be called
	after the deployment has been changed away from this instance.  Ensure we
	set our deployment properly in this case.

2009-01-29  Geoff Norton  <gnorton@novell.com>
	
	* windowless.cpp: Store our creation deployment so we can emit events
	in the right deployment.

2009-01-29  Geoff Norton  <gnorton@novell.com>

	* plugin.cpp: Register the surface with the Deployment.  Start cleaning
	up all the places we pass this around too.  (More to come)

2009-01-29  Geoff Norton  <gnorton@novell.com>

	* plugin.cpp: Ensure that we create our Surface and SystemTimeSource
	in the correct deployment.

2009-01-29  Larry Ewing  <lewing@novell.com>

	* plugin-debug.cpp (reflect_dependency_object_in_tree): restrict
	the VisualChild expansion away from Panel and border to keep from
	slowing down the tree that Badly.

2009-01-29  Sebastien Pouliot  <sebastien@ximian.com>

	* plugin-class.cpp: Only call NPN_ReleaseObject on callback
	if the object is *not* a string.
	re: toshok

2009-01-29  Rolf Bjarne Kvinge  <RKvinge@novell.com>

	* plugin.cpp: ~PluginInstance: Call Dispose on the deployment and the
	surface. PluginXamlLoader::TryLoad: ref any error arguments we emit
	but didn't create.

2009-01-28  Larry Ewing  <lewing@novell.com>

	* plugin-debug.cpp: show VisualChild on all FEs so that we can
	navigate into ContentPresenter.

2009-01-28  Larry Ewing  <lewing@novell.com>

	* plugin-debug.cpp (reflect_value): add more value types.

2009-01-28  Sebastien Pouliot  <sebastien@ximian.com>

	* plugin-class.cpp: MediaElementState is used as a string inside
	Javascript applications but it's an enum (in the managed world).

2009-01-28  Chris Toshok  <toshok@ximian.com>

	* plugin-debug.cpp (selection_changed): fix crash.
	(reflect_dependency_object_in_tree): add Control handling - put a
	"Visual Child" under it that gives the subtree.

	* plugin-class.cpp (value_to_variant): not sure what to do here
	for UINT32's, since NPVariants only have INT32...

2009-01-27  Rolf Bjarne Kvinge  <RKvinge@novell.com>

	* plugin.cpp: Call Deployment::Initialize in runtime_init.

2009-01-27  Geoff Norton  <gnorton@novell.com>

	* plugin.cpp: Use the static overload here.

2009-01-26  Geoff Norton  <gnorton@novell.com>

	* plugin.cpp: Ensure we're in the right deployment/domain before we
	start poking around in managed land.

2009-01-26 Geoff Norton  <gnorton@novell.com>

	* plugin.cpp|h: Clean this stuff up now that our book-keeper is
	Deployment* not internally on MonoDomain*.
	* plugin-class.cpp: Ensure that we set the tls slot in Deployment
	to the Deployment* this plugin owns before transitioning into libmoon

2009-01-26  Jackson Harper  <jackson@ximian.com>

	* plugin.cpp|h: SourceLocation for Sl2 xaps is the .xap url.

2009-01-26  Geoff Norton  <gnorton@novell.com>

	* plugin.cpp|h: We now go thru Deployment to warm up the application.

2009-01-25  Geoff Norton  <gnorton@novell.com>

	* plugin.cpp: We initialize a Deployment for every plugin regardless
	of wether its 1.0 or 2.0 context now.

2009-01-25  Chris Toshok  <toshok@ximian.com>

	* plugin.cpp (PluginInstance::CreatePluginAppDomain): create/set
	the deployment for this plugin before we return, so it's set
	before Application.CreateFromXap is called.

2009-01-23  Geoff Norton  <gnorton@novell.com>

	* plugin.cpp: Force keep-delegates on in SVN (only if a custom
	MONO_DEBUG doesn't already exist in the environment)

2009-01-23  Rolf Bjarne Kvinge  <RKvinge@novell.com>

	* plugin-debug.cpp: Integrate munxap into our debugging experience.

2009-01-21  Jb Evain  <jbevain@novell.com>

	* plugin.cpp|h: remove PluginInstance::GetBrowserInformation
	and ::EvaluateToVariant as well as
	plugin_instance_get_browser_information which is now implemented
	in the managed code.

2009-01-21  Andreia Gaita  <avidigal@novell.com>

	* plugin-class.[h|cpp]: Add support for registering objects as a
	tree. fix casing on lookups.

2009-01-21  Sebastien Pouliot  <sebastien@ximian.com>

	* plugin-class.cpp: Process the difference between SL1/2 default
	values on a case-by-case basis. Right now this (re-fix) UIElement::
	RenderTransformProperty (wrt null) and FrameworkElement::[Height|
	Width]Property (wrt NaN).

2009-01-20  Geoff Norton  <gnorton@novell.com>

	* plugin-class.cpp: Ensure that we convert doubles in the ASCII
	locale, as we attempt to parse in this locale.

	r: toshok

2009-01-20  Sebastien Pouliot  <sebastien@ximian.com>

	* plugin-class.cpp: Call GetLocalValue on DO so we don't provide the
	default values used in SL2 to SL1 applications. This fix Fox
	http://www.silverlight.net/fox/ while allowing to use the (non-null)
	default value for UIElement::RenderTransformProperty

2009-01-19  Rolf Bjarne Kvinge  <RKvinge@novell.com>

	* plugin.mdp: Updated.

2009-01-18  Geoff Norton  <gnorton@novell.com>

	* plugin-downloader.cpp: Avoid crashing when the bridge isn't available

2009-01-18  Larry Ewing  <lewing@novell.com>

	* plugin-debug.cpp (reflect_foreach_current_value): don't crash if
	we can't lookup the owning type.

2009-01-16  Jb Evain  <jbevain@novell.com>

	* plugin-class.cpp: move STRDUP_FROM_VARIANT and
	STRLEN_FROM_VARIANT to plugin.h
	* plugin.h: also define PluginInstance::EvaluateToVariant
	* plugin.cpp: implement PluginInstance::GetBrowserInformation
	and PluginInstance::EvaluateToVariant.

2009-01-16  Jb Evain  <jbevain@novell.com>

	* plugin.cpp|h: remove PluginInstance::LoadUrl.

2009-01-15  Jackson Harper  <jackson@ximian.com>

	* plugin.cpp|h: Updated signature for the xaml callbacks.

2009-01-13  Geoff Norton  <gnorton@novell.com>

	* plugin.cpp: Fix our MonoDomain cleanup (hopefully) once and for all.

2009-01-13  Geoff Norton  <gnorton@novell.com>

	* plugin.cpp: Don't free domain's until we fix the problems on the 
	mono side associated with that.

2009-01-13  Geoff Norton  <gnorton@novell.com>

	* plugin.cpp: Ensure we finalize the domain before freeing it.

2009-01-13  Jackson Harper  <jackson@ximian.com>

	* plugin.cpp|h: Updated xaml callback sig.

2009-01-13  Jb Evain  <jbevain@novell.com>

	* plugin.cpp: specify System.Windows's fullname when loading it,
	to avoid loading a different version, such as the desktop one.

2009-01-13  Geoff Norton  <gnorton@novell.com>

	* plugin.cpp: Update to build appdomains properly isolated for each 
	PluginInstance.  Also change the location resolution of System.Windows
	slightly.

2009-01-13  Geoff Noton  <gnorton@novell.com>

	* plugin.cpp: Find System.Windows.dll a slightly different way
	so that we can search in MONO_PATH for it and not just the installed
	prefix.  Fixes test runs on the buildbots.

2009-01-12  Jb Evain  <jbevain@novell.com>

	* plugin.h, plugin.cpp: remove the need for a moonlight.exe
	launcher by calling directly methods in System.Windows. We're
	getting the System.Windows relative to the moonlight mscorlib.dll.
	* Makefile.am: remove references to moonlight.cs and moonlight.exe.
	* moonlight.cs: delete.

2009-01-12  Geoff Norton  <gnorton@novell.com>

	* plugin.cpp: Update to reflect changes in the mono embedding API.

2009-01-12  Rolf Bjarne Kvinge  <RKvinge@novell.com>

	* plugin.cpp: Unconfuse a bit: initParams is a char*, so use a boolean
	value to initialize it.

2009-01-10  Jeffrey Stedfast  <fejj@novell.com>

	* plugin.cpp (moonlight_authors): Updated.

2009-01-08  Jeffrey Stedfast  <fejj@novell.com>

	* plugin-class.cpp (MoonlightKeyEventArgsObject::GetProperty):
	Updated for method name changes.

2008-12-19  Rolf Bjarne Kvinge <RKvinge@novell.com> 

	* plugin.mdp: Updated.

2008-12-18  Chris Toshok  <toshok@ximian.com>

	* plugin.h, plugin.cpp: rework the app domain stuff slightly.  we
	now only call mono_jit_init_version once (and don't attempt to
	unload that room AppDomain), and then call mono_domain_create from
	each plugin instance (and we *do* free that AppDomain).

2008-12-17  Chris Toshok  <toshok@ximian.com>

	* plugin.cpp (PluginInstance::MonoInit): turns out this wasn't the
	domain name, but the version.  it needs to be "moonlight".

	* moonlight.cs: remove reference to Helper, as this was only used
	to print out the Mono.Moonlight.dll fully qualified name.

	* Makefile.am: remove references to Mono.Moonlight.dll.

2008-12-17  Chris Toshok  <toshok@ximian.com>

	* plugin.cpp (PluginInstance::MonoInit): supply a function pointer
	that actually exists to dladdr when PLUGIN_INSTALL is defined.
	Also, use a similar app domain name ("moonlight-%p" where %p is
	the PluginInstance*).

2008-12-17  Geoff Norton  <gnorton@novell.com>

	* plugin.cpp: gtk_plug_new takes a GdkNativeWindow which has
	differing precision on amd64 and i586.

2008-12-16  Chris Toshok  <toshok@ximian.com>

	* plugin.h, plugin.cpp: move all the stuff from mono.cpp (and
	moon-mono.h) here.  Remove all global variables and make them
	instance variables on PluginInstance (of particular importance is
	the AppDomain).  This means every PluginInstance gets their own
	app domain, their own boot assembly, etc, and we can drop all the
	AppDomain stuff from moonlight.cs.

	* mono.cpp, moon-mono.h: nuke.

	* plugin-glue.cpp: remove include of moon-mono.h

	* moonlight.cs: remove all the AppDomain specific stuff here - the
	unload handler is gone (replaced by a mono_domain_free call in
	plugin.cpp), the Helper calls to create instances and unwrap them
	has been replaced with type lookups + Activator.CreateInstance.

2008-12-12  Rolf Bjarne Kvinge <RKvinge@novell.com> 

	* plugin.cpp: SetSource: in case we already have a surface, detach
	  downloaders from it right away, this should fix the random failures
	  of ResetCore.

2008-12-03  Larry Ewing  <lewing@novell.com>

	* plugin.cpp: clean up source setting so that the property is
	always set and we don't accidentally schedule more than one idle
	call.

2008-12-03  Rolf Bjarne Kvinge <RKvinge@novell.com> 

	* browser-bridge.h, plugin-class.cpp, plugin-class.h: Rework event
	  attaching/detaching a bit: html_object_attach_event now takes a
	  context argument, which is passed to the event callback.
	  ff2/3-dom.cpp: After removing the event listener we delete the
	  wrapper.

2008-12-02  Chris Toshok  <toshok@ximian.com>

	* plugin-class.cpp (MoonlightScriptControlObject::Invoke): fix
	isVersionSupported - i don't like knocking off 2.0 except when
	PLUGIN_SL_2_0 is enabled, but it seems like if people are checking
	2.0, they'll assume managed code.

2008-11-26  Jackson Harper  <jackson@ximian.com>

	* plugin.cpp|h: The parser no longer requires assemblies to be
	downloaded, so the mapping stuff is commented out.
	- The parser now treats events as properties, so we use
	SetProperty instead of HookupEvent.

2008-11-22  Geoff Norton  <gnorton@novell.com>

	* windowless.cpp: Revert
	* windowless.h: Include glib.h and moonlight.h so that GDK_NATIVE_WINDOW_POINTER
	is defined and GdkNativeWindow gets its correct width of 8 bytes to prevent
	a stack smash.

2008-11-21  Alp Toker  <alp@nuanti.com>

	* plugin-class.cpp: Fix 'DownloadProgressCanged' typo in DOM event
	names leading to dropped events.

2008-11-21  Rolf Bjarne Kvinge <RKvinge@novell.com> 

	* plugin-class.cpp: Implement variant<->value conversion for NPObjects.
	* plugin.h, plugin.cpp: Added plugin_instance_get_id and
	  plugin_instance_get_host.

2008-11-10  Jeffrey Stedfast  <fejj@novell.com>

	Fix for bug #442770

	* plugin-debug.cpp (plugin_debug): Connect to surface
	DestroyedEvent to close the debug window so that it won't crash
	when trying to use it once the site has been navigated away from.

2008-11-06  Stephane Delcroix  <sdelcroix@novell.com>

	* plugin.cpp:
	* plugin-downloader.h|cpp:
	* firefox/browser-http.inc: pass the uri with the finished handler 
	for further validation. r:gnorton

2008-10-31  Chris Toshok  <toshok@ximian.com>

	* plugin.cpp (PluginInstance::CreateWindow): call SetTransparent
	on moon_window instead of the surface.

	* windowless.cpp (MoonWindowless::HandleEvent): pass
	GetTransparent() to Surface::PaintToDrawable here.

2008-10-23  Rolf Bjarne Kvinge <RKvinge@novell.com> 

	* plugin.cpp: Implement EnableRedrawRegions by linking them to
	  RUNTIME_INIT_SHOW_EXPOSE.

2008-10-22  Rolf Bjarne Kvinge <RKvinge@novell.com> 

	* plugin.cpp: Add a row to the Properties dialog informing about the
	  codecs in use.

2008-10-21  Chris Toshok  <toshok@ximian.com>

	* plugin-class.cpp, plugin-class.h: event listener leak fix v3.0

2008-10-21  Chris Toshok  <toshok@ximian.com>

	* plugin-class.cpp, plugin-class.h: since I removed the value_dtor
	from xaml_proxies, we need to iterate over it and destroy the
	proxies manually now.  Also, disavow ownership of proxies when we
	call RemoveHandler.

2008-10-20  Chris Toshok  <toshok@ximian.com>

	* plugin-class.cpp (MoonlightObject::ClearXamlEventProxy): this
	method cannot call RemoveHandler on the proxy.  instead, we return
	the proxy and our callers can do it
	(MoonlightScriptControlObject::SetProperty): here
	(MoonlightContentObject::SetProperty): here
	(MoonlightDependencyObjectObject::SetProperty): and here
	
	(EventListenerProxy::~EventListenerProxy): here we need to clear
	out the xaml/non-xaml proxy regardless of of whether or not it's a
	function.  and make sure to call the right method depending on our
	token.

2008-10-20  Chris Toshok  <toshok@ximian.com>

	* plugin-class.cpp, plugin-class.h: Rather complicated lifecycle
	sorting out dealing with EventListenerProxies - there was a reason
	I was avoiding this :) - fixes bug 436060.

	1) if the target (the object on which the proxy calls AddHandler)
	is destroyed, the proxy should go away.
	
	2) if the owner (the MoonlightObject which created the proxy) is
	invalidated, the proxy should also be invalidated.

	3) if the owner is destroyed, the proxy should call RemoveHandler
	on the target.  Note that we shouldn't destroy the proxy here -
	it'll be destroyed by virtue of the data_dtor stuff in
	EventObject.
	
	* windowless.h, windowless.cpp: add support for experimental
	extension (see mozilla.org bug #430451) for windowless cursors.

2008-10-20  Chris Toshok  <toshok@ximian.com>

	* plugin-entry.cpp: get rid of all those CallNPP_* macro uses.
	just invoke the damn function.

	* plugin-proxy.cpp, moonlight.h: include npfunctions.h instead of npupp.h

	* plugin-glue.cpp, plugin.h: fix types.
	
	* moz-sdk/*: rev to a newer version of the moz-sdk files.

2008-10-17  Rolf Bjarne Kvinge <RKvinge@novell.com> 

	* plugin-class.cpp: proxy_listener_to_javascript: if calldata is null,
	  only pass 1 argument to javascript. Fixes #426440 partially (mp3s
	  are now downloaded).

2008-10-16  Jb Evain  <jbevain@novell.com>

	* moonlight.h: update SL2 mime type and runtime version.

2008-10-14  Chris Toshok  <toshok@ximian.com>

	* windowless.cpp (MoonWindowless::GetGdkWindow): get the
	netscapeWindow from our plugin id and return a new GdkWindow for
	it.

2008-10-14  Stephane Delcroix  <sdelcroix@novell.com>

	* windowless.h|.cpp: implements GetGdkWindow ()

2008-10-08  Rolf Bjarne Kvinge <RKvinge@novell.com> 

	* plugin-class.cpp: Fix statement order.

2008-10-08  Rolf Bjarne Kvinge <RKvinge@novell.com> 

	* plugin.cpp, plugin-class.cpp: Add some null checks, found while using
	  firebug during plugin initialization.

2008-10-07  Larry Ewing  <lewing@novell.com>

	* windowless.cpp (MoonWindowless::HandleEvent): set the crossing
	mode of our synthetic events to normal.  

	Fixes missing mouse leave events for InputHitTst.html (143)
	
2008-10-07  Larry Ewing  <lewing@novell.com>

	* plugin.cpp: remove a redundant call to SetSurface after creating
	a surface, it is handled in the ctor.

	Fixes the double render_cb registration problem we were seeing
	that caused high framerates and starvation problems. 

2008-10-03  Stephane Delcroix  <sdelcroix@novell.com>

	* plugin.cpp: call SetPageURL even for embedded xaml. Makes fixture
	145 break, as expected.

2008-09-30  Chris Toshok  <toshok@ximian.com>

	* plugin-debug.cpp: more debug window work - it's sorted by name
	now, and add support for colors, timespans, and a few other types.

2008-09-30  Chris Toshok  <toshok@ximian.com>

	* plugin-debug.cpp: rework the Debug window entirely.  no we don't
	just show children, but all property values.

2008-09-28  Chris Toshok  <toshok@ximian.com>

	* plugin-class.h,
	plugin-class.cpp (MoonlightDependencyObjectObject::Invoke): add
	support for dumpNameScope.

2008-09-26  Fernando Herrera  <fherrera@novell.com>

	* mono.cpp: Fix compilation when configured with --with-debug=no

2008-09-25  Jeffrey Stedfast  <fejj@novell.com>

	* plugin.cpp (PluginInstance::PluginInstance): Initialize
	source_location to NULL - probably the source of the random
	crashes we were seeing on the buildbot earlier.

2008-09-25  Stephane Delcroix  <sdelcroix@novell.com>

	* plugin.cpp: update the Surface::source_location while setting
	the source_location.

2008-09-25  Rolf Bjarne Kvinge <RKvinge@novell.com> 

	* plugin.cpp: Show a item in the right-click menu allowing the ms
	  codecs to be installed manually.

2008-09-23  Chris Toshok  <toshok@ximian.com>

	* plugin.cpp (PluginInstance::CreateWindow): plug some memory
	leaks.

2008-09-19  Jeffrey Stedfast  <fejj@novell.com>

	* plugin-class.cpp (MoonlightDependencyObjectObject::Invoke): For
	RemoveEventListener(), we don't need to look up the event_id more
	than once.

	* plugin.cpp (PluginXamlLoader::HookupEvent): Call
	event_object_add_xaml_listener() instead of
	event_object_add_javascript_handler() since this is happening as a
	result of a listener being set in the XAML (which means it has to
	have a token value of 0).

	* plugin-class.cpp (EventListenerProxy::AddXamlHandler): New method.
	(event_object_add_xaml_listener): New.

2008-09-19  Stephane Delcroix  <sdelcroix@gnome.org>

	* plugin-class.cpp: use the nex dl->Open interface

2008-09-16  Fernando Herrera  <fherrera@novell.com>

	* Makefile.am: Add asf include dir

2008-09-06  Chris Toshok  <toshok@ximian.com>

	* plugin-class.cpp (MoonlightDependencyObjectObject::Invoke): look
	up the event here, the DO api is gone.
	(EventListenerProxy::~EventListenerProxy): use the DestroyedEvent
	id instead of "destroyed".

2008-09-03  Larry Ewing  <lewing@novell.com>

	* plugin-class.cpp, plugin-class.h: remove all the ControObject
	wrapper foo, Control has the properties we need and this looks
	wrong now.

2008-08-28  Chris Toshok  <toshok@ximian.com>

	* plugin.cpp, plugin-class.cpp: track move from C-binding to C++
	for the xaml_create/hydrate_from* methods.

2008-08-28  Larry Ewing  <lewing@novell.com>

	Make a little progress in getting opera to load the plugin
	correctly in windowless mode.  Opera is still only minimally
	functional but the plugin should come up now.
	
	* plugin.cpp, plugin.h: don't get the source url via GetProperty
	that causes operapluginwrapper to reenter and breaks everything.
	Handle a few other operapluginwrapper quirks and pass resizing
	through the window not the surface (so that UpdateWindowInfo will
	work).

	* plugin-glue.cpp: slightly rework the initialization, don't fixup
	errors just try to fail early.
	
	* windowless.cpp (MoonWindowless::UpdateWindowInfo): new function
	to copy the needed members of NPWindow that opera is prematurely
	destroying.

2008-08-25  Chris Toshok  <toshok@ximian.com>

	* plugin-class.cpp, windowless.cpp: track rect change.

2008-08-20  Rolf Bjarne Kvinge <RKvinge@novell.com> 

	* plugin.cpp: Fix build.

2008-08-20  Rolf Bjarne Kvinge <RKvinge@novell.com> 

	* plugin-downloader.cpp: Drastically enhance the debugging experience
	  here.

2008-08-18  Larry Ewing  <lewing@novell.com>

	* plugin-class.cpp (MoonlightStrokeCollectionObject::Invoke):
	unref the collection we've created.

2008-08-18  Geoff Norton  <gnorton@novell.com>

	* plugin-class.cpp: Its possible that we dont have a surface in the
	OnError case at this point, guard against this.

2008-08-18  Geoff Norton  <gnorton@novell.com>

	* plugin.cpp: Ensure we dont set object.Source to a data mime-type value.

2008-08-18  Geoff Norton  <gnorton@novell.com>

	* windowless.cpp: Null the GdkEventKey.string value.
	* plugin-class.cpp|h: Rename KeyboardEventArgs->KeyEventArgs, 
	but support returning "KeyboardEventArgs" to javacsript toString()
	when in 1.0 mode.

2008-08-17  Geoff Norton  <gnorton@novell.com>

	* plugin.cpp|h: Add a C binding for GetSourceLocation ()

2008-08-17  Chris Toshok  <toshok@ximian.com>

	* plugin.cpp, plugin-class.cpp, mono.cpp, plugin-proxy.cpp,
	plugin.h, moonlight.h, moon-mono.h: SL_2_0 -> SL_PLUGIN_2_0.

2008-08-17  Chris Toshok  <toshok@ximian.com>

	* Makefile.am: INCLUDE_MONO_RUNTIME ->
	INCLUDE_BROWSER_MANAGED_CODE.

2008-08-15  Jeffrey Stedfast  <fejj@novell.com>

	* plugin-class.cpp (MoonlightStylusInfoObject::GetProperty): Use
	the c++ property accessors for the stylus classes.

2008-08-14  Jackson Harper  <jackson@ximian.com>

	* plugin.cpp|h: We now get a 'dest' pointer for hooking up events,
	this is basically ignored by the javascript event hookup since
	everything is in a global space.

2008-08-14  Rolf Bjarne Kvinge <RKvinge@novell.com> 

	* plugin.h: Don't use base_unref, call unref on the instance.

2008-08-14  Geoff Norton  <gnorton@novell.com>

	* plugin.cpp|h: The timeout C bindings are no longer used.

2008-08-14  Rolf Bjarne Kvinge <RKvinge@novell.com> 

	* plugin-class.cpp: Remove spew.
	* moonlight.cs: Don't initialize Helper.Agclr here, it's not in the
	  right AppDomain.

2008-08-13  Geoff Norton  <gnorton@novell.com>

	* plugin.cpp|h: Reuse the old html_timer infrastructure for the
	intial DispatcherTimer implementation.

2008-08-13  Rolf Bjarne Kvinge <RKvinge@novell.com> 

	* moonlight.cs: Set Helper.Agclr upon startup.

2008-08-11  Larry Ewing  <lewing@novell.com>

	* plugin.cpp (PluginInstance::StreamAsFile): horrible but
	temporary hack to load application/x-silverlight objects as sl2
	files when .xap is present in the filename.

2008-08-11  Geoff Norton  <gnorton@novell.com>

	* moonlight.h:  Some sites are doing an exact string comparison
	in Javascript of this value.  Unfortunately we need to drop
	out compatability string.

2008-08-08  Chris Toshok  <toshok@ximian.com>

	* plugin-class.cpp: add sl2 arguments to the various parser/enum
	functions that need them.

2008-08-06  Rolf Bjarne Kvinge <RKvinge@novell.com> 

	* plugin.mdp: Make src and plugin projects build.

2008-08-05  Rolf Bjarne Kvinge <RKvinge@novell.com> 

	* plugin-debug.cpp: Deleted Visual (moved content into UIElement), and
	  renamed VisualCollection to UIElementCollection.

2008-08-02  Rolf Bjarne Kvinge <RKvinge@novell.com> 

	* plugin-class.cpp: Use C++ bindings instead of C bindings.

2008-08-01  Rolf Bjarne Kvinge <RKvinge@novell.com> 

	* plugin.cpp, plugin.h: Implement PluginInstance::Evaluate.

2008-07-26  Chris Toshok  <toshok@ximian.com>

	* plugin-class.h, plugin-class.cpp: add MoonlightRoutedEventArgs
	stuff between EventArgs and KeyboardEventArgs/MouseEventArgs.
	RoutedEventArgs exposes a 2.0-only property ("source"), and both
	Keyboard/MouseEventArgs expose a 2.0-only property as
	well ("handled").

2008-07-25  Chris Toshok  <toshok@ximian.com>

	* plugin-class.h, plugin-class.cpp: add a flags field to the
	mapping, so we can start to differentiate the 1.0 and 2.0 JS apis.

	* plugin.cpp (PluginInstance::CreateWindow): pass silverlight2 to
	the Surface ctor.

2008-07-24  Jeffrey Stedfast  <fejj@novell.com>

	* plugin-class.cpp (MoonlightCollectionObject::GetProperty): Use
	collection->GetCount() instead of poking at the internal
	representation of the data.
	(MoonlightCollectionObject::Invoke): Need to add/remove/insert/etc
	items as Values now.

2008-07-23  Chris Toshok  <toshok@ximian.com>

	* plugin-class.cpp: track DependencyProperty changes.

2008-07-18  Chris Toshok  <toshok@ximian.com>

	* windowless.h, windowless.cpp: switch this from being a surface
	subclass to being a MoonWindow subclass, which fixes the need for
	us to worry about whether we have a widget (for fullscreen) in
	windowless code.

2008-07-18  Jb Evain  <jbevain@novell.com>

	* moonlight.cs (UnloadDomain): actually call the plugin unload callback.

2008-07-18  Jackson Harper  <jackson@ximian.com>

	* plugin-debug.cpp: Use new method for getting content element.

2008-07-17  Jackson Harper  <jackson@ximian.com>

	* plugin-debug.cpp: Add the contents of UserControls to the tree too.

2008-07-11  Rolf Bjarne Kvinge <RKvinge@novell.com> 

	* npstream-request.cpp, plugin-entry.cpp: Add missing #include
	  <config.h>

2008-07-10  Andrew Jorgensen  <ajorgensen@novell.com>

	* plugin-proxy.cpp: Include config.h (which got un-included
	from moonlight.h)

2008-07-10  Chris Toshok  <toshok@ximian.com>

	* plugin.cpp (PluginInstance::UpdateSourceByReference): rework
	this so that it uses the NPN api instead of the bridge-requiring
	html_get_element_text.

2008-07-10  Rolf Bjarne Kvinge <RKvinge@novell.com> 

	* plugin.mdp: Updated.

2008-07-09  Geoff Norton  <gnorton@novell.com>

	* plugin.cpp: UrlNotify now calls dl->NotifyFinished() and
	StreamAsFile calls SetFilename
	* plugin-downloader.cpp: Update for the Downloader changes
	to NotifyFinished / SetFilename

2008-07-09  Larry Ewing  <lewing@novell.com>

	* windowless.cpp: make sure we proxy events to the fullscreen
	widget when we are in fullscreen mode.

	Fixes silverlight.net/fox in fullscreen mode.
	
2008-07-08  Sebastien Pouliot  <sebastien@ximian.com>

	* plugin-class.cpp: Make sure we free (or nullify) before calling
	THROW_JS_EXCEPTION

2008-07-07  Jeffrey Stedfast  <fejj@novell.com>

	* mono.cpp: Fixed includes.

2008-07-06  Chris Toshok  <toshok@ximian.com>

	* windowless.cpp (WindowlessSurface::HandleEvent):
	plugin_button_press_callback takes the plugin for user_data, not
	the surface.

2008-07-06  Chris Toshok  <toshok@ximian.com>

	* plugin.cpp (PluginInstance::Initialize): add a way to override
	the windowless setting.  set the MOONLIGHT_NO_WINDOWLESS
	environment variable, and plugins will be created windowed,
	regardless of the JS.

2008-07-02  Chris Toshok  <toshok@ximian.com>

	* Makefile.am (INCLUDES): add src/zip

	* plugin.cpp (PluginInstance::StreamAsFile): in the case where the
	1.0 version of the plugin is fed a .xap file, show something to
	the user saying it's not going to be able to render it.

2008-07-02  Chris Toshok  <toshok@ximian.com>

	* plugin.h, plugin.cpp: more clean up in the class decl.

	* plugin-class.cpp, plugin-debug.cpp, plugin-glue.cpp: fallout
	from the above change.

2008-07-02  Jeffrey Stedfast  <fejj@novell.com>

	* plugin.cpp (PluginInstance::Properties): Added a "Show text
	boxes" checkbox.

2008-07-02  Chris Toshok  <toshok@ximian.com>

	* plugin.h, plugin.cpp: reorder PluginInstance's class decl so
	that public: comes before private:, and make "timers" private,
	forcing the addition of TimeoutAdd and TimeoutStop instance
	methods so that the C binding can call them.  put comments all
	over them saying they're obsolete in b2.

2008-07-02  Chris Toshok  <toshok@ximian.com>

	* plugin-class.h, plugin-class.cpp (string_to_npvariant): make
	public.

2008-07-02  Chris Toshok  <toshok@ximian.com>

	* windowless.h, windowless.cpp (WindowlessSurface::HandleEvent):
	move the windowless event handling here so it's not cluttering up
	plugin.cpp.

	* plugin.h, plugin.cpp: add GetWindow() to return the NPWindow,
	make plugin_button_press_callback a public static method so
	WindowlessSurface can call it, and remove the entire EventHandle
	method body (so it can be moved to WindowlessSurface).

2008-07-02  Chris Toshok  <toshok@ximian.com>

	* plugin.h, plugin.cpp: remove the old static methods for doing
	windowless things, and instead just instantiate a
	WindowlessSurface in CreateWindow when windowless == true.

	* Makefile.am (libmoonplugin_la_SOURCES): add windowless.{cpp,h}

	* windowless.h, windowless.cpp: new WindowlessSurface subclass
	which proxies things over to mozilla.

2008-07-02  Chris Toshok  <toshok@ximian.com>

	* plugin.cpp (NPN_strdup): just set 1 byte to 0 instead of all of
	them :)
	(PluginInstance::SetSurfaceCursor): ifdefed out implementation of
	a proposed method for setting the cursor in windowless plugins.
	(PluginInstance::CreateWindow): hook up SetSurfaceCursor.

2008-06-28  Geoff Norton  <gnorton@novell.com>

	* plugin-downloader.(ccp|h): The finished event raises a success condition now
	so that we can notify failure on unsuccessful downloads.

2008-06-27  Stephane Delcroix  <sdelcroix@novell.com>

	* browser-bridge.h:
	* firefox/browser-http.inc:
	* firefox/ff2/ff2-bridge.h:
	* firefox/ff2/ff2-http.cpp:
	* firefox/ff3/ff3-bridge.h:
	* firefox/ff3/ff3-http.cpp:
	* npstream-request.cpp:
	* npstream-request.h:
	* plugin-downloader.cpp:
	* plugin-downloader.h: move browserrequest/response from the plugin
	as downloaderrequest/response.

2008-06-26  Michael Dominic K.  <mdk@mdk.am>

	* plugin-class.cpp:
	* plugin-class.h: Adding ways/wrapper to access the KeyTime property of
	the KeyFrame. Fixes #402370 and #402035.

2008-06-19  Chris Toshok  <toshok@ximian.com>

	* plugin.h: add GetHost(), and rename all the "get"/"set" methods
	to "Get"/"Set" to match everything else.

	* plugin.cpp: fix up the renaming, and abstract out the code used
	in a couple of places (getting the NPNVPluginElementNPObject) into
	GetHost().
	
	* npstream-request.cpp (NPStreamRequest::GetResponse): track
	renaming.

	* plugin-class.cpp: track renaming.
	(MoonlightDependencyObjectObject::Invoke): use GetHost().

2008-06-19  Chris Toshok  <toshok@ximian.com>

	* plugin-class.cpp (MoonlightScriptControlObject::Invoke): comment
	out the version requested spew.

	* plugin.cpp (PluginInstance::Initialize): comment some bridge
	spew, and make sure to use "else if" for the useragent tests so we
	don't end up possibly loading 2 bridges.

2008-06-17  Geoff Norton  <gnorton@novell.com>

	* plugin-downloader.cpp: When we are Aborted NULL our request
	and response objects so that we dont do a double abort from our
	dtor.  Fully fixes the Downloader::Write issue (i hope).

2008-06-17  Geoff Norton  <gnorton@novell.com>

	* plugin-downloader.cpp:  Set the finished state regardless of 
	wether we have a downloader or not.

2008-06-17  Geoff Norton  <gnorton@novell.com>

	* plugin-downloader.cpp:  If we destroy ourselves, ensure that we
	abort our request/response so that firefox doesn't call back
	into a destroyed object.

2008-06-17  Geoff Norton  <gnorton@novell.com>

	* plugin-downloader.cpp, plugin-downloader.h:  Ensure that we dont
	attempt to abort a finished stream, as it may have dissappeared from
	Firefox already.

2008-06-16  Jeffrey Stedfast  <fejj@novell.com>

	* plugin-class.cpp (_set_dependency_property_value): Don't
	g_assert() here, it's not necessary plus we want to get rid of
	them anyway for bug #335413.

2008-06-10  Chris Toshok  <toshok@ximian.com>

	* plugin.cpp, plugin.h: wrap everything 2.0 related with
	INCLUDE_MONO_RUNTIME.

2008-06-10  Geoff Norton  <gnorton@novell.com>

	* plugin-downloader.cpp, plugin-downloader.h:  Aborted guarding
	is handled in the bridge now, as plugin-downloader's might be 
	reused.  Also add a null check for Downloader in the Read callback

2008-06-10  Geoff Norton  <gnorton@novell.com>
	
	* npstream-request.cpp: Return the status of GetResponse.

2008-06-11  Geoff Norton  <gnorton@novell.com>

	* plugin-downloader.cpp: Only call into the downloader to Write
	if we have a downloader set.  Fixes a crash when navigating away from
	live streams.

2008-06-10  Rolf Bjarne Kvinge <RKvinge@novell.com> 

	* plugin-class.h: Replace g_assert with g_warning.

2008-06-09  Geoff Norton  <gnorton@novell.com>

	* npstream-request.cpp:  Change the g_asserts to g_warning.

2008-06-06  Rolf Bjarne Kvinge <RKvinge@novell.com> 

	* plugin.mdp: Updated.

2008-06-05  Jeffrey Stedfast  <fejj@novell.com>

	* plugin-debug.cpp (save_callback): Modified to save mirror in the
	same directory layout as the website.

2008-06-05  Geoff Norton  <gnorton@novell.com>

	* plugin-class.cpp: Update to reflect API changes on the downloader
	side.

2008-06-05  Geoff Norton  <gnorton@novell.com>
	
	* plugin-downloader.cpp: Update the debugging outputs.

2008-06-05  Geoff Norton  <gnorton@novell.com>

	* http-downloader.cpp, http-downloader.h, mms-downloader.cpp,
	mms-downloader.h: Drop from the build in preparation to move
	mms logic into libmoon.
	* plugin-downloader.cpp, plugin-downloader.h,
	browser-bridge.h: Remove the browser downloader and encapsulate
	all the logic in a BrowserRequest.
	* npstream-request.cpp, npstream-request.h: New BrowserRequest
	based NPStream implementation.
	* plugin-downloader.cpp: Fix some debugging output. Add a few
	NULL guards.
	* plugin.cpp: Utilize the new npstream-request class.

2008-06-04  Geoff Norton  <gnorton@novell.com>

	* plugin-class.cpp: Fix the argument check for MouseEventArgs
	GetPosition regression introduced with check_arg_list changes.

2008-06-04  Geoff Norton  <gnorton@novell.com>

	* plugin-class.cpp: Fix the argument check for hitTest
	regression introduced with check_arg_list changes.

2008-06-04  Geoff Norton  <gnorton@novell.com>

	* plugin-class.cpp: Fix the argument check for setFontSource
	regression introduced with check_arg_list changes.

2008-06-04  Jeffrey Stedfast  <fejj@novell.com>

	* plugin-class.cpp: Added argument sanity checking in all the
	Invoke() methods I could find (may have missed some).
	(check_arg_list): New function to sanity-check an NPVariant
	argument vector for the correct types and the correct number of
	arguments (supports optional args as well).

2008-06-04  Jeffrey Stedfast  <fejj@novell.com>

	* plugin-class.cpp (MoonlightDownloaderObject::Invoke): Check the
	arg-types for ::Open(). Fixes bug #394943.

2008-05-29  Rolf Bjarne Kvinge <RKvinge@novell.com> 

	* plugin-downloader.cpp: Don't delete BrowserDownloaders, it causes
	  crashes for the moment.

2008-05-29  Rolf Bjarne Kvinge <RKvinge@novell.com> 

	* mms-downloader.cpp: MmsDownloader::Read: only delete the ASFParser
	  after we've finished with the data it contains.
	  MmsDownloader::ProcessMetadataPacket: fix parsing quoted strings.
	* mms-downloader.h, npstream-downloader.h: Make dtor virtual.
	* plugin-downloader.cpp, plugin-downloader.h: Move ctors and dtors into
	  cpp file, and delete the BrowserDownloader in PluginDownloader's
	  dtor.

2008-05-29  Rolf Bjarne Kvinge <RKvinge@novell.com> 

	* plugin.mdp: Updated.

2008-05-28  Rolf Bjarne Kvinge <RKvinge@novell.com> 

	* mms-downloader.cpp: Call Downloader::NotifyFailed when we encounter
	  an invalid mms source. Parse metadata packets, and set
	  HttpStreamingFeatures correctly on the downloader.
	* plugin-downloader.cpp: Handle rtsp urls.

2008-05-28  Rolf Bjarne Kvinge <RKvinge@novell.com> 

	* plugin.cpp: Add some debugging foo.

2008-05-28  Rolf Bjarne Kvinge <RKvinge@novell.com> 

	* npstream-downloader.cpp: If NPN_GetURLNotify fails, notify the
	  downloader.

2008-05-28  Rolf Bjarne Kvinge <RKvinge@novell.com> 

	* mms-downloader.cpp, mms-downloader.h: For the broadcast case keep a
	  count of the number of packets received, and write new packets at
	  the end of the previous packet. Don't print warnings for MMS_END
	  and MMS_STREAM_C packets.

2008-05-28  Rolf Bjarne Kvinge <RKvinge@novell.com> 

	* plugin-downloader.cpp: Return something from
	  PluginDownloader::GetPlugin.

2008-05-28  Rolf Bjarne Kvinge <RKvinge@novell.com> 

	* plugin-downloader.cpp: Spaces->Tabs.

2008-05-27  Rolf Bjarne Kvinge <RKvinge@novell.com> 

	* mms-downloader.h, mms-downloader.cpp: Move ctor/dtor into cpp file,
	  add some logging and null out response in Finished, otherwise we
	  might crash if Abort is called later on.

2008-05-27  Rolf Bjarne Kvinge <RKvinge@novell.com> 

	* http-downloader.cpp: Return something from HttpDownloader::Read.

2008-05-23  Rolf Bjarne Kvinge <RKvinge@novell.com> 

	* plugin.mdp: Updated.

2008-05-23  Geoff Norton  <gnorton@novell.com>

	* browser-bridge.h: Get/SetUri is no longer needed on the BrowserResponse
	class

2008-05-23  Geoff Norton  <gnorton@novell.com>

	* *-downlodaer.cpp: Add the files to SVN

2008-05-23  Geoff Norton  <gnorton@novell.com>

	* browser-bridge.cpp: Refactor to move all the stream processing logic outside
	the bridge into the plugin in a generic way.
	* plugin.cpp: Cache the source_location.  Needed for http-downlodaer to resolve
	relative uri's.
	* mmsh-state.*: Merged into mms-downlodaer.cpp
	* mms-downloader.cpp: Rewritten to not leak all memory when streaming from a mms
	server, plus a lot of readability fixes.
	* npstream-downloader.cpp: Hide NPStream related specifics here instead of in
	* plugin-downloader.cpp: Direct requests to the BrowserDownloader implementation
	for this request.

2008-05-21  Chris Toshok  <toshok@ximian.com>

	* plugin.cpp (plugin_button_press_callback): rename
	plugin_event_callback to this, and remove all the non-button event
	code.
	(PluginInstance::CreateWindow): connect to just
	"button-press-event", not the more generic "event".  track
	renaming.
	(PluginInstance::EventHandle): track renaming.

2008-05-19  Larry Ewing  <lewing@novell.com>

	* plugin.cpp (PluginInstance::SetPageURL): drop the reference we
	were holding to NPNVWindowNPObject.

2008-05-19  Larry Ewing  <lewing@novell.com>

	* plugin.cpp (PluginInstance::EventHandle): discard any events
	that happen before SetWindow has been called.

	Fix for a crash in Silverlight Pad.

2008-05-16  Rolf Bjarne Kvinge <RKvinge@novell.com> 

	* plugin-class.cpp: Throw an exception if the downloader doesn't have a
	  surface when we call Downloader::Send.

2008-05-16  Rolf Bjarne Kvinge <RKvinge@novell.com> 

	* mmsh-state.h: Surround file with ifdefs, and forward declare
	  MmshState.
	* plugin-downloader.h: Include mmsh-state.h and properly declare
	  PluginDownloader::state as MmshState.

2008-05-15  Rolf Bjarne Kvinge <RKvinge@novell.com> 

	* plugin.mdp: Updated.

2008-05-15  Larry Ewing  <lewing@novell.com>

	* plugin.cpp (PluginInstance::EventHandle): send focus in/out to
	the surface.

	* plugin-class.cpp, plugin.cpp, plugin.h: capture id parameter and
	return it in js.

2008-05-14  Sebastien Pouliot  <sebastien@ximian.com>

	* moonlight.h: Start plugin description with Silverlight plugin 
	version. The new detection script for sharethelove requires this.

2008-05-13  Larry Ewing  <lewing@novell.com>

	* plugin.cpp, plugin-class.cpp: copy all npvariant strings so that
	we can null terminate them.  WebKit and Opera don't null terminate
	strings it seems.

2008-05-13  Larry Ewing  <lewing@novell.com>

	* plugin-glue.cpp (NPP_Initialize): opera needs to have threads
	initialized even in the gtk2 case.

	* plugin.cpp (PluginInstance::SetWindow): disable this check since
	it currently fails on opera 9.5b2.

	These changes get the plugin loading in opera 9.5b2 we need to
	discuss some of this with them more.
	
2008-05-13  Chris Toshok  <toshok@ximian.com>

	* plugin.cpp (PluginInstance::Initialize): add an opera case (just
	like the webkit case) which references a (for now) nonexistant
	bridge.

2008-05-13  Rolf Bjarne Kvinge <RKvinge@novell.com> 

	* plugin.cpp: TryLoad: Before parsing any xaml, we need to clear the
	  current surface, otherwise the xaml we'll be parsing might add tick
	  callbacks to the timemanager of the previous surface.

2008-05-13  Rolf Bjarne Kvinge <RKvinge@novell.com> 

	* plugin.mdp: Updated.

2008-05-12  Andrew Jorgensen  <ajorgensen@novell.com>

	* Makefile.am: Moved the plugin installer code to a subdir (install)
	because the firefox bridges must build after the plugin but before the
	installer.

2008-05-09  Geoff Norton  <gnorton@novell.com>

	* Makefile.am: Add mmsh-state.* to the build.
	* plugin-downloader.*: When connecting to a mms server we cannot
	immediately start streaming.  We must first query its capabilities
	with a Describe request, then select the appropriate streams we 
	wish to have available.

2008-05-09  Geoff Norton  <gnorton@novell.com>

	* mmsh-state.cpp, mmsh-state.h: New class to keep stream state
	for selecting which streams to fetch from a mms:// server.

2008-05-09  Chris Toshok  <toshok@ximian.com>

	* ff3/Makefile.am (libmoonplugin_ff3bridge_la_LIBADD): add
	libmoonplugin.la

2008-05-09  Chris Toshok  <toshok@ximian.com>

	* ff2/Makefile.am (EXTRA_DIST): dist firefox-browsermmsh.inc

2008-05-08  Chris Toshok  <toshok@ximian.com>

	* install.rdf.in: track MINVERSION/MAXVERSION ->
	MIN_FIREFOX_VERSION/MAX_FIREFOX_VERSION change.

	* plugin.cpp (NPN_strdup): make the arg const char* to quiet gcc.
	(PluginInstance::PluginInstance): initialize bridge to NULL.
	(PluginInstance): delete the bridge.
	(PluginInstance::Initialize): try loading a browser specific
	bridge using the useragent string (gross, fragile, i know...)
	(PluginInstance::TryLoadBridge): new method, dlopen the bridge.

	* browser-http.h, browser-http.cpp: nuke.  the C implementation
	lives in browser-bridge.cpp, and browser-bridge.h defines
	the (purely abstract) base classes that the bridge implementations
	subclass from for browser-specific functionality.

	* plugin-proxy.cpp: clean up more XP_UNIX stuff - it's always
	defined (in moonlight.h) so we don't need ifdefs for it.  Also, it
	needs to be defined *before* including npapi/npupp so that
	structures we need are defined.

	* plugin-class.cpp: remove all HtmlObject implementation code from
	here.  it lives in the browser bridge now.  Also, remove all
	internal mozilla #includes.

	* moonlight.h (XP_UNIX): always define it if it isn't already
	there.

	* browser-bridge.h: add NPNetscapeFuncs* arg to
	CreateBrowserBridge.

	* plugin-entry.cpp (NPN_PostURLNotify): correct arg type.
	(NPN_MemAlloc): same.
	(NPN_MemFlush): same.
	(NPN_PostURL): same.
	(NP_Initialize): remove the stupid #if XP_UNIX stuff from here.
	we're only building on unix, so let's simplify things.  Also,
	don't use PR_TRUE/PR_FALSE.  NPBool uses TRUE/FALSE.

	* plugin-glue.cpp (NPP_WriteReady): change type to int32 instead
	of int32_t so that it matches the prototype.
	(NPP_Write): same.

	* moz-sdk/npapi.h, moz-sdk/npupp.h: unfuck our npapi headers so
	they can be used for either ff2 and ff3 (and without pulling in
	nspr).

2008-05-08  Larry Ewing  <lewing@novell.com>

	* plugin.cpp (PluginInstance::SetWindow): don't crash if we
	weren't able to create a surface.

2008-05-08  Chris Toshok  <toshok@ximian.com>

	* ff2/ff2-bridge.cpp: in order to keep from needing to load
	libmoonplugin.so with RTLD_GLOBAL (which breaks other plugins), we
	need to pass the NPNetscapeFuncs vtable to the bridge, and provide
	implementations of all the NPN_ methods here.  That was making
	this file a bit busy, so break out the dom and http stuff to
	separate files.

	* ff2/ff2-dom.cpp: move the dom stuff here.

	* ff2/ff2-http.cpp: move the browserhttp stuff herre.
	
	* ff2/Makefile.am (EXTRA_DIST): make sure we dist
	firefox-browserhttp.inc

	* ff3/ff3-http.cpp, ff3/ff3-dom.cpp, ff3/ff3-bridge.cpp: same
	changes to the ff3 bridge.

2008-05-07  Geoff Norton  <gnorton@novell.com>
	
	* plugin.cpp, plugin.h: Add NPN_strdup
	* plugin-class.cpp: Use NPN_strdup
	* plugin-entry.cpp: Dont abort if XEmbed/Gtkv2 aren't found as
	some browsers wont lets us NPN_GetValue on a NULL instance.

2008-05-07  Andrew Jorgensen  <ajorgensen@novell.com>

	* Makefile.am: Move mono_*dir stuff into Makefile

2008-05-07  Larry Ewing  <lewing@novell.com>

	* plugin.cpp (PluginInstance::SetWindow): if SetWindow is called
	with the same window this is due to a resize, propogate that
	resize to the surface code.

	Fixes the plugin side of windowless resizing.  See
	http://my.liveatedu.com/ for test case.

2008-05-07  Sebastien Pouliot  <sebastien@ximian.com>

	* moonlight.h: Could not find (nor google) the real meaning for SCR,
	I suspect "script", nor does it affect any apps I've seen but having 
	xaml in it's place is probably not a good idea.
	[Fix bug #384373]

2008-05-06  Jeffrey Stedfast  <fejj@novell.com>

	* plugin.h (PluginInstance::getNPP): Removed, this just duplicated
	the getInstance() method.

2008-05-06  Andrew Jorgensen  <ajorgensen@novell.com>

	* install.rdf.in: Use values from configure for min and max versions

2008-05-06  Rolf Bjarne Kvinge <RKvinge@novell.com> 

	* plugin-glue.cpp: shutdown_moonlight: we have to check again if there
	  are plugins alive, this method is called async, and it's possible
	  that another plugin has been initialized between adding the timeout
	  and getting here.

2008-05-05  Rolf Bjarne Kvinge <RKvinge@novell.com> 

	* plugin-class.cpp: Add a missing initialization.

2008-05-04  Miguel de Icaza  <miguel@novell.com>

	* moonlight.cs: Add support for XAP file loading. 

	* mono.cpp: New methods to create applications based on XAP files,
	and shut them down.

	* plugin.cpp (PluginInstance::StreamAsFile): If Silverlight2 the
	request was for a XAP file, load a XAP file.    This could break
	if people embed a Silverlight2 plugin, but pass a XAML file, must
	test this. 

	* plugin.cpp: Some refactoring to keep the Mono-depending features
	together, without having ifdefs inside of functions.

	XAP maintenance: Keep track of whether a XAP application has been
	loaded, destroy XAP applications on shutdown.
	

2008-05-04  Chris Toshok  <toshok@ximian.com>

	* plugin.h, plugin.cpp, plugin-class.cpp, plugin-class.h: revert
	most of r102288 to move back to the separate Loaded/Load events.
	Leave the OneShot behavior for EventListenerProxy's, though, as
	that still is useful.

2008-05-01  Larry Ewing  <lewing@novell.com>

	* plugin.cpp (plugin_event_callback): fix windowless button
	presses so that only button 3 is swallowed by the menu logic.

	Fixes zooming on
	http://www.designwithsilverlight.com/tutorials/photoGallery/gallery.html	
2008-05-02  Andrew Jorgensen  <ajorgensen@novell.com>

	* Makefile.am: strip all .sos in XPI (not just ffmpeg)
	If we need un un-stripped XPI we'll build one.

2008-05-02  Geoff Norton  <gnorton@novell.com>

	* plugin.cpp: reinterpret_cast doesn't work on 64-bit as it
	looses precision.

2008-05-01  Chris Toshok  <toshok@ximian.com>

	* plugin-class.h, plugin-class.cpp: make EventListenerProxy's
	one-shottable (if they're one-shot, they remove themselves
	automatically after being invoked.)  Use this with the plugin
	onLoad proxy.  The script control object adds it to the surface's
	toplevel object's LoadedEvent.

	* plugin.h, plugin.cpp: when we create the surface, add a handler
	for AttachingEvent so we can notify our
	MoonlightScriptControlObject that it should add the onLoad handler
	to the toplevel element's LoadedEvent.

2008-04-30  Fernando Herrera  <fherrera@novell.com>

	* browser-mmsh.cpp: Abort and NotifyFailed on invalid mms streams,
	probably they are plain http file downloads.

2008-04-30  Fernando Herrera  <fherrera@novell.com>

	* plugin-debug.cpp: Added utils.h and uri.h.

2008-04-30  Jeffrey Stedfast  <fejj@novell.com>

	* moonlight.h: Don't need to include glib.h and gtk.h, gtk.h will
	give us glib.h.

2008-04-29  Jeffrey Stedfast  <fejj@novell.com>

	* plugin-debug.cpp (foreach_func): Save the files with their
	original filenames using the URI's path.

2008-04-28  Sebastien Pouliot  <sebastien@ximian.com>

	* moonlight.h: Fix [Moon|Silver]'L'ight capitalization. Add 
	Moonlight URL (as HTML) in about:plugins. This enables "Visit 
	Home Page" in Firefox 3 "Tools | Add-ons | Plugins".

2008-04-25  Chris Toshok  <toshok@ximian.com>

	* plugin-class.cpp (enum PluginPropertyId): add MoonId_OnLoad.
	(map_moon_id_to_event_name): handle MoonId_OnLoad.
	(MoonlightObjectType::MoonlightObjectType): zero out construct,
	just in case.
	(scriptable_control_mapping): move onerror here, and add onload.
	(MoonlightScriptControlObject): null out both settings and content
	here.
	(MoonlightScriptControlObject::GetProperty): fix IsLoaded to check
	the surface, and add support for OnError/OnLoad here.
	(MoonlightScriptControlObject::SetProperty): add support for
	OnError/OnLoad here.
	(moonlight_content_mapping): remove onerror.
	(MoonlightContentObject::GetProperty): remove support for OnError.
	(MoonlightContentObject::SetProperty): same.

	* plugin.cpp (PluginInstance::CreateWindow): initialize the
	onResize/onLoad events in the same way as onError.
	(PluginInstance::Initialize): parse the onResize arg.
	(PluginInstance::JsRunOnload): nuke.  rejoice.
	(PluginInstance::TryLoad): remove the call to JsRunOnload.  The
	surface's LoadEvent is responsible for this now.

2008-04-25  Sebastien Pouliot  <sebastien@ximian.com>

	* plugin-debug.cpp: Better fix against my previous crash fix (as 
	we can get an invalid pointer to the plugin).

2008-04-25  Rolf Bjarne Kvinge <RKvinge@novell.com> 

	* plugin-downloader.cpp: Added logging.

2008-04-25  Fernando Herrera  <fherrera@novell.com>

	* browser-mmsh.cpp: Conditional logging.
	* plugin-downloader.cpp: proper error handling at
	p_downloader_mmsh_send.

2008-04-24  Andrew Jorgensen  <ajorgensen@novell.com>

	* Makefile.am: Add the locally built assemblies to the XPI

2008-04-24  Rolf Bjarne Kvinge <RKvinge@novell.com> 

	* plugin-debug.cpp: Don't crash if we don't have any sources.

2008-04-24  Fernando Herrera  <fherrera@novell.com>

	* Makefile.am: Fix "make -jN" build.

2008-04-23  Sebastien Pouliot  <sebastien@ximian.com>

	* plugin-debug.cpp: Don't crash if try to save stuff after changing
	web page.

2008-04-23  Rolf Bjarne Kvinge <RKvinge@novell.com> 

	* browser-mmsh.cpp: Parse http streaming metadata/features.
	* browser-mmsh.h: AsyncBrowserMmshResponse: Type the context as a
	  PluginDownloader instead of a generic gpointer.

2008-04-22  Larry Ewing  <lewing@novell.com>

	* moonlight.h: use HAVE_LIBXUL_UNSTABLE to determine which symbols
	to define.

	* browser-http.h, browser-mmsh.h: use HAVE_LIBXUL_UNSTABLE to
	determine the include path.
	

2008-04-22  Chris Toshok  <toshok@ximian.com>

	* plugin.h, plugin.cpp: Add the notion of "cleanup pointers".
	It's a horrible name for the following hack.  You register a local
	variable pointer with the plugin before making a call during which
	you might be destroyed.  If the plugin instance is destroyed, all
	cleanup pointers are nulled..  When the all returns, you can't
	rely on "this" being valid, but you can rely on your local stack
	frame, so you look at the registered pointer.  if it's null,
	you're dead.
	
	* plugin.cpp (PluginInstance::PluginInstance): pass the pluginType
	instead of the boolean flag.  C apis should be thin wrappers
	around c++ methods.
	(PluginInstance::~PluginInstance): zombify the surface and then
	unref_delayed it, to allow everything to unwind before actually
	freeing that memory.
	(PluginInstance::Initialize): use "else" and remove all those damn
	"continue"s.
	(PluginInstance::TryLoad): use the cleanup pointer hack to check
	if we're still alive after the xaml_loader->TryLoad method.
	
	* plugin-class.cpp (EventListenerProxy::proxy_listener_to_javascript):
	use cleanup pointers to make sure we don't try to free plugin
	objects that have been destroyed by virtue of the plugin going
	away while we were in JS.

	* plugin-glue.cpp: since we're only destroying surfaces from the
	idle loop, we need to delay the shutting down of the moonlight
	engine until all surfaces have been destroyed.  Also, take care
	not to do it from the DestroyEvent handler, as that is invoked
	*before* the object is destroyed (and destruction requires the
	engine to be initialized).

2008-04-22  Michael Dominic K.  <mdk@mdk.am>

	* plugin-class.cpp: Throw js exception if Storyboard failed to start
	properly.

2008-04-21  Jeffrey Stedfast  <fejj@novell.com>

	* mono.cpp (vm_init): Don't leak memory in the plugin case. Also
	use d() around debug printfs.

	* plugin.cpp: Wrap debug printfs with d()

2008-04-20  Miguel de Icaza  <miguel@roxanne.site>

	* plugin.h: Add methods to flag Silverlight2, add field Xap that
	if not-NULL contains a pointer to the XAP file downloaded.

	* plugin-instance.c: If we are dealing with a Silverlight 2
	application, use Xap to unpack it.   Does not load the result yet. 
 
	* moonlight.h: Add support for SL2 mime type, clear up VERSION

	* plugin-glue.cpp: Tell PluginInstance whether this is an SL1 or
	SL2 activation.

2008-04-16  Chris Toshok  <toshok@ximian.com>

	* plugin.cpp (PluginInstance::StreamAsFile): use "else if" here,
	otherwise the notifydata might be gone.

2008-04-16  Jeffrey Stedfast  <fejj@novell.com>

	* plugin-class.cpp (MoonlightDependencyObjectObject::GetProperty):
	Just because enums_int_to_str() returns NULL does not mean that
	the value was invalid, it could also mean that the property is
	simply an Int32 type.

2008-04-16  Rolf Bjarne Kvinge <RKvinge@novell.com> 

	* plugin-class.cpp, plugin-class.h: Comparing a Kind value to another to
	  determine type hierarchy isn't supported anymore, use Value::Is or
	  Type::IsSubclassOf, which are doing the right thing.

2008-04-15  Larry Ewing  <lewing@novell.com>

	* plugin.cpp (PluginXamlLoader::TryLoad): emit an error if the
	root visual type is incorrect.  Fixes one more of the ParserError
	tests until we can unfiy js exceptions and parser errors.

2008-04-15  Larry Ewing  <lewing@novell.com>

	* plugin-class.cpp (MoonlightDependencyObjectObject::Invoke):
	based on RuntimeErrors and
	http://msdn2.microsoft.com/en-us/library/bb979718.aspx getParent
	only applies to uielement subclasses.

	Fixes test that was failing in RuntimeErrors.htm.

2008-04-15  Larry Ewing  <lewing@novell.com>

	* plugin-class.cpp: throw an exception for invalid string values.

2008-04-14  Jeffrey Stedfast  <fejj@novell.com>

	* plugin.cpp: Got rid of unnecessary uses of keyword 'this'.
	(PluginInstance::CreateWindow): Fixed setting of background color.

2008-04-13  Jb Evain  <jbevain@novell.com>

	* moonlight.cs: use reflection to initialize the XamlLoader
	until we get moonlight.exe to be friend with Mono.Moonlight.
	Merged from the Moonlight 2 branch.

2008-04-11  Larry Ewing  <lewing@novell.com>

	* plugin.h (class PluginInstance): make setBackground return a
	boolean success value.

	* plugin-class.cpp (MoonlightSettingsObject::SetProperty): check
	the return value of setBackground and throw an exception if it
	fails.

	* plugin.cpp (PluginInstance::CreateWindow): handle NULL return
	values from color_from_string.

	Handle the new case where color_from_string might return null.

2008-04-11  Jeffrey Stedfast  <fejj@novell.com>

	* plugin-class.cpp (MoonlightTextBlockObject::Invoke):
	SetFontSource() now takes a Downloader argument rather than a DOB.

2008-04-11  Andrew Jorgensen  <ajorgensen@novell.com>

	* plugin-proxy.cpp: Allow the user to override the location of
	libmoonplugin by setting MOON_PLUGIN_DIR so that the test harness
	can run without installing first.

2008-04-11  Larry Ewing  <lewing@novell.com>

	* plugin.cpp (PluginXamlLoader::TryLoad): Allow controls to be
	toplevel elments, drop all surface contents on errors.

	Allows Kit 3d to start rendering something in the texture map
	case.

2008-04-11  Michael Dominic K.  <mdk@mdk.am>

	* plugin-class.cpp: Small debug hint also here when enums invalid.

2008-04-10  Chris Toshok  <toshok@ximian.com>

	* plugin-class.cpp (npvariant_is_dependency_object): no reason to
	duplicate the logic here - call npobject_is_dependency_object.

2008-04-10  Jeffrey Stedfast  <fejj@novell.com>

	* plugin-class.cpp: Cast DOB's to Downloaders when passing to
	SetSource().

2008-04-10  Chris Toshok  <toshok@ximian.com>

	* plugin-class.cpp, plugin-class.h: use the same "Invalidate
	NULL's things out, while the dtor checks for NULL before calling
	NPN_ReleaseObject" pattern with event listener proxies.

2008-04-09  Chris Toshok  <toshok@ximian.com>

	* plugin.cpp, plugin.h: make PluginInstance::SetSource behave
	asynchronously for both #ref and normal url cases.  Fixes bug
	376966.

2008-04-08  Jeffrey Stedfast  <fejj@novell.com>

	* plugin.cpp (PluginXamlLoader::TryLoad): Print a little more
	useful info on error.

2008-04-04  Jeffrey Stedfast  <fejj@novell.com>

	* plugin-class.h (EventListenerProxy.dtor): Made virtual... not
	sure if this matters or not, but might as well be consistent.
	(MoonlightTimeSpan.dtor): Same.

2008-04-04  Chris Toshok  <toshok@ximian.com>

	* plugin-class.cpp, plugin-class.h: change our use of
	NPType->invalidate.  Firefox docs say this is *only* called when
	the browser is shutting down the plugin instance.  So, we
	shouldn't access fields that point to other NPObjects here.  Just
	break links.  All freeing should be done in the dtor instead,
	which most of the various ::Dispose methods have been renamed to.
	Also, don't call Dispose in the MoonlightObject dtor.  Lastly,
	rename Dispose to Invalidate so we don't again mistake what it
	does.

2008-04-03  Larry Ewing  <lewing@novell.com>

	(PluginXamlLoader::TryLoad): if the parser has an unknown error
	code try the managed loader.

2008-04-03  Larry Ewing  <lewing@novell.com>

	* plugin.cpp (PluginXamlLoader::TryLoad): if we get a parser while
	loading set attach to a NULL toplevel.

2008-04-02  Larry Ewing  <lewing@novell.com>

	* plugin-class.cpp: check number of arguments on getHost throw the
	appropriate exception if there are arguments.

2008-04-02  Larry Ewing  <lewing@novell.com>

	* plugin-class.cpp: make sure the event name is valid when adding
	or removing, throw an exception if not.

2008-04-02  Larry Ewing  <lewing@novell.com>

	* plugin-class.cpp: start making the exceptions match the ms
	exceptions.  Work around the id string until more is known about
	how we should deal with it.

2008-04-02  Jeffrey Stedfast  <fejj@novell.com>

	Fixes bug #375277 and maybe other crashers.

	* plugin-class.h (MoonlightScriptControlObject::.ctor): Initialize
	settings->control and content->control to 'this'.
	(MoonlightSettingsObject): Now has a pointer to its owning
	MoonlightScriptControlObject so we can protect against Firefox's
	aggressive destruction of still-referenced objects when you
	navigate away from a Moonlight page and/or close the browser when
	a scriptable object is still referenced. Yay Firefox!
	(MoonlightContentObject): Same.

	* plugin-class.cpp (MoonlightScriptControlObject::Dispose): Set
	settings->control to NULL before unreffing the settings
	NPObject. Same with content->control.
	(MoonlightContentObject::Dispose): If we have a pointer to our
	parent control, set control->content to NULL here.
	(MoonlightSettingsObject::Dispose): Same as
	MoonlightContentObject::Dispose().
	(MoonlightEventObjectObject::SetEventObject): Removed, just to be
	sure we never reuse these objects.
	(EventObjectCreateWrapper): Implement the equivalent of
	SetEventObject() here instead, since this is the only place that
	should EVER be calling it. Also makes it a lot simpler.

2008-04-02  Larry Ewing  <lewing@novell.com>

	* plugin-class.cpp: charposition not charnumber.

2008-04-01  Chris Toshok  <toshok@ximian.com>

	* plugin-class.cpp (MoonlightContentObject::Invoke): back out my
	SetSurface() stuff from here.

2008-04-01  Jeffrey Stedfast  <fejj@novell.com>

	* plugin-class.cpp: Implemented better type-checking. Fixes the
	crash mentioned in bug #375921.

2008-04-01  Chris Toshok  <toshok@ximian.com>

	* plugin-class.cpp (MoonlightContentObject::Invoke): in
	createFromXaml/createFromXamlDownloader, call dep->SetSurface()
	after we parse to make sure the thing knows what surface it
	belongs to.

2008-04-01  Jeffrey Stedfast  <fejj@novell.com>

	* plugin-class.cpp (MoonlightContentObject::Invoke): Properly
	nul-terminate the text value.
	(MoonlightDownloaderObject::Invoke): Properly nul-terminate the
	text value returned here too.

2008-04-01  Rolf Bjarne Kvinge <RKvinge@novell.com> 

	* plugin-class.cpp: Remove Type::NPOBJ, it's not needed.

2008-03-31  Jeffrey Stedfast  <fejj@novell.com>

	* plugin-class.cpp (moonlight_downloader_mapping): Got rid of
	second ResponseText item.
	(MoonlightDownloaderObject::GetProperty): nul-terminate the value
	gotten from downloader->GetResponseText() as javascript will use
	this string expecting that it is nul-terminated.

2008-04-01  Fernando Herrera  <fherrera@novell.com>

	* browser-mmsh.cpp:
	* plugin-downloader.h: Support for live streams (not seekable).

2008-03-31  Rolf Bjarne Kvinge <RKvinge@novell.com> 

	* browser-mmsh.cpp: asf_header_parse: Use ASFParser::GetPacketSize instead
	  of looking in internal fields. Delete parser and unref the source when
	  done with it.

2008-03-28  Fernando Herrera  <fherrera@novell.com>

	* browser-mmsh.cpp:
	* browser-mmsh.h:
	* plugin-downloader.cpp:
	* plugin-downloader.h: Implement server seeking on the mms://
	downloader.

2008-03-26  Andrew Jorgensen  <ajorgensen@novell.com>

	* mono.cpp: Get correct path for moonlight.exe as well when
	enable-user-plugin=yes

2008-03-26  Chris Toshok  <toshok@ximian.com>

	* plugin-class.cpp (MoonlightDependencyObjectObject::Invoke):
	implement removeEventListener for named callbacks using the new
	EventObject::RemoveMatchingHandlers method, and a helper
	class (NamedProxyPredicate).

	* plugin-class.h: we need to make
	EventListenerProxy::proxy_listener_to_javascript public so
	NamedProxyPredicate can access it.
	
2008-03-26  Rolf Bjarne Kvinge <RKvinge@novell.com> 

	* browser-mmsh.cpp: Updated according to API changes.

2008-03-25  Andrew Jorgensen  <ajorgensen@novell.com>

	* plugin-proxy.cpp: Load libraries relative to the location of
	libmoonloader.so if enable-user-plugin=yes
	* install.rdf.in: Basic install.rdf for plugin installation
	* Makefile.am: Create directory structure for RDF install method
	rather than XPInstall JS method

2008-03-20  Jeffrey Stedfast  <fejj@novell.com>

	* plugin-class.cpp (MoonlightContentObject::Invoke): Same.

	* plugin-downloader.cpp (p_downloader_mmsh_finished): Updated for
	Downloader API changes.

2008-03-18  Andrew Jorgensen  <ajorgensen@novell.com>

	* plugin-proxy.cpp: Push conditional swscale into user plugin code
	and remove avformat dependency
	* Makefile.am: Conditionally include swscale and don't include avformat
	in user plugin installer

2008-03-17  Larry Ewing  <lewing@novell.com>

	* plugin-class.cpp: more rough argument sanity checks.

2008-03-17  Larry Ewing  <lewing@novell.com>

	* plugin.cpp (PluginXamlLoader::TryLoad): add a quick check to
	avoid a crash.  Better error handling on the way.

	* plugin-class.cpp (MoonlightCollectionObject::Invoke): do some
	very basic argument type checking.

2008-03-16  Larry Ewing  <lewing@novell.com>

	* plugin-class.cpp: make objects chain up to their parent class
	rather than simply returning false directly to make the logic
	clearer and to allow toplevel handling of tostring.

2008-03-14  Larry Ewing  <lewing@novell.com>

	* plugin-class.h, plugin-class.cpp: wrap all EventArg subclasses
	as dependencyobjects.

	* plugin.cpp: connect to the plugin onerror event.

2008-03-14  Chris Toshok  <toshok@ximian.com>

	* plugin-class.h, plugin-class.cpp: wrapped TimeSpan and Duration
	objects aren't actually values.  they're references to the
	particular DependencyObject/Property we got them from, so doing
	something like:

	var foo = storyboard.Duration;  foo.seconds=5;

	updates the original storyboard's Duration property, not just the
	duration contained in the "foo" variable.

2008-03-13  Chris Toshok  <toshok@ximian.com>

	* plugin-class.cpp, plugin-class.h: fix up our toString support.

Thu Mar 13 23:13:59 CET 2008 Paolo Molaro <lupus@ximian.com>

	* Makefile.am: don't overwrite binary files when installing the
	plugin (avoids crashes in the running browser).

2008-03-13  Chris Toshok  <toshok@ximian.com>

	* plugin-entry.cpp: fix backward compatibility of the plugin api.
	also, use the NPVERS_ defines for feature tests instead of our own
	set.  Also, add NPN_Enumerate.

2008-03-13  Andrew Jorgensen  <ajorgensen@novell.com>

	* install.js.in: Change the install path so that the plugin
	should work in debian (iceweasel)

2008-03-13  Chris Toshok  <toshok@ximian.com>

	* moz-sdk/*: import the trunk firefox plugin headers.
	
	* plugin.cpp (PluginInstance::Initialize): fix the hack I needed
	due to xulrunner-1.8.10 headers not having NPNVSupportsWindowless.

	* plugin-class.h, plugin-class.cpp (MoonlightObjectType): add
	Enumerate, which just iterates over the mapping filling in the
	array to return.

	* Makefile.am: add dist-hook to copy the moz-sdk headers.

	* mono.cpp (vm_init): missed this STACK_DEBUG -> DEBUG change.

2008-03-12  Sebastien Pouliot  <sebastien@ximian.com>

	* plugin-downloader.cpp: Fix duplicate g_strdup on pd->uri. 

2008-03-12  Michael Dominic K.  <mdk@mdk.am>

	* plugin-downloader.cpp: Adding an extra NULL check. Fixes the
	flowers-for-you.com.my website.

2008-03-12  Miguel de Icaza  <miguel@novell.com>

	* browser-mmsh.cpp (AsyncBrowserMmshResponse::MmsMetadataParse):
	Rewrote this routine to have a regular parser instead of splitting
	strings with g_strsplit, copes with commas inside metadata.

	Fernando mentioned that most of this code is no longer useful,
	except for a few flags.  

2008-03-11  Fernando Herrera  <fherrera@novell.com>

	* browser-mmsh.cpp:
	* browser-mmsh.h:
	* plugin-downloader.cpp: Parse MMS Metadata packet. Get file size and
	asf_packet_size from the ASF header.

2008-03-10  Michael Dominic K.  <mdk@mdk.am>

	* plugin-class.cpp: Don't scream about the unsupported type when
	setting a property to NULL. Instead, pass NULL and let the
	SetValue do it's thing (ie. nullable handling). This fixes the 
	Animation_CornerCases.htm.

2008-03-08  Geoff Norton  <gnorton@novell.com>

	* plugin.cpp:  I suppose I'm one of these for real now.

2008-03-08  Fernando Herrera  <fherrera@novell.com>

	* browser-mmsh.cpp:
	* browser-mmsh.h:
	* plugin-downloader.cpp: Stop properly the mms download.

2008-03-06  Chris Toshok  <toshok@ximian.com>

	* plugin.cpp (PluginInstance::Initialize): make sure we look for
	the right framerate property name.  the JS is specified using
	"framerate", but the plugin has to recognize "maxFramerate"
	instead.
	(PluginInstance::CreateWindow): use the surface's timemanager.
	(PluginInstance::setMaxFrameRate): same.

2008-03-06  Rolf Bjarne Kvinge <RKvinge@novell.com> 

	* plugin-class.cpp, plugin-class.h: Make our Moonlight*EventArgs mirror the
	  runtime *EventArgs Updated runtime event handling to receive an
	  EventArgs* calldata instead of a gpointer. This allows us to create the
	  correct Moonlight*EventArgs based on the actual type of the runtime
	  *EventArgs, instead of making a decision based on the event name,
	  obsoleting all the *_event_wrapper functions.
	* plugin-glue.cpp: Set the pdata field of the instance to NULL before
	  deleting the plugin, this allows us to detect plugin usage during plugin
	  destruction (we might cause destruction of EventObjects -> events are
	  raised -> plugin tries to send those events to js -> crash)

2008-03-05  Michael Dominic K.  <mdk@mdk.am>

	* plugin-class.cpp: Making the plugin class use the new enum<->str code
	for enum getters.

2008-03-03  Chris Toshok  <toshok@ximian.com>

	* plugin.cpp (PluginInstance::EventHandle): add
	KeyPress/KeyRelease handling.  there are some XXX's involing the
	call to gdk_keymap_translate_keyboard_state, but I have no test
	case at present to test this stuff against.  Use at your own risk.

2008-02-29  Rolf Bjarne Kvinge <RKvinge@novell.com> 

	* plugin-downloader.cpp: Don't call dl->NotifySize with the partial size of
	  the file, should only be called with the final size of the file.

2008-02-29  Rolf Bjarne Kvinge <RKvinge@novell.com> 

	* plugin.mdp: Updated.

2008-02-28  Jeffrey Stedfast  <fejj@novell.com>

	* browser-mmsh.cpp (AsyncBrowserMmshResponse::OnDataAvailable):
	'size' needs to be a uint32 so that the comparison is between 2
	uint32's rather than a uint32 and an int32.

	* browser-mmsh.h (class AsyncBrowserMmshResponse): Fixed a
	compiler warning.

2008-02-28  Michael Dominic K.  <mdk@mdk.am>

	* plugin/plugin-class.cpp: When getting property value try to resolve it
	to string if it's an enum. This way from js we ie. get:

	Arc.SweepDirection == "Counterclockwise" 

	instead of:

	Arc.SweepDirection == 0 (enum int value).

	Fixes finally the OM_RemoveClearRemoveAt.htm test (with other collection
	fixes) and #353960.

2008-02-28  Fernando Herrera  <fherrera@novell.com>

	* Makefile.am:
	* browser-mmsh.cpp:
	* browser-mmsh.h:
	* plugin-downloader.cpp:
	* plugin-downloader.h: Add initial mms over http support.

2008-02-26  Chris Toshok  <toshok@ximian.com>

	* plugin.cpp (PluginInstance::EventHandle): fix some x64 build
	issues.
	(PluginInstance::InvalidateSurface): same.

2008-02-26  Chris Toshok  <toshok@ximian.com>

	* plugin-proxy.cpp: use RTLD_LAZY, not RTLD_NOW.

	* moonlight.h: more #include hackery to get the right members to
	be there for NPSetWindowCallbackStruct on X.

	* plugin.h (class PluginInstance): add our
	RenderSurface/InvalidateSurface methods.

	* plugin.cpp (PluginInstance::Initialize): initialize the
	windowless stuff if we need it and the browser supports it.
	(PluginInstance::RenderSurface): our render method - call
	NPN_ForceRedraw.
	(PluginInstance::InvalidateSurface): our invalidate method - call
	NPN_InvalidateRect.
	(PluginInstance::CreateWindow): set our invalidate/render funcs
	accordingly, and SetTrans on the surface (err, why?) if we're
	windowless, and only do the widget stuff if we aren't windowless.
	(PluginInstance::EventHandle): kind of gross, but fill in enough
	of the gdk events to fool the surface machinery.  Currently
	missing are all key events, GdkDevice support for mouse events,
	and Expose event aggregation.

2008-02-26  Michael Dominic K.  <mdk@mdk.am>

	* plugin/plugin-class.cpp: Throw js exception when object passed to
	Collection.Remove is NULL (instead of returning false). Fixes mostly
	OM_RemoveClearRemoveAt but still fails because of ArcSweep problem.

2008-02-26  Michael Dominic K.  <mdk@mdk.am>

	* plugin/plugin-class.cpp: Throw js exception when Collection.Insert
	returns -1.

2008-02-26  Michael Dominic K.  <mdk@mdk.am>

	* plugin/plugin-class.cpp: Throw js exception when Collection.Add returns
	-1.

2008-02-26  Michael Dominic K.  <mdk@mdk.am>

	* plugin/plugin-class.cpp: Properly return int instead of void for
	Colleciton.Add.

2008-02-25  Chris Toshok  <toshok@ximian.com>

	* plugin.cpp (PluginInstance::CreateWindow): use GetWidget instead
	of GetDrawingArea.

2008-02-25  Chris Toshok  <toshok@ximian.com>

	* plugin.cpp: add windowless creation stuff.  move some code
	around, and put some in (!windowless) blocks.

	* plugin-entry.cpp (NP_Initialize): set handleEvent.

	* plugin-glue.cpp (NPP_GetValue): don't handle NeedsXEmbed here -
	let PluginInstance::GetValue do it.

2008-02-22  Jackson Harper  <jackson@ximian.com>

	* plugin-debug.cpp: mkdir and friends needs sys/stat.h on some
	systems.

2008-02-22  Michael Dominic K.  <mdk@mdk.am>

	* plugin/plugin.cpp:
	* plugin/plugin.h: Add support for the cache-size reporting interface. The
	UI now reports cache size when running with
	MOONLIGHT_OVERRIDES="cache=show".

2008-02-22  Rolf Bjarne Kvinge <RKvinge@novell.com> 

	* plugin-class.cpp: Add a null check.
	* plugin-debug.cpp: Add a Save button to the Sources list, which will save
	  every source file to a directory in /tmp.

2008-02-21  Michael Dominic K.  <mdk@mdk.am>

	* plugin/plugin.cpp: Small fix for table ("Properties") formatting so that
	it doesn't expand like crazy because of long URL's in sources.

2008-02-20  Jeffrey Stedfast  <fejj@novell.com>

	* plugin-class.cpp (MoonlightTextBlockObject::Invoke): The
	downloader argument is allowed to be null.

2008-02-20  Rolf Bjarne Kvinge <RKvinge@novell.com> 

	* plugin.cpp, plugin.h, plugin-debug.cpp, plugin-debug.h: Add a 'Sources'
	  entry to the plugin context menu, shows a list of all the files the
	  plugin has loaded, with the ability to open the files.

2008-02-20  Rolf Bjarne Kvinge <RKvinge@novell.com> 

	* plugin.mdp: Updated.

2008-02-20  Rolf Bjarne Kvinge <RKvinge@novell.com> 

	* plugin-class.cpp: Fix IsVersionSupported according to tests.	

2008-02-19  Rolf Bjarne Kvinge <RKvinge@novell.com> 

	* plugin.cpp, plugin-class.cpp, plugin.h: Add MaxFrameRate to the properties
	  page, and parse windowless and framerate properties during
	  initialization and store the values on the plugin instance, so that the
	  property page can show the correct values.

2008-02-15  Chris Toshok  <toshok@ximian.com>

	* plugin-class.cpp (MoonlightStoryboardObject::Invoke): the seek
	method can take either an integer or a string representing a
	timespan.  Fixes the JS errors I mentioned in bug #362380.

2008-02-06  Jackson Harper  <jackson@ximian.com>

	* plugin-class.cpp|h: Store all MoonlightDependencyObject classes
	in an array so that we can easily check if a type passed in from
	JS is actually a DO.
	- Add one check to verify that an object is a DO, I am sure we
	will need many more.

2008-02-06  Fernando Herrera  <fherrera@novell.com>

	* plugin-debug.cpp: set default size and scroll bars policy in the
	debug window.

2008-02-05  Chris Toshok  <toshok@ximian.com>

	* plugin.h, plugin.cpp: add a label to the properties dialog that
	shows the fps message.

	* plugin-debug.cpp (selection_changed): invalidate a large enough
	rectangle so that the selection disappears.

2008-02-05  Chris Toshok  <toshok@ximian.com>

	* Makefile.am (libmoonplugin_la_SOURCES): add plugin-debug.h/cpp

	* plugin-debug.h, plugin.cpp: for now, just a gtk treeview with a
	snapshot of the xaml hierarchy.  selecting an item in the tree
	puts a rectangle around the element in the plugin.

	* plugin.cpp (plugin_show_menu): if debug is enabled, add the
	debug menu item.

2008-02-05  Chris Toshok  <toshok@ximian.com>

	* moonlight.h: don't #define DEBUG here.  it's a config.h deal.

2008-02-04  Jackson Harper  <jackson@ximian.com>

	* plugin-class.cpp: Fix some of the parameter checking to match
	Silverlight.

2008-01-31  Rolf Bjarne Kvinge <RKvinge@novell.com> 

	* plugin-class.cpp, plugin-class.h: Implement toString method on
	  MarkerReachedEventArgsObject.

2008-01-30  Rolf Bjarne Kvinge <RKvinge@novell.com> 

	* plugin-class.cpp: Handle the case where js sets Timespan seconds using an
	  int value.

2008-01-28  Andrew Jorgensen  <ajorgensen@novell.com>

	* Makefile.am: added plugin-downloader.h to dist

2008-01-28  Rolf Bjarne Kvinge <RKvinge@novell.com> 

	* downloader.cpp, plugin-downloader.cpp, plugin-downloader.h: Renamed
	  downloader.cpp to plugin-downloader.cpp and added a header file for it.
	  Set downloader_shutdown to false upon initialization, makes aborting
	  actually work. Save the PluginDownloader in the stream, so that we can
	  inform the PluginDownloader when the stream is destroyed.
	* plugin.mdp, Makefile.am: Updated.
	* plugin.cpp: Include plugin-downloader.h and remove unnecessary method
	  declarations. Inform the PluginDownloader when a stream is destroyed.
	* plugin-glue.cpp: Include plugin-downloader.h and remove unnecessary method
	  declarations. 

2008-01-23  Chris Toshok  <toshok@ximian.com>

	* plugin-class.cpp (EventListenerProxy::AddHandler): use the event
	id instead of the name for the destroyed event, and also don't try
	to add an event that doesn't exist for a given type.

2008-10-11  Andrew Jorgensen  <ajorgensen@novell.com>

	* plugin-proxy.cpp: Add conditionals for ffmpeg inclusion
	* Makefile.am: Respect ffmpeg inclusion in xpi install

2008-01-10  Rolf Bjarne Kvinge <RKvinge@novell.com> 

	* plugin.mdp: Added.

2008-01-09  Chris Toshok  <toshok@ximian.com>

	* plugin-class.h, plugin-class.cpp: add two new wrapper types -
	one for StrokeCollection and the other for Stroke, so that both of
	them can implement their GetBounds and HitTest methods.
	
2008-01-09  Chris Toshok  <toshok@ximian.com>

	* plugin-class.h, plugin-class.cpp: a few changes with the
	MoonlightMouseEventArgsObject.  It now wraps a MouseEventArgs*.
	Translate all the property accesses and method calls into
	accesses/calls on the actual MouseEventArgs, instead of having the
	code live here.  Also, add STYLUSINFO handling to the
	EventObjectWrapper method.

2008-01-09  Jeffrey Stedfast  <fejj@novell.com>

	* plugin.cpp (Initialize): Use g_ascii_strcasecmp() so that we are
	not locale dependent.

2008-01-04  Jeffrey Stedfast  <fejj@novell.com>

	Fix for bug #348772

	* plugin-class.cpp (EventListenerProxy::AddHandler): Add a handler
	for the destroyed event too so that we can clear our target_object
	pointer.
	(EventListenerProxy::on_target_object_destroyed): New callback to
	clear the target_object pointer when it gets destroyed.
	(EventListenerProxy::get_wrapper_for_event_name): Use
	g_ascii_strcasecmp() instead of g_strcasecmp().
	(EventListenerProxy::~EventProxyListener): Disconnect from the
	destroyed event and the other event if still hooked up.

2008-01-03  Jeffrey Stedfast  <fejj@novell.com>

	* plugin-class.cpp (_set_dependency_property_value): For
	non-object variants, we can easily get away with using a static
	string buffer rather than using dynamically allocated strings to
	hold our temp values.

2007-12-26  Rolf Bjarne Kvinge <RKvinge@novell.com> 

	* plugin.cpp: PluginInstance::SetSource: don't check if we're setting the
	  same source. Fixes #349592.

2007-12-26  Rolf Bjarne Kvinge <RKvinge@novell.com> 

	* plugin-class.cpp: Don't crash if surface->GetTopLevel returns null. Fixes
	  #349816.

2007-12-20  Sebastien Pouliot  <sebastien@ximian.com>

	* plugin-class.cpp|h: Add support for StylusPointCollection since 
	it's a special case where a new method, AddStylusPoints, is 
	introduced. Fix unit tests for StylusPointCollection but doesn't
	solve bugs #349596 and 349598 because we don't capture the mouse
	points.

2007-12-20  Jb Evain  <jbevain@novell.com>

	* plugin-class.cpp (MoonId_GetStylusPoints): return an
	empty StylusPointCollection instead of doing non-sense.

2007-12-20  Jb Evain  <jbevain@novell.com>

	* plugin-class.cpp: throw if createObject is called
	for something else than Downloader.

2007-12-18  Sebastien Pouliot  <sebastien@ximian.com>

	* plugin-class.cpp: The plugin handle Color as an integer (see js 
	unit tests).

2007-12-18  Rolf Bjarne Kvinge <RKvinge@novell.com> 

	* plugin-class.cpp: The part parameter of MediaElement::SetSource is the
	  second parameter, fixes a crash when js calls SetSource. Also removed
	  some warnings.

2007-12-17  Jb Evain  <jbevain@novell.com>

	* plugin-class.cpp: return null instead of undefined
	on GetValue is the value is NULL. Fixes a lot of tests
	for default values.

2007-12-14  Jeffrey Stedfast  <fejj@novell.com>

	* plugin.cpp (PluginInstance::CreateWindow): Set the FPS report
	callback.
	(PluginInstance::Properties): Added FPS enable/disable properties.
	(PluginInstance::ReportFPS): Report the FPS via the browser's
	status widget.

2007-12-14  Jeffrey Stedfast  <fejj@novell.com>

	* downloader.cpp (p_downloader_abort): Set pd->stream to NULL
	after destroying it.

	* plugin.cpp (PluginInstance::TryLoad): Added a comment that we
	should check for errors returned by NPN_GetURLNotify().
	(PluginInstance::UpdateSource): Same.
	(PluginInstance::UrlNotify): Removed a printf.

2007-12-12  Jeffrey Stedfast  <fejj@novell.com>

	Fixes toward bug #341853

	* downloader.cpp (p_downloader_send): Check the return code from
	NPN_GetURLNotify() as it will give us an error if the file doesn't
	exist.

	* plugin.cpp (UrlNotify): Call Downloader::NotifyFailed() on
	error.

2007-12-10  Chris Toshok  <toshok@ximian.com>

	* plugin-class.h, plugin-class.cpp: more event changes.  return
	the integer token for adding a handler, and change
	removeEventListener to accept either a string (unsupported at the
	moment) or integer second argument.  This allows things like
	removeEventListener (..., 0) for removing the event handler that's
	registered in xaml.

	Also, remove MoonlightEventListener{Type,Object} since we don't
	need to return a wrapped object from addEventListener any longer.

2007-12-07  Rolf Bjarne Kvinge <RKvinge@novell.com> 

	* plugin-class.cpp: Plug more leaks.

2007-12-06  Jeffrey Stedfast  <fejj@novell.com>

	* plugin-class.cpp (MoonlightCollectionObject::Invoke):
	Implemented GetItemByName for MediaAttributeCollections.

2007-12-06  Chris Toshok  <toshok@ximian.com>

	* plugin-class.h, plugin-class.cpp: a few changes.  abstract out
	all the event-as-property code, so we just add events to objects
	as additional properties in their mapping, and the MoonlightObject
	code handles it all for us.

2007-12-05  Chris Toshok  <toshok@ximian.com>

	* plugin-class.cpp (MoonlightDependencyObjectObject::Invoke):
	implement Equals.

2007-12-05  Rolf Bjarne Kvinge <RKvinge@novell.com> 

	* plugin-class.cpp: Rename DependencyObject::parent/SetParent/GetParent
	
	    to logical_parent/SetLogicalParent/GetLogicalParent.

2007-12-04  Jb Evain  <jbevain@novell.com>

	* plugin-class.h: add the definitions of MoonlightStylusInfoType
	and MoonlightStylusInfoObject.

	* plugin-class.cpp: implement MoonlightStylusInfoType and
	MoonlightStylusInfoObject. Add getStylusInfo() and getStylusPoints()
	methods on MouseEventArgs.

2007-12-04  Jackson Harper  <jackson@ximian.com>

	* plugin-class.cpp: Map in IsLoaded, so HasProperty will return
	true for it.

2007-12-03  Jeffrey Stedfast  <fejj@novell.com>

	* plugin.cpp (Properties): Added more runtime debug options.

2007-11-29  Jeffrey Stedfast  <fejj@novell.com>

	* plugin.cpp (PluginInstance::Properties): Added runtime ability
	to enable show-expose regions.

2007-11-20  Jb Evain  <jbevain@novell.com>

	* plugin-class.cpp: rename INVOKE_EXCEPTION to
	THROW_JS_EXCEPTION. Throw more exceptions where needed.

2007-11-20  Jb Evain  <jbevain@novell.com>

	* plugin-class.cpp: throw JS exceptions where SL does.

2007-11-20  Jb Evain  <jbevain@novell.com>

	* plugin-class.cpp( MoonlightContentObject::Invoke):
		return null instead of undefined, like SL 1.0 does.

2007-11-20  Jb Evain  <jbevain@novell.com>

	* plugin-class.h (html_get_element_text): add a function
	to get the `innerText` of an html element from its id.
	* plugin-class.cpp (html_get_element_text): implement it.
	* plugin.cpp (PluginInstance::UpdateSourceByReference):
	use html_get_element_text to get the inline xaml.
	Fixes #342349.

2007-11-16  Chris Toshok  <toshok@ximian.com>

	* plugin-class.cpp, plugin-class.h: switch
	hasProperty,getProperty,setProperty,hasMethod,invoke to object
	methods instead of vtable entries on the type.  Also, put the
	name->id mapping in MoonlightObject's vtable entries, before the
	call to the virtual object methods (so now we only do name lookups
	there instead of all over the place) Also, aggregate mappings for
	all classes up to the root in the hierarchy when we initialize the
	type.  This means only 1 bsearch per LookupName, instead of 1 per
	mapping.
	
2007-11-15  Jeffrey Stedfast  <fejj@novell.com>

	* plugin-class.cpp: Alphabetize all of the mapping tables so that
	bsearch works properly.

2007-11-14  Chris Toshok  <toshok@ximian.com>

	* plugin-class.h, plugin-class.cpp: substantially rework the way
	names are looked up.  remove 90% of the has_method/has_property
	code, and move all the invoke/get_property/set_property to using
	id's for their work instead of string comparisons.  also make the
	string lookups case insensitive.  I don't much like the way
	chaining is done (check out MoonlightObjectType::SetBase and
	MoonlightObjectType::LookupName), but it's working for now, and
	should be substantially faster (and easier to maintain) this way
	than the naive conversion to case insensitivity.

2007-11-14  Jeffrey Stedfast  <fejj@novell.com>

	Fixes for the Matrix demo.

	* plugin-class.cpp (EventListenerProxy): Don't leak the NPObject.
	(proxy_listener_to_javascript): Updated printf debugging.
	(moonlight_content_invoke): Use the second argument
	(create_namescope) and pass that along to xaml_create_from_str().

2007-11-14  Andrew Jorgensen  <ajorgensen@novell.com>

	* Makefile.am: strip the ffmpeg libs for the user plugin but do not
	strip libmoon and libmono, will either add an option to strip those libs
	later or just make that part of the release process.
	* install.js.in: Cleaned up error handling and added a call to
	refreshPlugins(), should make it so nobody has to restart firefox

2007-11-13  Andrew Jorgensen  <ajorgensen@novell.com>

	* Makefile.am: Use the mono_ddldir rather than assuming /usr/lib and
	pick up any dlls in the gac that are for the 2.1 profile so that we
	don't miss any that should have been symlinked in /usr/lib/mono/2.1 but
	for some reason were not.

2007-11-12  Andrew Jorgensen  <ajorgensen@novell.com>

	* Makefile.am: Add moon.config to EXTRA_DIST

2007-11-12  Andrew Jorgensen  <ajorgensen@novell.com>

	* install.js.in: Just add moonlight directory, not individual files.
	* mono.cpp: Get moonlight.exe from home dir plugin path.
	* plugin-proxy.cpp: dlopen libmono and set it's dirs.
	* Makefile.am: Build out the full directory structure for the user
	plugin and zip that.
	* moon.config: Installed as $sysconfdir/mono/config to tell mono to
	use the	already dlopened libmoon.so.

2007-11-09  Sebastien Pouliot  <sebastien@ximian.com>

	* plugin.cpp: Fix Moonlight URL (#339929) since it didn't work.

2007-11-09  Jb Evain  <jbevain@novell.com>

	* browser-http.cpp|h: make browser_http_request_get_async_response
	return a boolean.


2007-11-08  Miguel de Icaza  <miguel@novell.com>

	* plugin.cpp (PluginInstance::Properties): Spice this bad boy up.
	We now can get some info about a XAML surface.

2007-11-08  Jeffrey Stedfast  <fejj@novell.com>

	* plugin.cpp (plugin_instance_get_surface): New function needed by
	BrowserHost class.
	(TryLoad): Removed an unnecessary g_assert() (the code handles the
	error case properly).

2007-11-07  Jb Evain  <jbevain@novell.com>

	* browser-http.cpp|h: implement a GetStatus method for
	BrowserHttpResponse.

2007-11-06  Miguel de Icaza  <miguel@novell.com>

	* plugin.cpp (string_to_js): rename from escape_quotes, this helps
	because some error messages being thrown from managed code contain
	newlines (Sudoku, see #325336).

2007-11-05  Chris Toshok  <toshok@ximian.com>

	* plugin-class.cpp (moonlight_content_invoke): don't crash if the
	surface hasn't been attached (if we haven't finished loading the
	xaml yet).

2007-11-01  Andrew Jorgensen  <ajorgensen@novell.com>

	* plugin.cpp: Replace PLUGIN_OURVERSION with VERSION (from config.h)
	* moonlight.h: Put the version in the description string for the sake
	of our QA folks

2007-11-01  Andrew Jorgensen  <ajorgensen@novell.com>

	* install.js.in: Get the version and the target CPU from configure and
	do some error checking, including checking that the platform matches

2007-11-01  Andrew Jorgensen  <ajorgensen@novell.com>

	* Makefile.am: Apparently $(builddir) is a newer autotools feature not
	available on SuSE 10.1 so we'll just not use it.

2007-11-01  Rolf Bjarne Kvinge <RKvinge@novell.com> 

	* downloader.cpp: Don't keep a ref to the Downloader, it causes a circular
	  reference.

2007-10-31  Andrew Jorgensen  <ajorgensen@novell.com>

	* Makefile.am: Don't link in cairo, pixman, or anything else that we
	don't need to libmoonplugin

2007-10-29  Andrew Jorgensen  <ajorgensen@novell.com>

	* install.js, plugin-proxy.cpp, Makefile.am: Changes to include ffmpeg
	libs in the XPI package

2007-10-27  Jackson Harper  <jackson@ximian.com>

	* plugin-class.cpp: Make onError work.

2007-10-26  Rolf Bjarne Kvinge <RKvinge@novell.com> 

	* plugin-class.cpp, plugin-class.h: Implement emission of MarkerReached
	  events.

2007-10-26  Rolf Bjarne Kvinge <RKvinge@novell.com> 

	* mono.cpp: Enable vm stacktraces after mono has been loaded.

2007-10-26  Rolf Bjarne Kvinge <RKvinge@novell.com> 

	* downloader.cpp: Ref/unref the downloader.

2007-10-26  Rolf Bjarne Kvinge <RKvinge@novell.com> 

	* plugin-class.h: NULL-initialize a variable, fixing a crash.

2007-10-25  Jackson Harper  <jackson@ximian.com>

	* plugin-class.h:
	* plugin-class.cpp: Add the onError event to the content object.

2007-10-25  Jackson Harper  <jackson@ximian.com>

	* plugin-class.cpp: Fix function name.

2007-10-24  Rolf Bjarne Kvinge <RKvinge@novell.com> 

	* plugin-class.cpp: Unref the event object even though the plugin is
	  deleted.

2007-10-24  Jb Evain  <jbevain@novell.com>

	* browser-http.cpp|h: work on asynchronous requests.

2007-10-23  Andrew Jorgensen  <ajorgensen@novell.com>

	* install.js: Install the libraries under ~/.mozilla/plugins/moonlight
	so that they are not loaded by mozilla
	* moonlight.h: Don't define PLUGIN_INSTALL unless it is not defined
	* plugin-proxy.cpp: dlopen libmoon.so from the user's
	plugins/moonlight directory if we are building the user plugin
	* Makefile.am: Use the PLUGIN_INSTALL flag to control building of the
	XPI or not

2007-10-23  Jb Evain  <jbevain@novell.com>

	* browser-http.cpp|h: Add support for Abort and SetBody.

2007-10-22  Jb Evain  <jbevain@novell.com>

	* browser-http.cpp: add browser_http_response_destroy and
	browser_http_sync_response_read.

2007-10-22  Jb Evain  <jbevain@novell.com>

	* browser-http.cpp|h (SyncBrowserHttpRequest::Read):
	do read the entire input stream even if it's a buffered
	input stream.

2007-10-22  Rolf Bjarne Kvinge <RKvinge@novell.com> 

	* plugin-class.cpp: If we're leaking NPObjects make sure we don't crash in
	  invalidate, since FF will call invalidate long after shutting down
	  moonlight.

2007-10-21  Jb Evain  <jbevain@novell.com>

	* browser-http.cpp|h: add the files where the unmanaged
	implementation of BrowserHttpRequest will live.

	* Makefile.am: add them to the build.

2007-10-18  Chris Toshok  <toshok@ximian.com>

	* plugin-class.cpp (moonlight_dependency_object_invoke): make the
	debug "printf" method its own method, instead of a hack on
	setValue.
	(MoonlightEventObjectObject::Dispose): remove the wrapped object
	from the cache.
	(MoonlightEventObjectObject::SetEventObject): update the cache.
	(EventObjectCreateWrapper): check the cache before creating a new
	js wrapper object.

	* debug.js: convert from
		printf_proxy.setValue ("printf", message);
	to
		printf_proxy.printf (message);

	* plugin.cpp, plugin.h: add {Add,Remove,Lookup}WrappedObject
	methods to cache the JS objects we use for a given EventObject*.

2007-10-17  Chris Toshok  <toshok@ximian.com>

	* plugin.cpp (PluginXamlLoader::TryLoad): use ->Attach instead of
	surface_attach, and add a comment about element->unref().

2007-10-16  Jb Evain  <jbevain@novell.com>

	* plugin.cpp: add plugin_instance_get_browser_runtime_settings.

2007-10-16  Jb Evain  <jbevain@novell.com>

	* moonlight.cs: Keep track of all plugin unload callbacks.
	Don't use Hashtable and refactor some code.

2007-10-11  Rolf Bjarne Kvinge <RKvinge@novell.com> 

	* plugin.cpp, plugin-proxy.cpp: Remove some const char/char mismatch
	  warnings.
	* plugin-glue.cpp: Fix some const char/char mismatch warnings.

2007-10-10  Chris Toshok  <toshok@ximian.com>

	* plugin-class.cpp (EventListenerProxy::~EventListenerProxy):
	don't NPN_ReleaseObject the callback.  the browser does this for
	us.

2007-10-10  Rolf Bjarne Kvinge <RKvinge@novell.com> 

	* plugin.cpp: Fix e-mail.

2007-10-09  Andrew Jorgensen  <ajorgensen@novell.com>

	* Makefile.am: Can't use the -MM (fail if patterns not matched) because it
	is a newer feature.

2007-10-09  Andrew Jorgensen  <ajorgensen@novell.com>

	* Makefile.am: Make zip fail if one of the files is not found

2007-10-09  Andrew Jorgensen  <ajorgensen@novell.com>

	* Makefile.am: Build the firefox xpi plugin installer (unsigned)
	* install.js: First draft install script for xpi

2007-10-09  Rolf Bjarne Kvinge <RKvinge@novell.com> 

	* TODO: Update, fullScreen is now implemented.

2007-10-08  Rolf Bjarne Kvinge <RKvinge@novell.com> 

	* plugin.cpp: Set the downloader context of the surface.
	* downloader.cpp: Ref/unref the downloader we store. Get the context stored
	  in the downloader if possible, and use it to get the plugin instance.
	* plugin-class.cpp: Use the brand new PluginInstance::CreateDownloader, and
	  provide xaml loaders for the xaml_create_from* methods.
	* plugin.h: Add a CreateDownloader method.

2007-10-04  Zoltan Varga  <vargaz@gmail.com>

	* plugin.cpp (LoadUrl): New method to download stuff synchronously using the browser.
	(plugin_instance_load_url): C wrapper for the above.
	(ReportException): Fix a leak.

2007-10-03  Chris Toshok  <toshok@ximian.com>

	* moonlight.h: need to wrap the renamed symbols in an extern "C"
	block.

2007-10-03  Chris Toshok  <toshok@ximian.com>

	* moonlight.h, plugin-entry.cpp, plugin-proxy.cpp: if we're using
	libmoonloader.so, we need to rename the 4 symbols we proxy in
	plugin-entry.cpp, and load them up via our mangled names in
	plugin-proxy.cpp.  This is so mozilla doesn't try to load
	libmoonplugin.so as a plugin itself.  It should only load
	libmoonloader.so.  Also, add code in plugin-proxy.cpp to handle
	the case where the .so lives in ~/.mozilla/plugins.  This requires
	#define PLUGIN_INSTALL 1 to be used, so we should figure out how
	to build with that when building the XPI.

2007-10-01  Rolf Bjarne Kvinge <RKvinge@novell.com> 

	* plugin.cpp, plugin.h: Added SetPageURL, updates the Surface' source
	  location to the url of the current page.

2007-09-30  Zoltan Varga  <vargaz@gmail.com>

	* plugin.cpp (ReportException): Handle multiple calls correctly.

2007-09-28  Chris Toshok  <toshok@ximian.com>

	* Makefile.am: wrap moonlight.exe stuff in "if
	INCLUDE_MONO_RUNTIME" where necessary.

2007-09-28  Chris Toshok  <toshok@ximian.com>

	* moonlight.h (INCLUDE_MONO_RUNTIME): remove #define from here.
	it's now a configure arg (and the define lives in config.h).

2007-09-28  Zoltan Varga  <vargaz@gmail.com>

	* plugin.cpp (UrlNotify): Add some debug messages here.
	
	* plugin.cpp (ReportException): New helper function to display exception details
	using dynamic html above the plugin frame.

2007-09-27  Jeffrey Stedfast  <fejj@novell.com>

	* plugin-glue.cpp (NPP_Initialize): Call runtime_init() with
	RUNTIME_INIT_BROWSER.

2007-09-27  Rolf Bjarne Kvinge <RKvinge@novell.com> 

	* plugin.cpp: Properly release a MoonlightObject.

2007-09-26  Rolf Bjarne Kvinge <RKvinge@novell.com> 

	* plugin.cpp: PluginInstance::UrlNotify: delete the StreamNotify when we're
	  done with it. Added plugin_xaml_loader_from_str.
	* plugin-class.cpp: moonlight_scriptable_control_invoke: unref the
	  Downloader we create once the object wrapper has it. Move implementation
	  of MoonlightEventObjectObject::SetEventObject here.
	* plugin.h: StreamNotify: ref the DependencyObject we get, and unref on
	  destruction. Added plugin_xaml_loader_from_str.
	* plugin-class.h: Move implementation of
	  MoonlightEventObjectObject::SetEventObject to the cpp file.

2007-09-23  Jb Evain  <jbevain@novell.com>

	* plugin.cpp: Pride sin, add my name to the contributors.

2007-09-22  Rolf Bjarne Kvinge <RKvinge@novell.com> 

	* plugin.cpp, plugin.h: Add a plugin_unload_callback to PluginInstance, and
	  call it in the dtor.
	* moonlight.cs: Added UnloadDomain: unloads the domain that was loaded for a
	  specific plugin, and set the corresponding native callback. Keep a hash
	  table of all created domains so that we know which domain to unload,
	  Delete some dead code (DisposeXamlLoader, ~Loader, Dispose)

2007-09-21  Rolf Bjarne Kvinge <RKvinge@novell.com> 

	* plugin.cpp: If an assembly already has been downloaded once, don't try to
	  reload the xaml (otherwise might cause a loop if loading the xaml failed
	  due to a reason other than that the assembly wasn't already downloaded).
	  Added PluginXamlLoader::LoadVM.  PluginXamlLoader::TryLoad: don't call
	  into the vm here, since it might not be loaded yet. Move implementation
	  of InsertMapping, CreateElement and SetAttribute to XamlLoader.
	  InitializeLoader: don't create a managed loader if the vm hasn't been
	  loaded.
	* plugin.h: Move implementation of InsertMapping, CreateElement and
	  SetAttribute to XamlLoader.
	* plugin-class.h: Remove unused function declaration.
	* mono.cpp, moon-mono.h: Remove all managed methods except moon_load_xaml,
	  which sets the methods as callbacks on the xaml loader with delegates
	  now. Guard against loading the vm twice.
	* moonlight.cs: Moved code to agclr, just kept a simple stub here that
	  creates the new AppDomain.
	* plugin-glue.cpp: Don't initialize the vm when the plugin is initialized,
	  it's initialized on demand.

2007-09-19  Zoltan Varga  <vargaz@gmail.com>

	* plugin.cpp (plugin_menu_about): Make the close button work on some gtk versions.

2007-09-19  Rolf Bjarne Kvinge <RKvinge@novell.com> 

	* plugin.cpp: Remove a printf.
	* plugin-class.cpp, plugin-class.h: Apparently invalidate isn't always
	  called for our MoonlightObjects (though deallocate is). Create a Dispose
	  method that does what invalidate did (and call it from Invalidate), and
	  keep track if it has been called or not (allows deallocate to call it if
	  invalidate wasn't called by mozilla). Make Dispose virtual so that the
	  base deallocator can call it for all derived classes (which also means
	  that we only need the base invalidate method), and add a virtual
	  destructor so that the base deallocator can also delete the object (and
	  remove all other *_deallocator methods). proxy_listener_to_javascript:
	  release objects at the end of the method.

2007-09-17  Rolf Bjarne Kvinge <RKvinge@novell.com> 

	* plugin.cpp, plugin.h, moonlight.cs: Move callbacks from PluginXamlLoader
	  back to XamlLoader.

2007-09-17  Rolf Bjarne Kvinge <RKvinge@novell.com> 

	* downloader.cpp: Removed warning.
	* plugin.cpp: Delete the current xaml_loader if we create a new one.

2007-09-17  Rolf Bjarne Kvinge <RKvinge@novell.com> 

	

2007-09-17  Rolf Bjarne Kvinge <RKvinge@novell.com> 

	[Removed mono dependency for 1.0 moonlight applications. 
	We now have a native [Plugin]XamlLoader that is the native counterpart of the 
	managed Loader object, the native loader handles xaml loading when the 
	mono runtime isn't loaded.]

	* plugin.cpp, plugin.h: Added PluginXamlLoader that can forward calls into
	  the managed loader if the mono runtime is loaded.
	* plugin-class.cpp: isVersionSupported: if built without mono runtime
	  support, we only support 1.0 applications. Update according to API
	  change.
	* moonlight.h, mono.cpp, moon-mono.h: Update according to API change.
	* moonlight.cs: Update according to API change. Added Hosting.base_unref and
	  unref a few objects.
	* plugin-glue.cpp: Don't initialize the mono runtime for 1.0 applications.

2007-09-09  Chris Toshok  <toshok@ximian.com>

	* plugin-class.cpp (moonlight_content_invoke): implement
	content.createFromXamlDownloader.

Thu Sep 6 16:19:58 CEST 2007 Paolo Molaro <lupus@ximian.com>

	* mono.cpp, moon-mono.h, plugin.cpp, plugin.h: correct use of mono
	objects: they can't be stored in unmanaged memory.

Thu Sep 6 15:22:20 CEST 2007 Paolo Molaro <lupus@ximian.com>

	* mono.cpp, moon-mono.h: cleanup of some code and localized the mono
	runtime calls.

2007-09-04  Rolf Bjarne Kvinge <RKvinge@novell.com> 

	* plugin-class.cpp: Added some special debug code, enabling basic printf
	  functionality from javascript code. No need to synchronize console
	  output with firebug output anymore.
	* debug.js: Added, a printf function for javascript, specially crafted for
	  moonlight.

2007-08-31  Rolf Bjarne Kvinge <RKvinge@novell.com> 

	* plugin.cpp: Get the actual size from the surface.

2007-08-31  Michael Hutchinson <m.j.hutchinson@gmail.com>

	* plugin.cpp: Fix pointer cast for 64-bit arch. 

2007-08-30  Rolf Bjarne Kvinge <RKvinge@novell.com> 

	* downloader.cpp: Added downloader_destroy.
	* plugin-class.cpp, plugin-class.h: Add plugin_destroy_classes, and remove a
	  duplicate creation of MoonlightPointClass.
	* plugin-glue.cpp: Try shutting down everything correctly, if it can be
	  shutdown, if not, don't initialize twice (vm and gtk).

2007-08-29  Rolf Bjarne Kvinge <RKvinge@novell.com> 

	* plugin-class.cpp: Javascript expects the sender of a FullScreenChange
	  event to be the toplevel canvas, so when the Surface emits this event,
	  change the sender to the toplevel canvas.

2007-08-29  Rolf Bjarne Kvinge <RKvinge@novell.com> 

	* plugin.cpp: Don't delete the surface, unref it.
	* plugin-class.cpp, plugin-class.h: Create a MoonlightEventObject* and make
	  MoonlightDependencyObject* inherit from it. Change all event usage to
	  the new class, enables events for objects that aren't DependencyObjects
	  (but are EventObjects, such as Surface). Implement FullScreen support in
	  the plugin.  Remove the dob field from MoonlightDependencyObject, the
	  MoonlightEventObject has an eo field that fits the purpose, and
	  implement a MoonlightDependencyObject.GetDependencyObject () that does
	  what dob did earlier (and change all usages).

2007-08-24  Jackson Harper  <jackson@ximian.com>

	* plugin-class.cpp|h: Add a new EventListenerObject that we can
	return from addEventListener.
	- Implement removeEventListener.

2007-08-24  Jackson Harper  <jackson@ximian.com>

	* plugin-class.cpp|h: Now that getPosition works as intended, we
	don't need to store the position as an NPObject on the
	MouseEventArgs.
	- Eliminate the variant_to_value so that we don't need to do a
	bunch of extra casting.

2007-08-24  Rolf Bjarne Kvinge  <RKvinge@novell.com>

	* plugin-class.cpp: mouse_event_invoke (getPosition):
	use the argument to calculate the position if provided.

2007-08-23  Jackson Harper  <jackson@ximian.com>

	* plugin-class.cpp: We can now hookup to the resize event.

2007-08-23  Jb Evain  <jbevain@novell.com>

	* mono.cpp (vm_init): properly initialize the new debugging
	code.

2007-08-23  Rolf Bjarne Kvinge  <RKvinge@novell.com>

	* plugin-class.cpp|h: Duration and TimeSpan's seconds property
	is a double, so treat is as such. Add moonlight type information
	to MoonlightObject (and derived classes), so that the marshalling 
	knows how to treat them when they come back from js land.
	_set_dependency_property_value: handle values coming from js land
	correctly, according to their moonlight type.

2007-08-23  Jb Evain  <jbevain@novell.com>

	* mono.cpp (vm_init): use new method name to initialize
	the debugger.

2007-08-23  Jb Evain  <jbevain@novell.com>

	* Makefile.am: use -pkg:agmonosilver to reference agmono.dll

2007-08-17  Chris Toshok  <toshok@ximian.com>

	* plugin-class.cpp|h: add a TimeSpan wrapper object.

2007-08-17  Jb Evain  <jbevain@novell.com>

	* mono.cpp (vm_init): small refactoring to get MonoMethods.

2007-08-17  Chris Toshok  <toshok@ximian.com>

	* plugin-class.cpp (moonlight_content_has/get/set_property): stub
	the onFullScreenChange property, to just warn us about the
	unimplemented functionality.

2007-08-17  Jackson Harper  <jackson@ximian.com>

	* plugin-class.cpp|h: Add a duration object that is exposed to the
	JS.
	- Fix the value_to_variant to handle durations, rects and points.

2007-08-17  Chris Toshok  <toshok@ximian.com>

	* plugin-class.cpp (moonlight_dependency_object_invoke): add
	toString method for DependencyObjects, which just returns the type
	name.

2007-08-17  Jackson Harper  <jackson@ximian.com>

	* plugin-class.cpp: Properties are allowed to be null, so we still
	return true if the value is null.

2007-08-17  Jackson Harper  <jackson@ximian.com>

	* plugin-class.cpp: Add the Root property to the content
	object. This just returns the top element.

2007-08-17  Jb Evain  <jbevain@novell.com>

	* Makefile.am: use smcs to compile moonlight.exe
	* mono.cpp (vm_init): force the use of the moonlight profile
	by the mono vm.

2007-08-16  Jackson Harper  <jackson@ximian.com>

	* plugin.cpp:
	* downloader.cpp: Remove my downloader event code, these are
	raised elsewhere (they were hidden behind another bug yesterday).

2007-08-16  Jackson Harper  <jackson@ximian.com>

	* plugin-class.cpp: Fix cut&paste error that was preventing
	GetValue from working (get value only needs one arg).

2007-08-16  Jackson Harper  <jackson@ximian.com>

	* plugin-class.cpp: Add removeAt method to collections.

2007-08-15  Jackson Harper  <jackson@ximian.com>

	* plugin-class.cpp: Implement ctrl/shift for mouse and keyboard
	events.  I didn't use a shared base class, because the
	duplicated code is significantly less than the boilerplate code
	needed.

2007-08-15  Jackson Harper  <jackson@ximian.com>

	* plugin-class.h|cpp: Add support for keyboard arguments in the
	keyup/keydown events. TODO: Still need to implement shift and
	control, ideally, in a base class for mouse and keyboard events.

2007-08-15  Jackson Harper  <jackson@ximian.com>

	* plugin.cpp:
	* downloader.cpp: Raise downloading events.

2007-08-13  Jackson Harper  <jackson@ximian.com>

	* plugin-class.cpp: findName should only look in the dependency
	object's scope.

2007-08-13  Jackson Harper  <jackson@ximian.com>

	* plugin-class.cpp: For dependency object strings don't return
	null, just return an empty string.

2007-08-11  Miguel de Icaza  <miguel@novell.com>

	* moonlight.cs: Use the new Appdomain helper methods too.

	Use Ansi here because we only run on Linux not on
	Windows and the Auto API is gone from 2.1

	* moonligth.cs: Use the new helper method from agmono instead of
	duplicating code here.

2007-08-07  Jackson Harper  <jackson@ximian.com>

	* moonlight.cs: Add another system library to the do-not-download
	list.

2007-08-06  Jackson Harper  <jackson@ximian.com>

	* plugin-class.cpp: We don't need to explicitly free the value
	because the dtor will for us.

2007-08-06  Jackson Harper  <jackson@ximian.com>

	* plugin-class.cpp|h: Add functionality for detaching events and
	for releasing object references.
	- When looking up on the window object, do not release it.  It
	doesn't need to be released because it is never retained.
	- Add a new function for creating a browser alert message.

2007-08-03  Chris Toshok  <toshok@ximian.com>

	* plugin-class.cpp (moonlight_downloader_*): add
	has_property/get_property methods, for the "responseText"
	property. not sure if getResponseText() is still around, but the
	property definitely is in use by silverlight pad.
	
2007-08-03  Jackson Harper  <jackson@ximian.com>

	* plugin-class.h|cpp: Add support for mouse events, pass all the
	info needed by HtmlEventArgs back in the callback.
	- Don't return null or void objects from invoke or get property.

2007-08-03  Jackson Harper  <jackson@ximian.com>

	* moonlight.cs: Dont download all the system libraries.

2007-08-03  Jackson Harper  <jackson@ximian.com>

	* plugin-class.h|cpp: Add support for attaching properties.

2007-08-02  Chris Toshok  <toshok@ximian.com>

	* plugin-class.cpp (moonlight_content_invoke): createFromXaml
	doesn't create a control object - it parses the xaml you pass in
	and returns the root element, so it can be used for any xaml
	content.

	* plugin.h, plugin.cpp: add plugin_instance_get_init_params for
	use in WebApplication.StartupArgs.

2007-07-29  Chris Toshok  <toshok@ximian.com>

	* moonlight.h: track the 1.1 refresh changes.

2007-07-25  Chris Toshok  <toshok@ximian.com>

	* plugin-class.cpp (moonlight_dependency_object_invoke): implement
	"getParent" correctly - it can return NULL.

2007-07-25  Chris Toshok  <toshok@ximian.com>

	* plugin-class.h: implement scriptable events (adding and emitting
	them, at least).

2007-07-24  Jackson Harper  <jackson@ximian.com>

	* plugin-class.cpp|h: Add function to invoke methods on
	htmlobjects from unmanaged code.
	
2007-07-24  Chris Toshok  <toshok@ximian.com>

	* plugin.cpp (PluginInstance::setBackground): implement.
	(PluginInstance::CreateWindow): if our args contained a background
	color, set the surface's background.

2007-07-24  Jackson Harper  <jackson@ximian.com>

	* plugin-class.cpp: Move the window release up, prevents random
	crashing in firefox.

2007-07-24  Chris Toshok  <toshok@ximian.com>

	* plugin-class.h, plugin-class.cpp: add wrapper classes for
	TextBlocks and ImageBrushes.

2007-07-24  Jackson Harper  <jackson@ximian.com>

	* plugin-class.cpp: Implement variants to value on objects. TODO,
	add a method to release those objects.

2007-07-24  Chris Toshok  <toshok@ximian.com>

	* plugin-class.h, plugin-class.cpp: add a wrapper class for
	Images, which implements SetSource. also add SetSource handling
	for the MediaElement wrapper.

	* moonlight.cs: rework event hookup so that if we fail to hookup
	with C#, we assume it's a JS event.  hook it up via the
	EventListenerProxy stuff.

	* plugin.h, plugin.cpp: MoonlightControl -> MoonlightScriptable

	* plugin-class.h, plugin-class.cpp: 

	1. rename MoonlightControl* to MoonlightScriptableControl* to
	distinguish it from the new MoonlightControl, which is a wrapper
	for our Control class.  factor out the _set_dependency_property_value

	2. add "getParent", "setValue", and "getValue" methods to the
	dependencyobject wrapper.

	3. Add a ctor for EventListenerProxy which just takes the callback
	name for use in hooking up js events from the parser.

2007-07-24  Jackson Harper  <jackson@ximian.com>

	* plugin.h|cpp: Add a getter for the plugin instance
	* plugin-class.h|cpp: Property get/setters for html objects.

2007-07-23  Chris Toshok  <toshok@ximian.com>

	* plugin-class.h, plugin-class.cpp: include error.h, and start out
	some error event args wrapping stuff.

2007-07-23  Miguel de Icaza  <miguel@novell.com>

	* plugin.cpp (PluginInstance): track the timers on a linked list
	here. 

	(~PluginInstance): Remove all the timers for this plugin on
	destruction. 

	(plugin_html_timer_timeout_add, plugin_html_timer_timeout_stop):
	Move these routines here and track all the timers created. 

	* moonlight.cs: Use the type from agmono instead of agclr

2007-07-21  Chris Toshok  <toshok@ximian.com>

	* plugin-class.cpp (variant_to_value): fix this such that it
	doesn't crash due to c++'s not using a copy ctor when you do "foo
	= Value()".  the first of the changes are fallout from this.

2007-07-20  Miguel de Icaza  <miguel@novell.com>

	* Fix a memory leak.

2007-07-19  Chris Toshok  <toshok@ximian.com>

	* plugin-class.h, plugin-class.cpp: factor out the
	EventListenerProxy stuff into a separate class.

2007-07-19  Chris Toshok  <toshok@ximian.com>

	* plugin-class.cpp (moonlight_control_get_property): Retain the
	settings/content objects before returning them.  fixes crash in
	silverlight chess.

2007-07-19  Chris Toshok  <toshok@ximian.com>

	* plugin.h, plugin.cpp: add getBrowserInformation call, useful for
	populating the managed BrowserInformation object.  need to flesh
	out how to get the other info.  userAgent is easy.

	also, in plugin.cpp, only invoke is onLoad handler if
	vm_loader_try doesn't return a missing file.  This fixes the
	ordering problem in the silverlight chess demo (where we were
	accessing JScriptPlayer before it was created).
	
2007-07-19  Chris Toshok  <toshok@ximian.com>

	* plugin-class.h: add some scriptable object event stuff.

	* plugin-class.cpp: a couple of things.

	1) fix the _invalidate and _deallocate methods.  _invalidate
	shouldn't release objects.  and _deallocate can now call delete
	again, so we don't leak all our wrapper objects.

	2) add some initial scriptable object event methods (add/remove),
	but they don't actually do much yet.
	
	* plugin.cpp: fix the refcounting of the rootobject, and remove
	some RUNTIME ifdefs.

	* plugin-glue.cpp (NPP_Initialize): remove the RUNTIME ifdefs.

	* moonlight.h: remove some of the unused ifdefs.  also, we're not
	going to ever build this with RUNTIME or SCRIPTING not defined, so
	remove them.

2007-07-18  Jackson Harper  <jackson@ximian.com>

	* plugin-class.cpp: Build fix.

2007-07-17  Chris Toshok  <toshok@ximian.com>

	* plugin-class.cpp (moonlight_scriptable_object_invoke): deal with
	function arguments.

	* plugin-class.h: change the type of InvokeDelegate - we pass an
	array, not an array of pointers.

	* plugin.cpp (JsRunOnload): remove redundant call to
	surface->GetToplevel().

2007-07-16  Chris Toshok  <toshok@ximian.com>

	* moonlight.cs: AppDomain.SetData the plugin instance so
	WebApplication can get at it.

	* plugin-class.cpp (variant_to_value): pseudo-inverse of
	value_to_variant.  used by the scriptable object stuff.

	Also, add the first pass at the scriptable object code.  it's
	really, really rough at this point.
	
	* plugin.cpp (PluginInstance::GetValue): switch this to calling
	getRootObject().
	(PluginInstance::getRootObject): put the old GetValue (create or
	retain) logic here.

2007-07-12  Chris Toshok  <toshok@ximian.com>

	* plugin-class.cpp: implement support for using a string as the
	second arg in addEventListener.  now you can register callbacks
	using either:

	object.addEventListener ("EventName", method);

	or

	object.addEventListener ("EventName", "methodName");

	fixes SilverlightChess crashing (since we were trying to
	InvokeDefault a string.  oops. :)

2007-07-12  Chris Toshok  <toshok@ximian.com>

	* plugin-class.cpp (moonlight_dependency_object_invoke): implement
	captureMouse/releaseMouseCapture.  going to move these to a
	UIElement specific wrapper next.

2007-07-12  Chris Toshok  <toshok@ximian.com>

	* plugin-class.cpp, plugin-class.h:  a few things:

	refactor the listener proxying stuff to share code.  when creating
	a proxy you create the event arg wrapper function, which at
	present only the mouse event stuff uses.

	wrap Downloader.  events are properly emitted, we should move the
	Downloader to using EventHandler's instead of its custom list of
	listeners.

	when looking up an attached property both (or one, or neither!) of
	the names can be capitalized.  like: foo['canvas.top'],
	foo['Canvas.Top'], and foo['canvas.Top'].  handle all of them.

	in value_to_variant, when setting a property to an object value,
	we assume (perhaps incorrectly) that it will be a
	MoonlightDependencyObjectObject, and handle it that way.  it seems
	to work for the demos at least.  Also in that same method, stop
	allocating a 20 byte buffer in the hope that it's enough.  just
	use g_strdup/g_strdup_printf.
	
	add control.createObject support for creating wrapped
	downloaders.  also, start on the implementation for
	control.onResize, but we need to shift the surface's resize
	callback to use an EventHandler.

2007-07-11  Chris Toshok  <toshok@ximian.com>

	* plugin-class.cpp, plugin-class.h: fix up the point and rect
	wrappings, and implement mouse event proxying.

2007-07-11  Chris Toshok  <toshok@ximian.com>

	* plugin-class.cpp, plugin-class.h: wrap the MediaElement enough
	to provide the start/stop/pause methods.

2007-07-11  Chris Toshok  <toshok@ximian.com>

	* plugin-class.cpp, plugin-class.h, plugin-glue.cpp, plugin.h,
	plugin.cpp: I know this looks like a scary change, but 90% of the
	code is the same.  I just took advantage of the fact that we
	already have structs with all the function pointers in them.
	there's no reason to proxy from a function pointer in the struct
	to an instance method on a singleton class - just use the function
	pointer.

	Also, add a binding for Points, which we'll need to wrap mouse
	events.

2007-07-11  Chris Toshok  <toshok@ximian.com>

	* moonlight.h (DEBUG_WARN_NOTIMPLEMENTED): add this macro so we
	can get spew to the console when we hit unimplemented bits.

	* plugin-class.cpp: a couple of changes:

	1. the case of property names is lax too, it seems.  'Children'
	can be used in the js, as well as 'Children'.  so we need to allow
	both.

	2. Fix a memory corruption issue with value_to_variant - we need
	to duplicate the string we give to mozilla, since it'll free it in
	NPN_ReleaseVariantValue.

	3. Implement proxies between our event handlers and JS event
	listeners.  We leak like a sieve here, btw.  need to figure out
	the best way to free up these proxies.  This works for any event
	that has been Register'ed by an EventObject and which is Emit'ed
	from C++.

	4. Implement collection.getItem().
	
2007-07-11  Chris Toshok  <toshok@ximian.com>

	* plugin.h, plugin.cpp: add getRootObject to return the
	MoonlightControlObject.

	* plugin-class.cpp (MoonlightDependencyObjectClass::Invoke):
	implement "getHost" by returning PluginInstance->getRootObject().

2007-07-11  Chris Toshok  <toshok@ximian.com>

	* plugin-class.h, plugin-class.cpp: substantially rework this
	stuff.  Rename everything Moonlight*Class and Moonlight*Object
	instead of Plugin*Class/Object, to make it a little clearer that
	these are (almost entirely) wrappers for moonlight objects.

	Also clean up the distinction between "Class" and "Object".  for
	instance, MoonlightDependencyObjectClass shouldn't have the
	DependencyObject*, that should live in the instance -
	MoonlightDependencyObjectObject (bad name i know..)

	our Objects also need a little bit more inheritance action.
	MoonlightObject isn't enough for all cases.  Augment this with
	other classes, and override AllocateObject to allocate the right
	kind per class.  Also, we need to override InvalidateObject to
	clear fields in the MoonlightObject subclasses before it's
	deallocated.

	Also make all the Class's singletons.  We never need more than one
	of each of them.
	
	* plugin.h, plugin.cpp: we don't need a generate JsExecute method.
	besides, it's dangerous to NPN_Evaluate strings we get from the
	HTML anyway.  Replace JsExecute with JsRunOnload, which uses
	NPN_Invoke to call the specified method.  we also need to pass the
	surface's toplevel control as an argument to it.

2007-07-11  Miguel de Icaza  <miguel@novell.com>

	* moonlight.cs: Add support for downloading assembly
	dependencies. 

2007-07-10  Chris Toshok  <toshok@ximian.com>

	* moonlight.cs: add some helpful debug spew.

	* plugin.cpp (StreamAsFile): the mapping needs to point to the
	filename on disk, not the full uri.  or else we try loading
	"http://" off the filesystem, which doesn't really work.  Just to
	be thorough, add a mapping from the stream's url to the fname as
	well.

2007-07-09  Miguel de Icaza  <miguel@novell.com>

	* Makefile.am: install debugging symbols.

	* moonlight.cs: try/catch wrappers to prevent exceptions to be
	propagated to native code.

2007-07-09  Chris Toshok  <toshok@ximian.com>

	* moonlight.cs: copy over the System.Reflection implementation of
	set_attribute from XamlReader.  also, track the change to the
	xaml_* apis - don't pass the callbacks to the individual methods.
	instead register them in a static ctor.

2007-07-09  Miguel de Icaza  <miguel@novell.com>

	* moonligh.cs: Invoke the Lookup(Kind, IntPtr) overload, just like
	we do in XamlReader. 

2007-07-06  Miguel de Icaza  <miguel@novell.com>

	* downloader.cpp: Update to the get-response-text downloader API.

2007-07-03  Miguel de Icaza  <miguel@novell.com>

	* plugin.cpp (NewStream): Request that DOWNLOADER downloads be
	downloaded as NP_ASFILE, this means: notify us of the progres and
	the resulting filename.

2007-06-26  Marek Habersack  <mhabersack@novell.com>

	* moonlight.h (GDK_NATIVE_WINDOW_POINTER): define this macro if
	we're on a 64-bit platform. Otherwise plugin.cpp will fail to
	compile (attempting to convert guint32 to 64-bit pointer).

2007-06-24  Larry Ewing  <lewing@novell.com>

	* moonlight.h: include xaml.h so that things build.

2007-06-24  Atsushi Enomoto  <atsushi@ximian.com>

	* Makefile.am : we need libmoonplugin.so installed too.

2007-06-23  Miguel de Icaza  <miguel@novell.com>

	* plugin-proxy.cpp: This is the new entry point for the plugin
	which can be loaded and unloaded as many times as desired, and
	will keep the real plugin in $pkgdir/libmoonplugin.so loaded as
	well as the Mono VM

	This prevents the bugs where the code is unloaded, but we still
	have a few places where we are triggering screen updates when the
	objects have gone, those must be tracked down.

2007-06-23  Chris Toshok  <toshok@ximian.com>

	* Makefile.am: distcheck work.

2007-06-22  Chris Toshok  <toshok@ximian.com>

	* README: barebones README to tell people what to do with the
	plugin.

2007-06-21  Jackson Harper  <jackson@ximian.com>

	* moonlight.cs: Do what I was trying to do with the last commit.
	Attach the surface so that events are registed.

2007-06-21  Jackson Harper  <jackson@ximian.com>

	* moonlight.cs: Init the surface so that the mouse events are
	hookedup.

2007-06-20  Jeffrey Stedfast  <fejj@gnome.org>

	* plugin.cpp (plugin_show_menu): Free the menu name after setting
	it on the widget.

	* mono.cpp (vm_init): Don't need top prefix with "/".

2007-06-20  Everaldo Canuto  <ecanuto@novell.com>

	* plugin.cpp: Add new params to xaml_create_from_file and 
	xaml_create_from_str calls to fix compilations problems.

2007-06-20  Chris Toshok  <toshok@ximian.com>

	* plugin.cpp (StreamAsFile): don't try to execute onLoad if there
	isn't one.

2007-06-20  Everaldo Canuto  <ecanuto@novell.com>

	* plugin.cpp, plugin.h: Implement JsExecute method and use it to call onload
	event specified in control creation. onLoad and onError field is also 
	created.

2007-06-20  Jackson Harper  <jackson@ximian.com>

	* moonlight.cs: Tie into events.

2007-06-20  Everaldo Canuto  <ecanuto@novell.com>

	* plugin-class.cpp: Update DependencyObject setter to work with strings
	and some other data types, using xaml_set_property_from_str. Also remove
	some debug messages, we have too much.

2007-06-20  Everaldo Canuto  <ecanuto@novell.com>

	* plugin.cpp: Uncomment container detroy lines in Finalize method.

2007-06-20  Sebastien Pouliot  <sebastien@ximian.com>

	* plugin-class.cpp: Alloc one byte to set it to NULL so we don't
	write to unallocated memory.

2007-06-20  Chris Toshok  <toshok@ximian.com>

	* plugin.cpp (PluginInstance::Write): it turns out the "offset"
	parameter that is passed to us is the offset without the *stream*,
	not the buffer.  Always pass 0 for the offset to downloader_write.
	This fixes image downloads for images larger than the mozilla
	buffer size (those requiring more than 1 write) of 16384.

2007-06-19  Chris Toshok  <toshok@ximian.com>

	* plugin-glue.cpp (NPP_Initialize): if we're going to Shutdown()
	the TimeManager in NPP_Shutdown, we need to restart it in
	NP_Initialize.

2007-06-19  Chris Toshok  <toshok@ximian.com>

	* plugin-class.cpp: check in the variant_to_value/value_to_variant
	methods, and make GetProperty/SetProperty use them.

	* plugin.cpp (UpdateSourceByReference): use g_strlcpy/g_strlcat
	instead of strcpy/strcat (which was actually walking off the end
	of the string).  also, create the char array of the right size.

2007-06-19  Atsushi Enomoto  <atsushi@ximian.com>

	* Makefile.am : we need uninstall-plugin to avoid
	  possible browser shutdown on browsing sl-enabled sites.

2007-06-19  Everaldo Canuto  <ecanuto@novell.com>

	* plugin-class.cpp,  plugin-class.h: Implement DependencyObject properties
	getter and setters.

2007-06-19  Everaldo Canuto  <ecanuto@novell.com>

	* plugin.cpp: Eliminate remaining canvas field.

2007-06-19  Miguel de Icaza  <miguel@novell.com>

	* plugin.h: Eliminate the field canvas, as the managed code can
	replace the toplevel and we wont be able to track it.   Access the
	field directly from the surface instead.

2007-06-18  Miguel de Icaza  <miguel@novell.com>

	* moonlight.cs: Create appdomains to keep applications separate
	and to keep the IntPtr to the plugin.

	The handle to the plugin is stored in agclr in the BrowserHost
	class. 

2007-06-18  Everaldo Canuto  <ecanuto@novell.com>

	* plugin-class.cpp: Implement maxFrameRate property.

2007-06-18  Everaldo Canuto  <ecanuto@novell.com>

	* moonlight.h: Just a high value for MAX_STREAM_SIZE.

2007-06-18  Everaldo Canuto  <ecanuto@novell.com>

	* plugin.cpp, plugin.h: Implement Write and WriteReady to interact with
	Downloader functions. It looks to be right but image still dont appears, 
	mayeb something in download manager functions. STREAM_NOTIFY macro added to
	header file.

2007-06-18  Everaldo Canuto  <ecanuto@novell.com>

	* downloader.cpp: Fix stream notify data, must be Downloader not 
	PluginDownloader.

2007-06-18  Everaldo Canuto  <ecanuto@novell.com>

	* plugin-glue.cpp: Remove stream destruction from Write and WriteReady, it
	was preventing browser to call our write function.

	* moonlight.h: MAX_STREAM_SIZE constant added.

2007-06-17  Everaldo Canuto  <ecanuto@novell.com>

	* plugin.cpp, plugin.h: Add a new StreamNotifyFlags REQUEST, it is used by
	files requested by Mono runtime, the use of notify bring us a more clean
	code to controls requested files.

	* downloader.cpp: Use StreamNotify and check for existense of instance.

007-06-17  Jackson Harper  <jackson@ximian.com>

	* moonlight.cs: Parse type names out of xmns strings. x:Class uses
	this slightly different format.

2007-06-17  Everaldo Canuto  <ecanuto@novell.com>

	* plugin.cpp, plugin.h: Add support for "#" (references) in source urls, it
	make possible use embedded xaml files. Also every source updates go to the
	UpdateSource and UpdateSourceByReference methods.

	* moonlight.cs: Xaml file loader splited in two methods CreateXamlFileLoader
	and CreateXamlStrLoader to support embedded files.

	* mono.cpp: Wrapper funtions also splited in file loader and str loader.

2007-06-17  Everaldo Canuto  <ecanuto@novell.com>

	* plugin.cpp: Use setSource to define source in Initialize, it give us only
	one place to check set source code. Also prevent setSource to segfault when
	source field is null.

2007-06-17  Everaldo Canuto  <ecanuto@novell.com>

	Fixes browser segfaults related to timemanager when goto another page or 
	close browser.

	* plugin-glue.cpp: Call runtime_init every time that browser initialize 
	plugin, when plugin shutdown just shutdown timemanager since we have 
	problems to runtime_shutdown. Some comment added to this implementation
	and we must back here when runtime_shutdown is fixed.

2007-06-17  Everaldo Canuto  <ecanuto@novell.com>

	* plugin.cpp, plugin.h: Create StreamNotify class to use as notifydata 
	parameter in NPN_GetURLNotify function, it gives us better control about
	what is downloading. Fixes errors when you try change control source 
	property.

2007-06-17  Miguel de Icaza  <miguel@novell.com>

	* downloader.cpp (p_downloader_send): Some tidbits for the plugin
	download, not complete.

2007-06-16  Jackson Harper  <jackson@ximian.com>

	* moonlight.cs: Set custom attributes on xaml elements.

2007-06-16  Everaldo Canuto  <ecanuto@novell.com>

	* moonlight.h: Include config.h since moonlight.h is included by all files.
	Fixes compilation problems.

2007-06-16  Everaldo Canuto  <ecanuto@novell.com>

	* plugin.cpp, plugin.h: Remove sourceUrl and use NPN_GetURLNotify notifyData
	param to inform when download is source.

2007-06-16  Everaldo Canuto  <ecanuto@novell.com>

	* mono.cpp: Remove debug message cr.

	* plugin.cpp, plugin.h, plugin-class.cpp: Windowless property added.

2007-06-16  Jackson Harper  <jackson@ximian.com>

	* moonlight.cs: Quick implementation of miguels beautiful new xaml
	loading mechanism. We now properly download the assembly and
	create the element. The custom.xaml test does work, however you
	need to invalidate the canvas to see the red canvas background
	showup.

2007-06-16  Miguel de Icaza  <miguel@novell.com>

	New mechanism for loading XAML files.

	Since XAML files can contain references to external assemblies and
	these have to be downloaded using the browser, we have now changed
	our previous setup that just called the xaml parser with a setup
	that is able to download dependencies.

	The system works by attempting repeatedly to parse the XAML file.
	The XAML parser needs to return an error condition that includes
	the missing dependency.   

	For all missing dependencies, we request the file from the
	browser, and we re-try the parsing until it works (or it fails due
	to other problems). 
	
	* moonlight.cs: Instead of exposing a CreateFromXaml method, we
	now expose a Loader object.

	The Loader object can keep track of downloaded assembly
	dependencies and calls the parser.
	
	* plugin.cpp (NewStream): Use a primitive state machine
	(vm_missing_url == vm_missing_file) to detect when we have just
	requested that a file be downloaded.   This probably is too
	primitive. 

	(TryLoad): New method.    
	
	Tries to load the XAML file, the parsing might fail because a
	required dependency is not available, so we need to queue the
	request to fetch the data.

	(LoadFromXaml): Use vm_xaml_loader_new and TryLoad now.
	
	* mono.cpp (vm_init): We now use a handful of more methods from
	moonlight.cs 

	(vm_loader_try, vm_insert_mapping): helper functions to call into
	the managed wrapper for XAML file loading.

2007-06-16  Everaldo Canuto  <ecanuto@novell.com>

	* plugin.cpp, 
	* plugin.h, 
	* plugin-class.cpp: Implement enableFramerateCounter, enableRedrawRegions
	and enableHtmlAccess properties.

2007-06-15  Everaldo Canuto  <ecanuto@novell.com>

	* plugin.cpp, plugin.h, plugin-class.cpp: Background property added.

2007-06-15  Everaldo Canuto  <ecanuto@novell.com>

	* plugin.cpp: Let LoadFromXaml just call load xaml routines.

2007-06-15  Everaldo Canuto  <ecanuto@novell.com>

	* moonlight.cs: Fix surface attachment.

2007-06-15  Everaldo Canuto  <ecanuto@novell.com>

	* plugin-glue.cpp: Prevent multiple runtime and mono vm initialization.

2007-06-15  Everaldo Canuto  <ecanuto@novell.com>

	* plugin.cpp, plugin.h: LoadFromXaml added to host canvas creation.

2007-06-15  Everaldo Canuto  <ecanuto@novell.com>

	* moonlight.h: Turns mono runtime enabled by default.

	* mono.cpp: Use of DEBUGMSG macro for debug message.

	* moonlight.cs: Fix Canvas kind number.

2007-06-15  Everaldo Canuto  <ecanuto@novell.com>

	* plugin.cpp, plugin.h, plugin-class.cpp: Fix setter for source property.

2007-06-15  Everaldo Canuto  <ecanuto@novell.com>

	* plugin.cpp, plugin.h: Add sourceUrl to get information about base source
	url. New Stream also check if request is for source file, if not return
	NP_NORMAL to be used later by downloader functions.

2007-06-15  Everaldo Canuto  <ecanuto@novell.com>

	* plugin-class.cpp, plugin-class.h: Remove macro STRING_TO_NPVARIANT, create
	method StringToNPVariant and change all reverences from macro to method. 
	StringToNPVariant also take care about NULL strings.

2007-06-15  Everaldo Canuto  <ecanuto@novell.com>

	* plugin.cpp, plugin.h, plugin-class.cpp: Implement initParams property.

2007-06-15  Everaldo Canuto  <ecanuto@novell.com>

	* plugin-class.cpp: Implement setters for enableFramerateCounter,
	enableHtmlAccess and windowless. This fields cant be set after 
	initialization so just do nothing and return true.

2007-06-14  Everaldo Canuto  <ecanuto@novell.com>

	* plugin-glue.cpp: After PluginObject changes we can back to release objects
	and it fix segfault when browser closes.

2007-06-14  Everaldo Canuto  <ecanuto@novell.com>

	* plugin.cpp,
	* plugin-class.cpp,
	* plugin-class.h: Remove unneeded instance fields, and contructor, after
	implementation of PluginObject we have a better way to get instance 
	information.

2007-06-14  Everaldo Canuto  <ecanuto@novell.com>

	* plugin-class.cpp: Change all PluginRootClass properties to use new object
	class PluginObject.

2007-06-14  Everaldo Canuto  <ecanuto@novell.com>

	* plugin-class.cpp,
	* plugin-class.h: Rename NPObject references to PluginObject, PluginObject 
	class theres more useful information like instance and plugin.

2007-06-14  Everaldo Canuto  <ecanuto@novell.com>

	* downloader.cpp,
	* downloader.h,
	* Makefile.am: Downloader functions added.

	* plugin-glue.cpp: On NPP_Initialize call downloader_initialize.

2007-06-14  Everaldo Canuto  <ecanuto@novell.com>

	* plugin-class.cpp: In PluginDependencyObject:: ClassGetProperty return 
	false instead of null because funtion is of type boolean. It fix message
	warning.

2007-06-14  Everaldo Canuto  <ecanuto@novell.com>

	* plugin.cpp: Move rootclass declaration to plugin-class.
	
	* plugin.h: Remove inclusion of plugin-class.h.

	* plugin-class.h: Introduces PluginObject class inherited from NPObject and 
	add rootclass declaration.

	* plugin-class.cpp: Uses PluginObject instead of NPObject, also make use of
	object in 'source' property getter.

2007-06-14  Everaldo Canuto  <ecanuto@novell.com>

	* plugin.cpp, plugin.h: Add a new member finalize that must be calling 
	instead of delete, we must later found a way to fix reload problems.

	* plugin-glue.cpp: Call finalize instead of delete.

	* TODO: Some notes about this bad implementation.

2007-06-14  Everaldo Canuto  <ecanuto@novell.com>

	* plugin-class.cpp: Add setter for control.source property.

2007-06-13  Everaldo Canuto  <ecanuto@novell.com>

	* plugin.cpp, plugin.h: isLoaded property added.

	* plugin-class.cpp: Implement control.isLoaded wrapper.

2007-06-13  Everaldo Canuto  <ecanuto@novell.com>

	* plugin-class.h: 
	- Take some notes on properties that cant be set after initialization.
	- Create macho STRING_TO_NPVARIANT to standardize the way how strings are
	returned to jscript calls.

	* plugin-class.cpp:
	- Implement control.source using STRING_TO_NPVARIANT macro.
	- Uses STRING_TO_NPVARIANT macho in control.settings.version.

	* plugin.h: Add source property.

	* plugin.cpp: Set source on initialization.

2007-06-13  Everaldo Canuto  <ecanuto@novell.com>

	* plugin.cpp, plugin.h: 
	- Move static rootobject to class field to get working pages with more than
	one moonlight control.
	- Implement param source for html object elements, this is default way to
	tell plugin which xaml it must load.

2007-06-13  Everaldo Canuto  <ecanuto@novell.com>

	* plugin-class.cpp, plugin-class.h:
	- Move instance field from PluginRootClass to PluginClass because most
	classes can make use of this field, class constructor is also changed to
	receive instance as parameter.
	- Remove host field from PluginDependencyObject, host can be accessed using
	instance field.

2007-06-13  Everaldo Canuto  <ecanuto@novell.com>

	* plugin-class.cpp: Implement "control.content" proeprties.

2007-06-13  Everaldo Canuto  <ecanuto@novell.com>

	* TODO: Added to include information about features that we know that is
	not current supported. Can be use for now to take some notes to be read 
	after 21th june.

2007-06-13  Everaldo Canuto  <ecanuto@novell.com>

	* plugin-class.h: Add comments about read write/read only on properties.

2007-06-13  Everaldo Canuto  <ecanuto@novell.com>

	* plugin-class.cpp, plugin-class.h: Add SetProperty to PLUGIN_PROPERTIES
	and implement it for all classes.

2007-06-13  Everaldo Canuto  <ecanuto@novell.com>

	* plugin-class.cpp, plugin-class.h: 
	- Fix IndexOf method.
	- Create and uses macros PLUGIN_PROPERTIES and PLUGIN_METHODS to define 
	properties and methods.
	- Uses arrays to define properties and methods.
	- Use NPID macro to get string identifier.

2007-06-12  Everaldo Canuto  <ecanuto@novell.com>

	* plugin-class.cpp:  Fix dependency of PLUGINROOTCLASS_PCOUNT in property
	array initialization.

2007-06-12  Everaldo Canuto  <ecanuto@novell.com>

	* plugin-class.cpp, plugin-class.h: 
	- Implement IndexOf method that uses and array.
	- implement properties array.
	- ClassHasProperty now uses IndexOf.

2007-06-12  Everaldo Canuto  <ecanuto@novell.com>

	* Makefile.am: Fix LIBADD to include MOON_LIBS instead of two times 
	PLUGIN_LIBS.

2007-06-12  Everaldo Canuto  <ecanuto@novell.com>

	* plugin-class.cpp, plugin-class.h: Get content and settings as a plugin
	class properties.

2007-06-12  Everaldo Canuto  <ecanuto@novell.com>

	* plugin.cpp, plugin.h: PluginContent class added.

2007-06-11  Everaldo Canuto  <ecanuto@novell.com>

	* plugin.cpp, plugin.h: Remove unused CreateDemoControls method.

2007-06-11  Everaldo Canuto  <ecanuto@novell.com>

	* plugin.cpp: Remove unused code and fix function names.

	* moonlight.h: Remove ";" on end of PLUGIN_DESCRIPTION define.

2007-06-11  Atsushi Enomoto  <atsushi@ximian.com>

	* Makefile.am : build fix. without -f rm fails.

2007-06-11  Everaldo Canuto  <ecanuto@novell.com>

	* plugin-class.cpp, plugin-class.h: Remove unused method ClassAllocate
	and fix all debug messages.

2007-06-11  Everaldo Canuto  <ecanuto@novell.com>

	* plugin.cpp: Fix object creation using NPN_RetainObject to increment
	reference count as described in Mozilla documentation.

	* plugin-class.cpp: On ClassDeallocate uses NPN_ReleaseObject that
	checks for references and release object when reference count is equal
	zero. It see to be solve all remaining segfault when browser closes.

2007-06-11  Everaldo Canuto  <ecanuto@novell.com>

	[Refactory jscript runtime code]

	* plugin-class.cpp, plugin-class.h: Create new class PluginRootClass,
	to be a proxy for javascript runtime calls, old code on plugin instance
	was moved here and all segfault related to script stuff was gone.

	* plugin.cpp, plugin.h: Remove jscript runtime related code and use
	PluginRootClass.

2007-06-11  Everaldo Canuto  <ecanuto@novell.com>

	* moon-mono.cpp,
	* mono.cpp,
	* plugin.h: Fix remaining config.h -> moonlight.h.

2007-06-11  Everaldo Canuto  <ecanuto@novell.com>

	* moonlight.h: Define RUNTIME to enable/disable mono runtime 
	integration. Its because right now it fails when open a page with 
	script so we can comment /#define RUNTIME to get plugin working in
	old way.

	* plugin.cpp: Dont call vm_load_xaml when RUNTIME is not defined.

	* plugin-glue.cpp: Dont call vm_init when RUNTIME is not defined.

2007-06-11  Everaldo Canuto  <ecanuto@novell.com>

	* moon-plugin.cpp: Renamed to plugin.cpp.
	* moon-plugin.h: Renaned to plugin.h.
	* config.h: Renaned to moonlight.h.

	* plugin-class.h, plugin-glue.cpp: Update includes.

2007-06-11  Miguel de Icaza  <miguel@novell.com>

	* Makefile.am: Delete the ~/.mozilla/plugins/libmoon.so in case it
	was around, that was the painful bug.

	* moon-plugin.cpp (CreateWindow): Do not create a canvas, nor
	attach it, let Mono do that. 
	(StreamAsFile): Request that the VM loads the file, this will
	change to something else later when we use the Silverlight object
	embedding API.

	* moonlight.cs: Implement some bits, it currently only loads the
	XAML file, it needs to create a new appdomain.

2007-06-11  Everaldo Canuto  <ecanuto@novell.com>

	* Makefile.am,
	* moon-mono.cpp,
	* mono.cpp: Rename moon.cpp to moon-mono.cpp.

	* moon-mono.h: Add header information.

	* plugin-glue.cpp,
	* config.h: Add constant MOON_1_0 and MOON_1_1, when 1.1 is define 
	compile also mono runtime, it is disabled by default since mono runtime
	give us some crashes right now.

2007-06-10  Everaldo Canuto  <ecanuto@novell.com>

	* Makefile.am: config.h added.

	* config.h: Added.

	* plugin-class.cpp,
	* moon-plugin.cpp,
	* plugin-class.h,
	* plugin-glue.cpp,
	* moon-plugin.h: Include config.h and remove unneeded includes.

2007-06-10  Everaldo Canuto  <ecanuto@novell.com>

	* moon-plugin.cpp: Remove DEMO mode and set SCRIPTING mode by default.

2007-06-10  Miguel de Icaza  <miguel@novell.com>

	* moonlight.cs: the startup code, will contain the helper classes
	to create new AppDomains for each instance create.

	* mono.cpp: New file, embeds the Mono VM.

2007-06-10  Everaldo Canuto  <ecanuto@novell.com>

	* plugin-glue.cpp: Call plugin instance destructor, now it dont causes
	error when you reload page.

	* moon-plugin.cpp: Only destroy container widget, if you dont destroy it
	when you start with page plugin, go to another page and close browser,
	a segfault is emited before browser exits. Now navigating for some time in
	silverlight pages looks to dont emit segfault if scripting is disabled.

	* plugin-class.cpp: Remove debug message from class constructor.

2007-06-09  Everaldo Canuto  <ecanuto@novell.com>

	[Xaml support]

	* moon-plugin.cpp: 
	- Read xaml file from src tag and display contents.
	- Disable demo box, now we have a better demo under xaml file.

2007-06-09  Everaldo Canuto  <ecanuto@novell.com>

	* Makefile.am: test added to subdirs.

2007-06-09  Everaldo Canuto  <ecanuto@novell.com>

	* moon-plugin.cpp,
	* plugin-glue.cpp,
	* moon-plugin.h: Rename DEBUG to DEBUGMSG.

2007-06-08  Everaldo Canuto  <ecanuto@novell.com>

	* moon-plugin.h,
	* moon-plugin.cpp: Change demo code to class method CreateDemoControls.

2007-06-08  Everaldo Canuto  <ecanuto@novell.com>

	* moon-plugin.cpp: Add canvas, connect it to surface and get demo working
	back.

2007-06-08  Everaldo Canuto  <ecanuto@novell.com>

	* moon-plugin.h,
	* moon-plugin.cpp: Rename CreateControls to CreateWindow.

2007-06-08  Everaldo Canuto  <ecanuto@novell.com>

	* Makefile.am: Add $(MOON_LIBS) to linker options.

2007-06-08  Everaldo Canuto  <ecanuto@novell.com>

	* plugin-glue.cpp: Dont delete plugin object since right now it causes some
	segfault when change to another page.

	* moon-plugin.cpp: Got scripting mode enabled by default.

2007-06-08  Everaldo Canuto  <ecanuto@novell.com>

	* plugin-glue.cpp: Fix plugin destruction.
	* moon-plugin.cpp: Change button to gtk label with plugin name and version.

2007-06-07  Everaldo Canuto  <ecanuto@novell.com>

	* plugin-glue.cpp: Set instance data to NULL to prevent error when browser
	closes.

	* moon-plugin.cpp: 
	- Disabled demo mode.
	- Enabled Scripting mode.
	- Fix runtime object creation, dont user NPN_RetainObject anymore.
	- Fix also object properties creation (settings).
	- Release object on class destructor.

2007-06-07  Everaldo Canuto  <ecanuto@novell.com>

	* moon-plugin.cpp: Simplify controls creation and add a button when you are
	not in demo mode. It is just for now to made some tests.

2007-06-07  Everaldo Canuto  <ecanuto@novell.com>

	* moon-plugin.cpp: Remove runtime initialization because it is wrong place.
	* plugin-glue.cpp: Add gtk and runtime initialization to NPP_Initialize.

2007-06-07  Everaldo Canuto  <ecanuto@novell.com>

	* moon-plugin.cpp: Add some initialization code to prevent some segmentation
	fault.

2007-06-07  Everaldo Canuto  <ecanuto@novell.com>

	* moon-plugin.cpp: Add SCRIPTING and DEMO macros to make available only
	tested features, it mean that developers must uncomment this MACRO lines
	before work on scripting and libmoon stuff.

2007-06-07  Everaldo Canuto  <ecanuto@novell.com>

	* moon-plugin.cpp: Fix gtkplug creation fro 64bit systems. 

	* Makefile.am: Add -lavformat to link options.

	Thanks Grendel for this patches.

2007-06-07  Everaldo Canuto  <ecanuto@novell.com>

	* moon-plugin.h: Change version number 0.99.0, SilverLight scripts searchs 
	for version > 0.95.1.

	* test/index.html: Small fixes in test page.

2007-06-07  Everaldo Canuto  <ecanuto@novell.com>

	* test/index.html: Add javascript settings test.

	* moon-plugin.cpp,
	* moon-plugin.h: Implementing Settings class.

2007-06-07  Everaldo Canuto  <ecanuto@novell.com>

	* moon-plugin.cpp,
	* moon-plugin.h: Implement runtime properties structure and 'version'
	property.

2007-06-07  Everaldo Canuto  <ecanuto@novell.com>

	[PluginClass added to handle script objects]

	* plugin-class.cpp,
	* plugin-class.h,
	* Makefile.am: PluginClass added.

	* moon-plugin.cpp, 
	* moon-plugin.h: PluginInstance now inherit from PluginClass, also 
	scriptclass was removed and "this" is used in NPN_CreateObject. For
	NPN_CreateObject we can now always use classes inherited by PluginClass.

2007-06-07  Everaldo Canuto  <ecanuto@novell.com>

	* Makefile.am: Remove idl related code, new object system dont need idl or
	xpi files. 
	* nsIScriptableMoonPlugin.h: deleted.
	* nsIScriptableMoonPlugin.idl: deleted.

2007-06-07  Everaldo Canuto  <ecanuto@novell.com>

	* plugin-glue.cpp: Fix the instance initialization problems, the object 
	instance was empty after creation.

2007-06-07  Everaldo Canuto  <ecanuto@novell.com>

	* moon-plugin.cpp, 
	* moon-plugin.h,
	* plugin-glue.cpp: Fix SetValue declaration.

	* plugin-entry.cpp: Fix a lot of declarations, support for win and mac,
	support for runtime version checking and some other minor fixes.

2007-06-06  Everaldo Canuto  <ecanuto@novell.com>

	* moon-plugin.cpp: Comment container destructor to prevent segfault.

2007-06-06  Everaldo Canuto  <ecanuto@novell.com>

	* moon-plugin.cpp: Fix API change for Canvas.

2007-06-06  Sebastien Pouliot  <sebastien@ximian.com> 

	* moon-plugin.cpp: Fix API change for SolidColorBrush.

2007-06-05  Everaldo Canuto  <ecanuto@novell.com>

	* moon-plugin.h: Add PLUGIN_OURNAME and PLUGIN_OURVERSION constants to 
	specify our internal name and version that differs from plugin version 
	detected by browser. SilverLight javascripts checks for WPF plugin and
	0.8.5.0 version.

	* moon-plugin.cpp: Change runtime initialization to CreateControls, before
	show demo.

	* plugin-glue.cpp: Fix memory allocation problems in NPP_New.

2007-06-05  Everaldo Canuto  <ecanuto@novell.com>

	* plugin-glue.cpp,
	* moon-plugin.cpp,
	* moon-plugin.h: Add initialization and remove demo transformation.

2007-06-05  Everaldo Canuto  <ecanuto@novell.com>

	[Remove ScriptablePeer code]

	* nsScriptablePeer.h, nsScriptablePeer.cpp: Removed.

	* plugin-glue.cpp: Fix debugger messages.

	* Makefile.am, 
	* moon-plugin.cpp,
	* moon-plugin.h: Remove ScriptablePeer code since now Mozilla use
	another aproach.

2007-06-05  Sebastien Pouliot  <sebastien@ximian.com> 

	* moon-plugin.cpp: Fix API change for Rectangle.

2007-06-05  Everaldo Canuto  <ecanuto@novell.com>

	* moon-plugin-glue.cpp: Splited in plugin-glue.cpp and plugin-entry.cpp.
	* plugin-glue.cpp: Fix 'undefined symbol' creating NPP_SetValueX.

2007-06-05  Everaldo Canuto  <ecanuto@novell.com>

	* Makefile.am: Add some linker flags, it prevents crash on Epiphany.

2007-06-05  Everaldo Canuto  <ecanuto@novell.com>

	* test/index.html: Add script to demo html page.

2007-06-05  Everaldo Canuto  <ecanuto@novell.com>

	* moon-plugin.cpp: Add runtime init to demo code.

2007-06-04  Everaldo Canuto  <ecanuto@novell.com>

	* plugin/Makefile.am: Generate and install .xpt for install-plugin target.

2007-06-04  Everaldo Canuto  <ecanuto@novell.com>

	[Implement scriptable to plugin]

	* plugin/test/index.html: Sample jscript included.

	* plugin/Makefile.am: Generates .h from idl file use xpidl.

	* plugin/moon-plugin.h,
	* plugin/moon-plugin.cpp,
	* plugin/moon-plugin-glue.cpp: Implement scriptable and some clean up.

	* plugin/nsIScriptableMoonPlugin.h,
	* plugin/nsIScriptableMoonPlugin.idl,
	* plugin/nsScriptablePeer.cpp,
	* plugin/nsScriptablePeer.h: New scriptable classes.

2007-06-03  Everaldo Canuto  <ecanuto@novell.com>

	* moon-plugin-glue.cpp,
	* moon-plugin.h,
	* moon-plugin.cpp: Fix GetValue and implement SetValue.

2007-06-03  Everaldo Canuto  <ecanuto@novell.com>

	* moon-plugin.h: Change plugin name, version and description to mimic 
	SilverLight and can be recognize as a valid plugin.

2007-06-03  Everaldo Canuto  <ecanuto@novell.com>

	* moon-plugin.c: Destroy objects on class destructor to prevent browser
	crashes.

2007-06-03  Everaldo Canuto  <ecanuto@novell.com>

	[Clean up demo and make some class fields private ]

	* moon-plugin-glue.c,
	* moon-plugin.h,
	* moon-plugin.c: Now just a surface control is added to plugn container,
	some field is now private demo was refactored.

2007-06-03  Everaldo Canuto  <ecanuto@novell.com>

	* Makefile.am: Compile if needed for install-plugin target.

2007-06-03  Everaldo Canuto  <ecanuto@novell.com>

	[Move to c++ based classes ]
	
	* moon-plugin-glue.c: Fix getvalue to return error when no instance 
	available.

	* moon-plugin.h,
	* moon-plugin.c: Change all function to class methods, also move wrapper
	functions to moon-plugin-glue.

2007-06-03  Everaldo Canuto  <ecanuto@novell.com>

	* moon-plugin.h,
	* moon-plugin.c,
	* moon-plugin-glue.c: Remove moon_plugin_initialize and moon_plugin_shutdown
	since whe alread have NP_Initialize and NP_Shutdown. Also change 
	PluginInstance structure to class (complete class suppont comming soon).

2007-06-03  Everaldo Canuto  <ecanuto@novell.com>

	* moon-plugin-glue.c: Some comments and stetic changes.

2007-06-03  Everaldo Canuto  <ecanuto@novell.com>

	* moon-plugin.h: Mime type description chage to 'WPFe Plug-In' to handle 
	SilverLight objects.

2007-06-03  Everaldo Canuto  <ecanuto@novell.com>

	* moon-plugin.c:
	* moon-plugin.h: Remove unused members to provide a clean code.

2007-06-03  Everaldo Canuto  <ecanuto@novell.com>

	* Makefile.am: Fix link options.

2007-06-03  Everaldo Canuto  <ecanuto@novell.com>

	* moon-plugin-glue.c:
	* moon-plugin.c:
	* moon-plugin.h: Rename initialise to initialize.

	* Makefile.am: Add libmoon to link and install it on plugin dir.

2007-06-02  Everaldo Canuto  <ecanuto@novell.com>

	* moon-plugin-glue.c: Renamed to moon-plugin-glue.cpp.
	* moon-plugin.c: Renamed to moon-plugin.cpp.
	* Changelog: Create a separated change log for plugin.
	* Makefile.am: Renamed to moon-plugin.cpp.
	* moon-plugin.h: Renamed to moon-plugin.cpp.
	
	[Also add a sample to show libmoon features in browser]
