[Ext] Crash Recovery 0.6.10 [discontinued]

Talk about add-ons and extension development.
Locked
old zeniko
Posts: 0
Joined: December 31st, 1969, 5:00 pm

Post by old zeniko »

Peng wrote:Because it usually counts up from zero. Except now it's also counting up from 4158661582. The first entry in the first tab is 0, then the next one is 4158661582, and it goes up to 4158661619.

Newly added tabs start somewhere around 0, restored tabs get arbitrary high IDs (so that they don't collide with the newly added ones).

Peng wrote:If I set extensions.crashrecovery.postdata to 0, does it still save stuff in text boxes like this?

Sure. The POSTDATA pref just controls what is sent from the browser to the server. Form data will always be saved (dependent on the .privacy_level pref).

Peng wrote:Firefox uses that dialog, but since Crash Recovery is for restoring from crashes and loads lots of tabs at the same time, it should use an error page instead of the same dialog...

Of course I'd use something like an error page. As already mentioned, the problem is that this isn't possible from pure JS.

Peng wrote:If Cache Fixer is still built in, well, it doesn't work for me on Linux. The cache still gets completely wiped out.

Cache Fixer is still included. It is however not as reliable as I'd like it to be (just better than nothing).
Peng
Posts: 778
Joined: November 9th, 2004, 2:31 pm
Location: Central Florida
Contact:

Post by Peng »

zeniko wrote:Newly added tabs start somewhere around 0, restored tabs get arbitrary high IDs (so that they don't collide with the newly added ones).


Oh, okay. :)

Now what would happen if I actually had opened a few billion tabs? :P

zeniko wrote:Cache Fixer is still included. It is however not as reliable as I'd like it to be (just better than nothing).


Well, I don't think it's ever worked for me.
Hug Peng
(aka Matt Nordhoff)
Check out: Adblock Plus | FoxClocks | OpenBook
User avatar
XerBlade
Posts: 865
Joined: October 4th, 2005, 10:45 pm
Location: Nashville, TN, US

Post by XerBlade »

Peng wrote:
Now what would happen if I actually had opened a few billion tabs? :P


Your computer wanted me to tell it thinks it's too young to die.
User Agent
Extensions
AMD64/2.41GHz RAM/1.0GB ATI/256MB-GDDR3/128-bit/8xAGP Cable6.0M/384kbps
Peng
Posts: 778
Joined: November 9th, 2004, 2:31 pm
Location: Central Florida
Contact:

Post by Peng »

XerBlade wrote:Your computer wanted me to tell it thinks it's too young to die.


As soon as I get off my ass and finish building the other one, it will.
Hug Peng
(aka Matt Nordhoff)
Check out: Adblock Plus | FoxClocks | OpenBook
User avatar
bookworm_2005
Posts: 19
Joined: March 29th, 2006, 9:51 pm

Add Feature

Post by bookworm_2005 »

First, I want to say how much I love Crash Recovery. I was using Tab Saver as my session manager and running Crash Recovery for the crash recovery feature. When I learned about the hidden preference that allows you to use CR to restore a session, I decided to remove Tab Saver and use CR. I really love the way it restores my sessions. It remembers everything, even the font size, and it does it all automatically. The only feature I miss is the ability to recover a closed tab. I know that your other extension, Session Manager, has this feature, but I didn't like the way it handled it when I tried it. I much prefer the way <a href="http://forums.mozillazine.org/viewtopic.php?t=72992">undoclosetab</a> handles this, as I rarely need to recover more than one tab, and having the command on the tab bar context menu is really convenient. Do you think you might add this feature to CR? It would be in keeping with the idea of simple crash recovery, and would allow for a simple and smooth integration into Firefox by putting the option where people expect to see it (on the Tab bar context menu). People who needed more complex tab restore options could of course use session manager instead.
Again, thank you for making such a great extension.
Peng
Posts: 778
Joined: November 9th, 2004, 2:31 pm
Location: Central Florida
Contact:

Post by Peng »

Tab Mix Plus has its own restoring-closed-tabs feature, similar to Session Manager, and it can add 'Undo Close Tab' to the tab bar context menu, along with doing lots of other cool stuff.

(BTW: I use zeniko's Session Manager extension, not TMP's session manager. There aren't any conflicts. I found TMP's to be extremely unreliable when restoring after crashes (it would always lose at lease one tab; the time it didn't, shortly after, it lost a tab on a non-crashing restart), and zeniko's extension saves form data and cookies, too.)
Hug Peng
(aka Matt Nordhoff)
Check out: Adblock Plus | FoxClocks | OpenBook
User avatar
bookworm_2005
Posts: 19
Joined: March 29th, 2006, 9:51 pm

Post by bookworm_2005 »

Yes, I've tried TMP, but I really don't need any of it's tab management features and I also found it's session saver unreliable. That's why I am looking for a simple session restore/crash recovery & tab rescue extension. Using Crash Recovery with Undoclosetab does the job beautifully, and it would be nice if the two were merged, since the features they provide are so closely related.

Bookworm
Peng
Posts: 778
Joined: November 9th, 2004, 2:31 pm
Location: Central Florida
Contact:

Post by Peng »

Oooh. I bet zeniko's userChrome.js extension could do this, if you use Session Manager. I don't know how, but I bet it could.

Of course, that would be another extension, and switching to Session Manager. :P
Hug Peng
(aka Matt Nordhoff)
Check out: Adblock Plus | FoxClocks | OpenBook
old zeniko
Posts: 0
Joined: December 31st, 1969, 5:00 pm

Re: Add Feature

Post by old zeniko »

bookworm_2005 wrote:The only feature I miss is the ability to recover a closed tab. [...] Do you think you might add this feature to CR? It would be in keeping with the idea of simple crash recovery, and would allow for a simple and smooth integration into Firefox by putting the option where people expect to see it (on the Tab bar context menu).

This feature is not within the reach of this extension. Crash Recovery is about recovering from crashes, not recovering regularly closed tabs or windows. If you really want this feature without the whole rest of Session Manager's features, you could try adding <a href="data:text/javascript,var%20UndoCloseTab%20%3D%20%7B%0A%09MAX_REOPENABLE_TABS%3A%2010%2C%0A%0A%09mCrashRecoveryService%3A%20Components.classes%5B%22%40zeniko%2Fcrashrecoveryservice%3B1%22%5D.getService(Components.interfaces.nsICrashRecoveryService)%2C%0A%09mOneTabRE%3A%20%2F%5Cn%5C%5BWindow(%5Cd%2B%5C.Tab%5Cd%2B)%5C%5D%5Cn%5B%5Cs%5CS%5D*%3F(%3F%3D%5Cn%5C%5BWindow(%3F!%5C1)%7C%24)%2Fg%2C%0A%09mClosedTabs%3A%20%5B%5D%2C%0A%0A%09init%3A%20function()%0A%09%7B%0A%09%09getBrowser().addEventListener(%22UCTabClosing%22%2C%20function(aEvent)%20%7B%20UndoCloseTab.onTabClosing(aEvent.originalTarget)%3B%20%7D%2C%20false)%3B%0A%09%09%0A%09%09eval(%22gBrowser.removeTab%20%3D%20%22%20%2B%20gBrowser.removeTab.toString().replace(%2F%5C%7B%2F%2C%20'%24%26%20var%20%24%24UC_event%20%3D%20document.createEvent(%22Events%22)%3B%20%24%24UC_event.initEvent(%22UCTabClosing%22%2C%20true%2C%20false)%3B%20((aTab.localName%20!%3D%20%22tab%22)%3Fthis.mCurrentTab%3AaTab).dispatchEvent(%24%24UC_event)%3B'))%3B%0A%09%09%0A%09%09this.mMenuitem%20%3D%20document.createElement(%22menuitem%22)%3B%0A%09%09%0A%09%09this.mMenuitem.setAttribute(%22label%22%2C%20%22Undo%20Close%20Tab%22)%3B%0A%09%09this.mMenuitem.setAttribute(%22oncommand%22%2C%20%22UndoCloseTab.undoCloseTab()%3B%22)%3B%0A%09%09this.mMenuitem.setAttribute(%22accesskey%22%2C%20%22U%22)%3B%0A%09%09%0A%09%09this.setDisabled(true)%3B%0A%09%09gBrowser.mStrip.firstChild.nextSibling.appendChild(this.mMenuitem)%3B%0A%09%09%0A%09%09if%20(!gBrowser.undoRemoveTab)%20%2F%2F%20tweak%20for%20Tab%20Clicking%20Options%0A%09%09%7B%0A%09%09%09gBrowser.undoRemoveTab%20%3D%20function()%20%7B%20UndoCloseTab.undoCloseTab()%3B%20%7D%3B%0A%09%09%7D%0A%09%7D%2C%0A%0A%09onTabClosing%3A%20function(aTab)%0A%09%7B%0A%09%09var%20browser%20%3D%20gBrowser.getBrowserForTab(aTab)%3B%0A%09%09if%20(browser.sessionHistory.count%20%3C%202%20%26%26%20browser.currentURI.spec%20%3D%3D%20%22about%3Ablank%22)%0A%09%09%7B%0A%09%09%09return%3B%0A%09%09%7D%0A%09%09%0A%09%09var%20state%20%3D%20this.mCrashRecoveryService.getWindowState(window)%3B%0A%09%09var%20position%20%3D%20aTab._tPos%20%2B%201%3B%0A%09%09%0A%09%09state%20%3D%20state.substr(state.indexOf(%22%5Cn%5BWindow1.Tab%22%20%2B%20position%20%2B%20%22%5D%22)).match(this.mOneTabRE)%5B0%5D.replace(%2F%5E(%5C%5BWindow1%5C.Tab)%5Cd%2B%2Fgm%2C%20%22%2411%22)%3B%0A%09%09%0A%09%09this.mClosedTabs.unshift(%7B%20name%3A%20aTab.label%2C%20pos%3A%20position%2C%20state%3A%20state%20%7D)%3B%0A%09%09this.mClosedTabs.splice(this.MAX_REOPENABLE_TABS)%3B%0A%09%09%0A%09%09this.setDisabled(false)%3B%0A%09%7D%2C%0A%0A%09undoCloseTab%3A%20function(aIx)%0A%09%7B%0A%09%09if%20(this.mClosedTabs%5BaIx%20%7C%7C%200%5D)%0A%09%09%7B%0A%09%09%09var%20tabData%20%3D%20this.mClosedTabs.splice(aIx%20%7C%7C%200%2C%201)%5B0%5D%3B%0A%09%09%09this.mCrashRecoveryService.restoreWindow(window%2C%20tabData.state%2C%20false)%3B%0A%09%09%09%0A%09%09%09var%20newTab%20%3D%20document.getAnonymousElementByAttribute(gBrowser%2C%20%22linkedpanel%22%2C%20gBrowser.mPanelContainer.lastChild.id)%3B%0A%09%09%09if%20(tabData.pos%20%26%26%20tabData.pos%20%3C%20gBrowser.mTabs.length)%0A%09%09%09%7B%0A%09%09%09%09gBrowser.moveTabTo(newTab%2C%20tabData.pos%20-%201)%3B%0A%09%09%09%7D%0A%09%09%09gBrowser.selectedTab%20%3D%20newTab%3B%0A%09%09%09%0A%09%09%09this.setDisabled(this.mClosedTabs.length%20%3D%3D%200)%3B%0A%09%09%7D%0A%09%7D%2C%0A%0A%09setDisabled%3A%20function(aValue)%0A%09%7B%0A%09%09if%20(aValue)%0A%09%09%7B%0A%09%09%09this.mMenuitem.setAttribute(%22disabled%22%2C%20%22true%22)%3B%0A%09%09%7D%0A%09%09else%0A%09%09%7B%0A%09%09%09this.mMenuitem.removeAttribute(%22disabled%22)%3B%0A%09%09%7D%0A%09%7D%0A%7D%3B%0A%0AUndoCloseTab.init()%3B%0A">these lines</a> to your userChrome.js. OTOH, using the undoclosetab extension is probably the easier solution...
User avatar
bookworm_2005
Posts: 19
Joined: March 29th, 2006, 9:51 pm

Re: Add Feature

Post by bookworm_2005 »

zeniko wrote: This feature is not within the reach of this extension. Crash Recovery is about recovering from crashes, not recovering regularly closed tabs or windows. If you really want this feature without the whole rest of Session Manager's features, you could try adding <a href="data:text/javascript,var%20UndoCloseTab%20%3D%20%7B%0A%09MAX_REOPENABLE_TABS%3A%2010%2C%0A%0A%09mCrashRecoveryService%3A%20Components.classes%5B%22%40zeniko%2Fcrashrecoveryservice%3B1%22%5D.getService(Components.interfaces.nsICrashRecoveryService)%2C%0A%09mOneTabRE%3A%20%2F%5Cn%5C%5BWindow(%5Cd%2B%5C.Tab%5Cd%2B)%5C%5D%5Cn%5B%5Cs%5CS%5D*%3F(%3F%3D%5Cn%5C%5BWindow(%3F!%5C1)%7C%24)%2Fg%2C%0A%09mClosedTabs%3A%20%5B%5D%2C%0A%0A%09init%3A%20function()%0A%09%7B%0A%09%09getBrowser().addEventListener(%22UCTabClosing%22%2C%20function(aEvent)%20%7B%20UndoCloseTab.onTabClosing(aEvent.originalTarget)%3B%20%7D%2C%20false)%3B%0A%09%09%0A%09%09eval(%22gBrowser.removeTab%20%3D%20%22%20%2B%20gBrowser.removeTab.toString().replace(%2F%5C%7B%2F%2C%20'%24%26%20var%20%24%24UC_event%20%3D%20document.createEvent(%22Events%22)%3B%20%24%24UC_event.initEvent(%22UCTabClosing%22%2C%20true%2C%20false)%3B%20((aTab.localName%20!%3D%20%22tab%22)%3Fthis.mCurrentTab%3AaTab).dispatchEvent(%24%24UC_event)%3B'))%3B%0A%09%09%0A%09%09this.mMenuitem%20%3D%20document.createElement(%22menuitem%22)%3B%0A%09%09%0A%09%09this.mMenuitem.setAttribute(%22label%22%2C%20%22Undo%20Close%20Tab%22)%3B%0A%09%09this.mMenuitem.setAttribute(%22oncommand%22%2C%20%22UndoCloseTab.undoCloseTab()%3B%22)%3B%0A%09%09this.mMenuitem.setAttribute(%22accesskey%22%2C%20%22U%22)%3B%0A%09%09%0A%09%09this.setDisabled(true)%3B%0A%09%09gBrowser.mStrip.firstChild.nextSibling.appendChild(this.mMenuitem)%3B%0A%09%09%0A%09%09if%20(!gBrowser.undoRemoveTab)%20%2F%2F%20tweak%20for%20Tab%20Clicking%20Options%0A%09%09%7B%0A%09%09%09gBrowser.undoRemoveTab%20%3D%20function()%20%7B%20UndoCloseTab.undoCloseTab()%3B%20%7D%3B%0A%09%09%7D%0A%09%7D%2C%0A%0A%09onTabClosing%3A%20function(aTab)%0A%09%7B%0A%09%09var%20browser%20%3D%20gBrowser.getBrowserForTab(aTab)%3B%0A%09%09if%20(browser.sessionHistory.count%20%3C%202%20%26%26%20browser.currentURI.spec%20%3D%3D%20%22about%3Ablank%22)%0A%09%09%7B%0A%09%09%09return%3B%0A%09%09%7D%0A%09%09%0A%09%09var%20state%20%3D%20this.mCrashRecoveryService.getWindowState(window)%3B%0A%09%09var%20position%20%3D%20aTab._tPos%20%2B%201%3B%0A%09%09%0A%09%09state%20%3D%20state.substr(state.indexOf(%22%5Cn%5BWindow1.Tab%22%20%2B%20position%20%2B%20%22%5D%22)).match(this.mOneTabRE)%5B0%5D.replace(%2F%5E(%5C%5BWindow1%5C.Tab)%5Cd%2B%2Fgm%2C%20%22%2411%22)%3B%0A%09%09%0A%09%09this.mClosedTabs.unshift(%7B%20name%3A%20aTab.label%2C%20pos%3A%20position%2C%20state%3A%20state%20%7D)%3B%0A%09%09this.mClosedTabs.splice(this.MAX_REOPENABLE_TABS)%3B%0A%09%09%0A%09%09this.setDisabled(false)%3B%0A%09%7D%2C%0A%0A%09undoCloseTab%3A%20function(aIx)%0A%09%7B%0A%09%09if%20(this.mClosedTabs%5BaIx%20%7C%7C%200%5D)%0A%09%09%7B%0A%09%09%09var%20tabData%20%3D%20this.mClosedTabs.splice(aIx%20%7C%7C%200%2C%201)%5B0%5D%3B%0A%09%09%09this.mCrashRecoveryService.restoreWindow(window%2C%20tabData.state%2C%20false)%3B%0A%09%09%09%0A%09%09%09var%20newTab%20%3D%20document.getAnonymousElementByAttribute(gBrowser%2C%20%22linkedpanel%22%2C%20gBrowser.mPanelContainer.lastChild.id)%3B%0A%09%09%09if%20(tabData.pos%20%26%26%20tabData.pos%20%3C%20gBrowser.mTabs.length)%0A%09%09%09%7B%0A%09%09%09%09gBrowser.moveTabTo(newTab%2C%20tabData.pos%20-%201)%3B%0A%09%09%09%7D%0A%09%09%09gBrowser.selectedTab%20%3D%20newTab%3B%0A%09%09%09%0A%09%09%09this.setDisabled(this.mClosedTabs.length%20%3D%3D%200)%3B%0A%09%09%7D%0A%09%7D%2C%0A%0A%09setDisabled%3A%20function(aValue)%0A%09%7B%0A%09%09if%20(aValue)%0A%09%09%7B%0A%09%09%09this.mMenuitem.setAttribute(%22disabled%22%2C%20%22true%22)%3B%0A%09%09%7D%0A%09%09else%0A%09%09%7B%0A%09%09%09this.mMenuitem.removeAttribute(%22disabled%22)%3B%0A%09%09%7D%0A%09%7D%0A%7D%3B%0A%0AUndoCloseTab.init()%3B%0A">theselines</a> to your userChrome.js. OTOH, using the undoclosetab extension is probably the easier solution...

You are probably right, I'll just stick with undoclosetab for now. Thanks. :)
cc_man
Posts: 1
Joined: April 13th, 2006, 1:32 pm

licensing?

Post by cc_man »

I couldn't find any info. Is there any licensing to this crash recovery extension beyond MPL?
old zeniko
Posts: 0
Joined: December 31st, 1969, 5:00 pm

Post by old zeniko »

The <a href="jar:http://www.haslo.ch/zeniko/software/crashrecovery.xpi!/license.txt">license</a> is shipped with the extension. It's the usual GPL/LGPL/MPL tri-license which applies to most of Mozilla code. Why do you ask?
Peng
Posts: 778
Joined: November 9th, 2004, 2:31 pm
Location: Central Florida
Contact:

Post by Peng »

zeniko wrote:It's the usual GPL/LGPL/MPL tri-license which applies to most of Mozilla code.


All of the Mozilla code now. The latest code, at least. :)
Hug Peng
(aka Matt Nordhoff)
Check out: Adblock Plus | FoxClocks | OpenBook
shoofy
Posts: 385
Joined: November 13th, 2004, 4:56 pm

Post by shoofy »

Since I installed 0.6.8, whenever I restart Firefox using the restart button from Mr. Tech's Local Install extension Crash Recovery restores my session. All my hidden settigns fro Crash Recovery are at their defaults. I can't tell if this comes from Crash Recovery or MTLI, but I can't find a way to turn it off. When I close and reopen Firefox the normal way my session is not restored.
old zeniko
Posts: 0
Joined: December 31st, 1969, 5:00 pm

Post by old zeniko »

That's MTLI taking advantage of Crash Recovery. If you don't like it, just set the pref local_install.enableSessionManagerResume to false (although I can't imagine why you wouldn't want it ;)).
Locked