зеркало из https://github.com/mozilla/gecko-dev.git
Bug 1439013 - [1.2] Add isUserTriggered argument to nsILinkHandler and expose it as an internal load flag. r=smaug
This commit is contained in:
Родитель
3cbcfdf4cd
Коммит
b03149e8d0
|
@ -13358,6 +13358,7 @@ public:
|
|||
int64_t aPostDataStreamLength,
|
||||
nsIInputStream* aHeadersDataStream,
|
||||
bool aNoOpenerImplied,
|
||||
bool aIsUserTriggered,
|
||||
bool aIsTrusted,
|
||||
nsIPrincipal* aTriggeringPrincipal);
|
||||
|
||||
|
@ -13376,7 +13377,8 @@ public:
|
|||
mTargetSpec.get(), mFileName,
|
||||
mPostDataStream, mPostDataStreamLength,
|
||||
mHeadersDataStream, mNoOpenerImplied,
|
||||
nullptr, nullptr, mTriggeringPrincipal);
|
||||
nullptr, nullptr, mIsUserTriggered,
|
||||
mTriggeringPrincipal);
|
||||
}
|
||||
return NS_OK;
|
||||
}
|
||||
|
@ -13392,6 +13394,7 @@ private:
|
|||
nsCOMPtr<nsIContent> mContent;
|
||||
PopupControlState mPopupState;
|
||||
bool mNoOpenerImplied;
|
||||
bool mIsUserTriggered;
|
||||
bool mIsTrusted;
|
||||
nsCOMPtr<nsIPrincipal> mTriggeringPrincipal;
|
||||
};
|
||||
|
@ -13405,6 +13408,7 @@ OnLinkClickEvent::OnLinkClickEvent(nsDocShell* aHandler,
|
|||
int64_t aPostDataStreamLength,
|
||||
nsIInputStream* aHeadersDataStream,
|
||||
bool aNoOpenerImplied,
|
||||
bool aIsUserTriggered,
|
||||
bool aIsTrusted,
|
||||
nsIPrincipal* aTriggeringPrincipal)
|
||||
: mozilla::Runnable("OnLinkClickEvent")
|
||||
|
@ -13418,6 +13422,7 @@ OnLinkClickEvent::OnLinkClickEvent(nsDocShell* aHandler,
|
|||
, mContent(aContent)
|
||||
, mPopupState(mHandler->mScriptGlobal->GetPopupControlState())
|
||||
, mNoOpenerImplied(aNoOpenerImplied)
|
||||
, mIsUserTriggered(aIsUserTriggered)
|
||||
, mIsTrusted(aIsTrusted)
|
||||
, mTriggeringPrincipal(aTriggeringPrincipal)
|
||||
{
|
||||
|
@ -13431,6 +13436,7 @@ nsDocShell::OnLinkClick(nsIContent* aContent,
|
|||
nsIInputStream* aPostDataStream,
|
||||
int64_t aPostDataStreamLength,
|
||||
nsIInputStream* aHeadersDataStream,
|
||||
bool aIsUserTriggered,
|
||||
bool aIsTrusted,
|
||||
nsIPrincipal* aTriggeringPrincipal)
|
||||
{
|
||||
|
@ -13477,7 +13483,7 @@ nsDocShell::OnLinkClick(nsIContent* aContent,
|
|||
new OnLinkClickEvent(this, aContent, aURI, target.get(), aFileName,
|
||||
aPostDataStream, aPostDataStreamLength,
|
||||
aHeadersDataStream, noOpenerImplied,
|
||||
aIsTrusted, aTriggeringPrincipal);
|
||||
aIsUserTriggered, aIsTrusted, aTriggeringPrincipal);
|
||||
return DispatchToTabGroup(TaskCategory::UI, ev.forget());
|
||||
}
|
||||
|
||||
|
@ -13500,6 +13506,7 @@ nsDocShell::OnLinkClickSync(nsIContent* aContent,
|
|||
bool aNoOpenerImplied,
|
||||
nsIDocShell** aDocShell,
|
||||
nsIRequest** aRequest,
|
||||
bool aIsUserTriggered,
|
||||
nsIPrincipal* aTriggeringPrincipal)
|
||||
{
|
||||
// Initialize the DocShell / Request
|
||||
|
@ -13638,6 +13645,10 @@ nsDocShell::OnLinkClickSync(nsIContent* aContent,
|
|||
GetIsExecutingOnLoadHandler(&inOnLoadHandler);
|
||||
uint32_t loadType = inOnLoadHandler ? LOAD_NORMAL_REPLACE : LOAD_LINK;
|
||||
|
||||
if (aIsUserTriggered) {
|
||||
flags |= INTERNAL_LOAD_FLAGS_IS_USER_TRIGGERED;
|
||||
}
|
||||
|
||||
nsresult rv = InternalLoad(clonedURI, // New URI
|
||||
nullptr, // Original URI
|
||||
Nothing(), // Let the protocol handler assign it
|
||||
|
|
|
@ -210,6 +210,7 @@ public:
|
|||
nsIInputStream* aPostDataStream,
|
||||
int64_t aPostDataStreamLength,
|
||||
nsIInputStream* aHeadersDataStream,
|
||||
bool aIsUserTriggered,
|
||||
bool aIsTrusted,
|
||||
nsIPrincipal* aTriggeringPrincipal) override;
|
||||
NS_IMETHOD OnLinkClickSync(nsIContent* aContent,
|
||||
|
@ -222,6 +223,7 @@ public:
|
|||
bool aNoOpenerImplied = false,
|
||||
nsIDocShell** aDocShell = 0,
|
||||
nsIRequest** aRequest = 0,
|
||||
bool aIsUserTriggered = false,
|
||||
nsIPrincipal* aTriggeringPrincipal = nullptr) override;
|
||||
NS_IMETHOD OnOverLink(nsIContent* aContent,
|
||||
nsIURI* aURI,
|
||||
|
|
|
@ -139,6 +139,9 @@ interface nsIDocShell : nsIDocShellTreeItem
|
|||
// Whether a top-level data URI navigation is allowed for that load
|
||||
const long INTERNAL_LOAD_FLAGS_FORCE_ALLOW_DATA_URI = 0x200;
|
||||
|
||||
// Whether the load was triggered by user interaction.
|
||||
const long INTERNAL_LOAD_FLAGS_IS_USER_TRIGGERED = 0x1000;
|
||||
|
||||
/**
|
||||
* Loads the given URI. This method is identical to loadURI(...) except
|
||||
* that its parameter list is broken out instead of being packaged inside
|
||||
|
|
|
@ -49,6 +49,7 @@ public:
|
|||
nsIInputStream* aPostDataStream,
|
||||
int64_t aPostDataStreamLength,
|
||||
nsIInputStream* aHeadersDataStream,
|
||||
bool aIsUserTriggered,
|
||||
bool aIsTrusted,
|
||||
nsIPrincipal* aTriggeringPrincipal) = 0;
|
||||
|
||||
|
@ -82,6 +83,7 @@ public:
|
|||
bool aNoOpenerImplied = false,
|
||||
nsIDocShell** aDocShell = 0,
|
||||
nsIRequest** aRequest = 0,
|
||||
bool aIsUserTriggered = false,
|
||||
nsIPrincipal* aTriggeringPrincipal = nullptr) = 0;
|
||||
|
||||
/**
|
||||
|
|
|
@ -5544,8 +5544,8 @@ nsContentUtils::TriggerLink(nsIContent *aContent, nsPresContext *aPresContext,
|
|||
|
||||
handler->OnLinkClick(aContent, aLinkURI,
|
||||
fileName.IsVoid() ? aTargetSpec.get() : EmptyString().get(),
|
||||
fileName, nullptr, -1, nullptr, aIsTrusted,
|
||||
aContent->NodePrincipal());
|
||||
fileName, nullptr, -1, nullptr, EventStateManager::IsHandlingUserInput(),
|
||||
aIsTrusted, aContent->NodePrincipal());
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -784,7 +784,8 @@ HTMLFormElement::SubmitSubmission(HTMLFormSubmission* aFormSubmission)
|
|||
postDataStream, postDataStreamLength,
|
||||
nullptr, false,
|
||||
getter_AddRefs(docShell),
|
||||
getter_AddRefs(mSubmittingRequest));
|
||||
getter_AddRefs(mSubmittingRequest),
|
||||
EventStateManager::IsHandlingUserInput());
|
||||
NS_ENSURE_SUBMIT_SUCCESS(rv);
|
||||
}
|
||||
|
||||
|
|
|
@ -485,7 +485,9 @@ NS_IMETHODIMP nsPluginInstanceOwner::GetURL(const char *aURL,
|
|||
}
|
||||
|
||||
rv = lh->OnLinkClick(content, uri, unitarget.get(), VoidString(),
|
||||
aPostStream, -1, headersDataStream, true, triggeringPrincipal);
|
||||
aPostStream, -1, headersDataStream,
|
||||
/* isUserTriggered */ false,
|
||||
/* isTrusted */ true, triggeringPrincipal);
|
||||
|
||||
return rv;
|
||||
}
|
||||
|
|
Загрузка…
Ссылка в новой задаче