зеркало из https://github.com/mozilla/gecko-dev.git
Trying to make Tp go down. Switch back to the old way of doing load events.
This commit is contained in:
Родитель
3610d1fc06
Коммит
38989d3add
|
@ -56,9 +56,9 @@
|
||||||
#include "nsIEventQueue.h"
|
#include "nsIEventQueue.h"
|
||||||
#include "nsNetUtil.h"
|
#include "nsNetUtil.h"
|
||||||
|
|
||||||
#include "nsIDOMDocumentEvent.h"
|
#include "nsIPresContext.h"
|
||||||
#include "nsIDOMEventTarget.h"
|
#include "nsIPresShell.h"
|
||||||
#include "nsIDOMEvent.h"
|
#include "nsGUIEvent.h"
|
||||||
|
|
||||||
nsImageLoadingContent::nsImageLoadingContent()
|
nsImageLoadingContent::nsImageLoadingContent()
|
||||||
: mObserverList(nsnull),
|
: mObserverList(nsnull),
|
||||||
|
@ -507,21 +507,34 @@ nsImageLoadingContent::StringToURI(const nsACString& aSpec,
|
||||||
* Struct used to dispatch events
|
* Struct used to dispatch events
|
||||||
*/
|
*/
|
||||||
struct ImageEvent : PLEvent {
|
struct ImageEvent : PLEvent {
|
||||||
ImageEvent(nsIDOMEventTarget* aTarget, nsIDOMEvent* aEvent)
|
ImageEvent(nsIPresContext* aPresContext, nsIContent* aContent,
|
||||||
: mTarget(aTarget),
|
const nsAString& aMessage)
|
||||||
mEvent(aEvent)
|
: mPresContext(aPresContext),
|
||||||
|
mContent(aContent),
|
||||||
|
mMessage(aMessage)
|
||||||
{}
|
{}
|
||||||
|
nsCOMPtr<nsIPresContext> mPresContext;
|
||||||
nsCOMPtr<nsIDOMEventTarget> mTarget;
|
nsCOMPtr<nsIContent> mContent;
|
||||||
nsCOMPtr<nsIDOMEvent> mEvent;
|
nsString mMessage;
|
||||||
};
|
};
|
||||||
|
|
||||||
PR_STATIC_CALLBACK(void*)
|
PR_STATIC_CALLBACK(void*)
|
||||||
HandleImagePLEvent(PLEvent* aEvent)
|
HandleImagePLEvent(PLEvent* aEvent)
|
||||||
{
|
{
|
||||||
ImageEvent* evt = NS_STATIC_CAST(ImageEvent*, aEvent);
|
ImageEvent* evt = NS_STATIC_CAST(ImageEvent*, aEvent);
|
||||||
PRBool preventDefaultCalled; // we don't care...
|
nsEventStatus estatus = nsEventStatus_eIgnore;
|
||||||
evt->mTarget->DispatchEvent(evt->mEvent, &preventDefaultCalled);
|
nsEvent event;
|
||||||
|
event.eventStructType = NS_EVENT;
|
||||||
|
|
||||||
|
if (evt->mMessage == NS_LITERAL_STRING("load")) {
|
||||||
|
event.message = NS_IMAGE_LOAD;
|
||||||
|
} else {
|
||||||
|
event.message = NS_IMAGE_ERROR;
|
||||||
|
}
|
||||||
|
|
||||||
|
evt->mContent->HandleDOMEvent(evt->mPresContext, &event, nsnull,
|
||||||
|
NS_EVENT_FLAG_INIT, &estatus);
|
||||||
|
|
||||||
return nsnull;
|
return nsnull;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -554,19 +567,15 @@ nsImageLoadingContent::FireEvent(const nsAString& aEventType)
|
||||||
nsCOMPtr<nsIDocument> document;
|
nsCOMPtr<nsIDocument> document;
|
||||||
rv = GetOurDocument(getter_AddRefs(document));
|
rv = GetOurDocument(getter_AddRefs(document));
|
||||||
|
|
||||||
nsCOMPtr<nsIDOMEventTarget> eventTarget = do_QueryInterface(this);
|
nsCOMPtr<nsIPresShell> shell;
|
||||||
NS_ENSURE_TRUE(eventTarget, NS_ERROR_UNEXPECTED);
|
document->GetShellAt(0, getter_AddRefs(shell));
|
||||||
|
NS_ENSURE_TRUE(shell, NS_ERROR_FAILURE);
|
||||||
|
nsCOMPtr<nsIPresContext> presContext;
|
||||||
|
shell->GetPresContext(getter_AddRefs(presContext));
|
||||||
|
NS_ENSURE_TRUE(presContext, NS_ERROR_FAILURE);
|
||||||
|
nsCOMPtr<nsIContent> ourContent = do_QueryInterface(this);
|
||||||
|
|
||||||
nsCOMPtr<nsIDOMDocumentEvent> doc = do_QueryInterface(document);
|
ImageEvent* evt = new ImageEvent(presContext, ourContent, aEventType);
|
||||||
NS_ENSURE_TRUE(doc, rv);
|
|
||||||
|
|
||||||
nsCOMPtr<nsIDOMEvent> domEvent;
|
|
||||||
rv = doc->CreateEvent(NS_LITERAL_STRING("HTMLEvents"), getter_AddRefs(domEvent));
|
|
||||||
NS_ENSURE_TRUE(domEvent, rv);
|
|
||||||
|
|
||||||
domEvent->InitEvent(aEventType, PR_FALSE, PR_FALSE);
|
|
||||||
|
|
||||||
ImageEvent* evt = new ImageEvent(eventTarget, domEvent);
|
|
||||||
|
|
||||||
NS_ENSURE_TRUE(evt, NS_ERROR_OUT_OF_MEMORY);
|
NS_ENSURE_TRUE(evt, NS_ERROR_OUT_OF_MEMORY);
|
||||||
|
|
||||||
|
|
Загрузка…
Ссылка в новой задаче