Add a flag to nsIWebNavigation to disable popup-blocking for loads as needed.

Bug 278357, r=biesi, sr=jst, a=bsmedberg
This commit is contained in:
bzbarsky%mit.edu 2007-09-14 19:21:45 +00:00
Родитель 9404d2126d
Коммит 1776f51ef6
2 изменённых файлов: 16 добавлений и 0 удалений

Просмотреть файл

@ -2801,6 +2801,16 @@ nsDocShell::LoadURI(const PRUnichar * aURI,
if (NS_FAILED(rv) || !uri) if (NS_FAILED(rv) || !uri)
return NS_ERROR_FAILURE; return NS_ERROR_FAILURE;
PopupControlState popupState;
if (aLoadFlags & LOAD_FLAGS_ALLOW_POPUPS) {
popupState = openAllowed;
aLoadFlags &= ~LOAD_FLAGS_ALLOW_POPUPS;
} else {
popupState = openOverridden;
}
nsCOMPtr<nsPIDOMWindow> win(do_QueryInterface(mScriptGlobal));
nsAutoPopupStatePusher statePusher(win, popupState);
// Don't pass certain flags that aren't needed and end up confusing // Don't pass certain flags that aren't needed and end up confusing
// ConvertLoadTypeToDocShellLoadInfo. We do need to ensure that they are // ConvertLoadTypeToDocShellLoadInfo. We do need to ensure that they are
// passed to LoadURI though, since it uses them. // passed to LoadURI though, since it uses them.

Просмотреть файл

@ -191,6 +191,12 @@ interface nsIWebNavigation : nsISupports
*/ */
const unsigned long LOAD_FLAGS_FIRST_LOAD = 0x4000; const unsigned long LOAD_FLAGS_FIRST_LOAD = 0x4000;
/**
* This flag specifies that the load should not be subject to popup
* blocking checks.
*/
const unsigned long LOAD_FLAGS_ALLOW_POPUPS = 0x8000;
/** /**
* Loads a given URI. This will give priority to loading the requested URI * Loads a given URI. This will give priority to loading the requested URI
* in the object implementing this interface. If it can't be loaded here * in the object implementing this interface. If it can't be loaded here