Bug 942622 - Invalidate TabStateCache when .userTypedValue changes r=yoric,dao

From 087412c836ecf1412325942e20c1fd9559d8f20a Mon Sep 17 00:00:00 2001
This commit is contained in:
Tim Taubert 2013-11-25 21:01:43 +01:00
Родитель 2b1042fd24
Коммит db00b3e4b6
3 изменённых файлов: 23 добавлений и 4 удалений

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

@ -650,6 +650,16 @@ let SessionStoreInternal = {
TabState.onBrowserContentsSwapped(browser, otherBrowser);
TabStateCache.onBrowserContentsSwapped(browser, otherBrowser);
break;
case "UserTypedValueChanged":
browser = aEvent.currentTarget;
if (browser.userTypedValue) {
TabStateCache.updateField(browser, "userTypedValue", browser.userTypedValue);
TabStateCache.updateField(browser, "userTypedClear", browser.userTypedClear);
} else {
TabStateCache.removeField(browser, "userTypedValue");
TabStateCache.removeField(browser, "userTypedClear");
}
break;
case "TabOpen":
this.onTabAdd(win, aEvent.originalTarget);
break;
@ -1235,6 +1245,7 @@ let SessionStoreInternal = {
let browser = aTab.linkedBrowser;
browser.addEventListener("load", this, true);
browser.addEventListener("SwapDocShells", this, true);
browser.addEventListener("UserTypedValueChanged", this, true);
let mm = browser.messageManager;
MESSAGES.forEach(msg => mm.addMessageListener(msg, this));
@ -1262,6 +1273,7 @@ let SessionStoreInternal = {
let browser = aTab.linkedBrowser;
browser.removeEventListener("load", this, true);
browser.removeEventListener("SwapDocShells", this, true);
browser.removeEventListener("UserTypedValueChanged", this, true);
let mm = browser.messageManager;
MESSAGES.forEach(msg => mm.removeMessageListener(msg, this));

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

@ -236,7 +236,6 @@ let TabStateCacheInternal = {
if (data) {
data[aField] = aValue;
}
TabStateCacheTelemetry.recordAccess(!!data);
},
/**
@ -252,7 +251,6 @@ let TabStateCacheInternal = {
if (data && aField in data) {
delete data[aField];
}
TabStateCacheTelemetry.recordAccess(!!data);
},
/**

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

@ -673,8 +673,17 @@
</field>
<property name="userTypedValue"
onget="return this._userTypedValue;"
onset="this.userTypedClear = 0; return this._userTypedValue = val;"/>
onget="return this._userTypedValue;">
<setter><![CDATA[
this.userTypedClear = 0;
this._userTypedValue = val;
let event = new CustomEvent("UserTypedValueChanged");
this.dispatchEvent(event);
return val;
]]></setter>
</property>
<field name="mFormFillAttached">
false