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); TabState.onBrowserContentsSwapped(browser, otherBrowser);
TabStateCache.onBrowserContentsSwapped(browser, otherBrowser); TabStateCache.onBrowserContentsSwapped(browser, otherBrowser);
break; 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": case "TabOpen":
this.onTabAdd(win, aEvent.originalTarget); this.onTabAdd(win, aEvent.originalTarget);
break; break;
@ -1235,6 +1245,7 @@ let SessionStoreInternal = {
let browser = aTab.linkedBrowser; let browser = aTab.linkedBrowser;
browser.addEventListener("load", this, true); browser.addEventListener("load", this, true);
browser.addEventListener("SwapDocShells", this, true); browser.addEventListener("SwapDocShells", this, true);
browser.addEventListener("UserTypedValueChanged", this, true);
let mm = browser.messageManager; let mm = browser.messageManager;
MESSAGES.forEach(msg => mm.addMessageListener(msg, this)); MESSAGES.forEach(msg => mm.addMessageListener(msg, this));
@ -1262,6 +1273,7 @@ let SessionStoreInternal = {
let browser = aTab.linkedBrowser; let browser = aTab.linkedBrowser;
browser.removeEventListener("load", this, true); browser.removeEventListener("load", this, true);
browser.removeEventListener("SwapDocShells", this, true); browser.removeEventListener("SwapDocShells", this, true);
browser.removeEventListener("UserTypedValueChanged", this, true);
let mm = browser.messageManager; let mm = browser.messageManager;
MESSAGES.forEach(msg => mm.removeMessageListener(msg, this)); MESSAGES.forEach(msg => mm.removeMessageListener(msg, this));

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

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

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

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