Closed Bug 484982 Opened 15 years ago Closed 15 years ago

Weave should support SeaMonkey

Categories

(Cloud Services :: General, enhancement)

enhancement
Not set
normal

Tracking

(Not tracked)

RESOLVED FIXED

People

(Reporter: iav, Assigned: iav)

References

Details

Attachments

(2 files, 4 obsolete files)

User-Agent:       Mozilla/5.0 (Windows; U; Windows NT 5.1; rv:1.9.1b4pre) Gecko/20090323 SeaMonkey/2.0b1pre
Build Identifier: 

Will be good if weave can work on seamonkey.
At least History, passwords, tabs can work like on firefox now.

Reproducible: Always
OS: Windows XP → All
Hardware: x86 → All
Target Milestone: -- → Future
Attached patch enable run on seamonkey (obsolete) — Splinter Review
This patch enables weave to install and run on seamonkey.
Now clients, password and history sync works ok between firefox and seamonkey, tab sync have some starnges. Options window not available, all configurations should be done via about:config.

Bookmark backend of samonkey is not firefox-compatible, and shouldn't work at all.
Attachment #369699 - Flags: review?
(In reply to comment #1)
> Created an attachment (id=369699) [details]
> enable run on seamonkey

looks ok so far.  don't you also need some install.rdf.in changes?

> Now clients, password and history sync works ok between firefox and seamonkey,
> tab sync have some starnges. Options window not available, all configurations
> should be done via about:config.

Okay, I'm not sure what's needed to make the pref pane or tab sync work, but those should be part of this bug imo.

> Bookmark backend of samonkey is not firefox-compatible, and shouldn't work at
> all.

Ok, then it should be disabled in the glue code.  Likely the best option will be to create a new glue file similar to fx-weave-glue.js that is specific to seamonkey.
Comment on attachment 369699 [details] [diff] [review]
enable run on seamonkey

clearing review, as it's not really ready yet.

in the future, btw, you can set review to me specifically, that way it shows up in my requests list.
Attachment #369699 - Flags: review?
Now option window open on seamonkey from special menu item;
initial state of controls not load from real state; changed settings didn't saves on exit
(In reply to comment #4)
> Created an attachment (id=369970) [details]
> copy firefox prefs overlay to sm dialog

These look mostly the same as the Firefox ones.  Wouldn't it be better to share the same dialog if so?

Up to you, though, if you want to have the pref pane diverge then that's ok.
Assignee: nobody → mozdiav
Status: UNCONFIRMED → NEW
Ever confirmed: true
Summary: weave should support seamonkey → Weave should support SeaMonkey
Version: unspecified → Trunk
As some areas, like esp. bookmarks integration and probably also UI, likely need a closer look here, I have proposed a Google Summer of Code project for this, and we even have someone interested in applying for it ;-)
Dan, I not want to have a separate file, I'd like to have as minimal sm-special code as possible. 
I did a copy only because I don't know how to avoid it. 
When I start this trials, hope I can find all incompatible places, and eliminate it with minimal workarounds - to avoid a special sm-specific programming future.
SeaMonkey 2.0a3 uses a <prefwindow> you may be able to overlay the prefpane over chrome://communicator/content/pref/preferences.xul
OK what you can do is to overlay chrome://communicator/content/pref/preferences.xul with a  small stub overlay that adds a treeitem to <treechildren id="prefsPanelChildren"> The SeaMonkey prefpane overlay loader will then load the "fx-preferences.xul" on demand automatically. I don't recommend overlaying chrome://communicator/content/pref/preferences.xul directly with chrome://weave/content/fx-preferences.xul

e.g.
<?xml version="1.0"?>
<?xml-stylesheet href="chrome://weave/content/preferences.css" type="text/css"?>
<!DOCTYPE overlay SYSTEM "chrome://weave/locale/preferences.dtd">

<overlay id="weave_preftree_overlay"
         xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul">

  <treechildren id="prefsPanelChildren">
    <treeitem id="weaveItem"
              label="&prefpane.label;"
              prefpane="sync-prefpane"
              helpTopic="weave_pref_content" <-- obviously wrong.
              url="chrome://weave/content/fx-preferences.xul"/>
  </treechildren>
</overlay>
+# Firefox
 overlay chrome://browser/content/browser.xul chrome://weave/content/sync.xul application={ec8030f7-c20a-464f-9b0e-13a3a9e97384}
 overlay chrome://browser/content/browser.xul chrome://weave/content/fx-weave-overlay.xul application={ec8030f7-c20a-464f-9b0e-13a3a9e97384}
 overlay chrome://browser/content/preferences/preferences.xul chrome://weave/content/fx-preferences.xul application={ec8030f7-c20a-464f-9b0e-13a3a9e97384}
....
The above lines are redundant if you are going to overlay these chrome urls unconditionally for all apps using the lines below:

+# others
+overlay chrome://browser/content/browser.xul chrome://weave/content/sync.xul 
+overlay chrome://browser/content/browser.xul chrome://weave/content/fx-weave-overlay.xul
+overlay chrome://browser/content/preferences/preferences.xul chrome://weave/content/fx-preferences.xul
You need to patch install.rdf.in and add compatibility information for SeaMonkey.

<em:targetApplication>
  <Description>
    <em:id>{92650c4d-4b8e-4d2a-b7eb-24ecf4f6b63a}</em:id>
    <em:minVersion>2.0a3</em:minVersion>
    <em:maxVersion>2.0b1pre</em:maxVersion>
  </Description>
</em:targetApplication>
Attachment #369970 - Attachment is obsolete: true
Ok, Thank you, Phil.
Now I have 

in sync.js:

  doOpenPrefs: function WeaveWin_doOpenPrefs(event) {
  var pane = "sync-prefpane";
  if ("openPreferences" in window)
    openPreferences(pane);  // firefox
  else if ("openOptionsDialog" in window)
    openOptionsDialog(pane);  // thunderbird
  else if ("goPreferences" in window)
    goPreferences(pane); // SeaMonkey
  },

-------------------------------------
in sm-preferences.xul:

<?xml version="1.0"?>
<?xml-stylesheet href="chrome://weave/content/preferences.css"
type="text/css"?>
<!DOCTYPE overlay SYSTEM "chrome://weave/locale/preferences.dtd">

<overlay id="weave_preftree_overlay"
         xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul">

  <treechildren id="prefsPanelChildren">
    <treeitem id="weaveItem"
              label="&prefpane.label;"
              prefpane="sync-prefpane"
              url="chrome://weave/content/fx-preferences.xul"/>
  </treechildren>
</overlay>
---------------------------------------------

and in chrome.manifest:

overlay	chrome://communicator/content/pref/preferences.xul chrome://weave/content/sm-preferences.xul application={92650c4d-4b8e-4d2a-b7eb-24ecf4f6b63a}

and it works!!!

Only width of standart SM pref window is not enough, but I hink it's not a problem for a while.

I'll do a patchfile with that changes.
Oops: data loads into the form omly on second open. On first open fields are empty.
> Only width of standart SM pref window is not enough, but I hink it's not a
> problem for a while.
Fortunately in SeaMonkey (unlike Firefox) our prefwindow is resizable.

>   var pane = "sync-prefpane";
>   if ("openPreferences" in window)

This is a stop gap measure. You should file a followup bug to make application detection in this function more robust. I would prefer something like:

var appName = Components.classes["@mozilla.org/xre/app-info;1"]
                        .createInstance(Components.interfaces.nsIXULAppInfo).name;
switch (appName) {
  case: "Firefox"
    openPreferences(pane);
    break;
  case: "Thunderbird"
    openOptionsDialog(pane);
    break;
  case: "SeaMonkey"
    goPreferences(pane);
    break;
  case: "Fennec" ????<- no idea what nsIXULAppInfo returns.
}
Attachment #369699 - Attachment is obsolete: true
I am not completely sure, but on first look "Fennec" dos not use sync.js.
Fennec has a whole separate preferences "window" as well.
Still work.
Tested on Firefox trunk and Seamonkey trunk.
on Seamonkey data loads into properies form on second open.
Attachment #370247 - Attachment is obsolete: true
Attachment #370268 - Flags: review?(thunder)
Hint: If setting nglayout.debug.disable_xul_cache = true then weave preferences form data on seamonkey not load data at all.

I'd fill a bug about it, but can't localize it.
FYI:

Mozilla/5.0 (Windows; U; Windows NT 5.1; rv:1.9.1b4pre) Gecko/20090331 SeaMonkey/2.0b1pre

Error: Weave is not defined
Source file: chrome://weave/content/sync.js
Line: 112
 ----------
Error: document is null
Source file: chrome://weave/content/preferences.js
Line: 78
 ----------
Error: BookmarksEventHandler is not defined
Source file: chrome://weave/content/bookmark-menu-overlay.js
Line: 74
 ----------
Error: document is null
Source file: chrome://weave/content/preferences.js
Line: 72
 ----------
Error: gWeavePrefs is not defined
Source file: chrome://weave/content/preferences.js
Line: 277
 ----------
Warning: Timed textboxes are deprecated. Consider using type="search" instead.
Source file: chrome://weave/content/wizard.xul
 ----------
Warning: XUL box for row element contained an inline #text child, forcing all its children to be wrapped in a block.
Source file: chrome://weave/content/wizard.xul
 ----------
Error: $("captcha").contentDocument.getElementById("recaptcha_challenge_field") is null
Source file: chrome://weave/content/wizard.js
Line: 666
 ----------
Error: $("captcha").contentDocument.getElementById("recaptcha_challenge_field") is null
Source file: chrome://weave/content/wizard.js
Line: 683
Here is my error log in seamonkey, during this log Seamonkey was started, weave sync was performed, then weave properties window was opened and closed 2 times.

Log not edited, some records seems not weave-related:
No chrome package registered for chrome://browser/skin/browser.css
 ----------
Error: BookmarksEventHandler is not defined
Source file: chrome://weave/content/bookmark-menu-overlay.js
Line: 74
 ----------
Error: 'JavaScript component does not have a method named: "handleEvent"' when calling method: [nsIDOMEventListener::handleEvent] = NS_ERROR_XPC_JSOBJECT_HAS_NO_FUNCTION_NAMED
 ----------
Error: 'JavaScript component does not have a method named: "handleEvent"' when calling method: [nsIDOMEventListener::handleEvent] = NS_ERROR_XPC_JSOBJECT_HAS_NO_FUNCTION_NAMED
 ----------
Error: varvalue is undefined
Source file: chrome://nightly/content/nightly.js
Line: 165
 ----------
Error: this.windowToFocus.content is null
Source file: file:///C:/Program%20Files/SeaMonkey/components/nsSessionStore.js
Line: 2092
 ----------
No chrome package registered for chrome://browser/skin/browser.css
 ----------
Error: BookmarksEventHandler is not defined
Source file: chrome://weave/content/bookmark-menu-overlay.js
Line: 74
 ----------
Error: 'JavaScript component does not have a method named: "handleEvent"' when calling method: [nsIDOMEventListener::handleEvent] = NS_ERROR_XPC_JSOBJECT_HAS_NO_FUNCTION_NAMED
 ----------
Error: varvalue is undefined
Source file: chrome://nightly/content/nightly.js
Line: 165
 ----------
2009-04-02 08:41:58	Service.Util         WARN	Component @mozilla.org/privatebrowsing;1 requested, but doesn't exist on this platform.

 ----------
2009-04-02 08:42:02	Engine.Tabs          ERROR	Could not process incoming record: browserWindow.Browser is undefined (module:tabs.js:250 :: TypeError)

 ----------
2009-04-02 08:42:02	Engine.Tabs          ERROR	Could not process incoming record: browserWindow.Browser is undefined (module:tabs.js:250 :: TypeError)

 ----------
2009-04-02 08:42:02	Engine.Tabs          WARN	Sync failed

 ----------
2009-04-02 08:42:02	Service.Main         WARN	Some engines did not sync correctly

 ----------
Error: document is null
Source file: chrome://weave/content/preferences.js
Line: 78
 ----------
Error: document is null
Source file: chrome://weave/content/preferences.js
Line: 78
 ----------
Error: this._stringBundle.getString is not a function
Source file: chrome://weave/content/status.js
Line: 186
 ----------
Error: this._stringBundle.getString is not a function
Source file: chrome://weave/content/status.js
Line: 193
 ----------
Error: this._stringBundle.getString is not a function
Source file: chrome://weave/content/status.js
Line: 193
 ----------
Error: this._stringBundle.getString is not a function
Source file: chrome://weave/content/status.js
Line: 186
 ----------
Error: this._stringBundle.getString is not a function
Source file: chrome://weave/content/status.js
Line: 193
 ----------
Error: this._stringBundle.getString is not a function
Source file: chrome://weave/content/status.js
Line: 193
 ----------
Error: this._stringBundle.getString is not a function
Source file: chrome://weave/content/status.js
Line: 186
 ----------
Error: this._stringBundle.getString is not a function
Source file: chrome://weave/content/status.js
Line: 193
 ----------
Error: this._stringBundle.getString is not a function
Source file: chrome://weave/content/status.js
Line: 193
 ----------
Error: this._statusDialog.getButton is not a function
Source file: chrome://weave/content/status.js
Line: 128
 ----------
Error: document is null
Source file: chrome://weave/content/preferences.js
Line: 78
 ----------
Error: document is null
Source file: chrome://weave/content/preferences.js
Line: 78

----------------------------------------------------------
The error "Error: document is null
Source file: chrome://weave/content/preferences.js
Line: 78"
is 
  _onSync: function WeavePrefs__onSync(subject, data) {
----->document.getElementById("sync-syncnow-button").
      setAttribute("disabled", "false");
    document.getElementById("eraseserver-button").
      setAttribute("disabled", "false");
    this.onPaneLoad();
  },
so, it mean "document" is not exist during some timer-initiated event. 


But it synchronizes history and passwords. How it can be?
At least there's still some stuff to do for Varun and his Google Summer of Code project, if it's granted ;-)
Attachment #370268 - Flags: review?(thunder) → review+
Comment on attachment 370268 [details] [diff] [review]
SeaMonkey support r2 - in progress 

Looks fine so far.  But I haven't tested on seamonkey so I don't know what the patch might be lacking.
From the weave side it's fine.
As I said I don't know if you think the patch is ready for check-in.  If so please add the checkin-needed keyword.
Comment on attachment 370268 [details] [diff] [review]
SeaMonkey support r2 - in progress 

Kairo, I'd want to merge this into weave. Is it possible on your opinion?
Attachment #370268 - Flags: review+ → review?(kairo)
KaiRo is very busy, perhaps neil@httl would be a better reviewer?
(In reply to comment #25)
> (From update of attachment 370268 [details] [diff] [review])
> Kairo, I'd want to merge this into weave. Is it possible on your opinion?
FYI, there's an additional reviewer option to not overwrite r+.
(In reply to comment #26)
> KaiRo is very busy, perhaps neil@httl would be a better reviewer?
Maybe. I ask for KaiRo's review just because he submitted to this bug already. I just want an accept from "seamonkey people". 

I am newbee for bugzilla's dev usage, and not all workflow-related things are clean from the first try.

What should I enter as reviewer address in request, to get Neil's review? neil@httl?
You only need r+ from a seamonkey peer if you are making any changes to it (which the patches here do not do).
Keywords: checkin-needed
Then I ask for check-in.
Comment on attachment 370268 [details] [diff] [review]
SeaMonkey support r2 - in progress 

Carrying forward r+ from thunder@mozilla.com
Attachment #370268 - Flags: review?(kairo) → review+
Dan: I haven't tested this yet, but from all I know it's only a first step and e.g. doesn't include things like working bookmarks (that will need some more work as SeaMonkey is [still] using a different bookmarks system than places), and it's tested only by one person (Igor), so it's quite experimental support.
If you are OK with that, it would be nice to see this added to Weave code as a first step.

As I mentioned here before, we have a potential GSoC project for which varunsl has applied and which would be about making Weave fully working with SeaMonkey, which probably will need some cooperation with Dan as well as testing/input from Igor, if possible.
Yep, no problem on my end. I'll get this in the weave tree soon.
Bug 486810 fix support added.
check-in wanted.
Attachment #370268 - Attachment is obsolete: true
Attachment #372526 - Flags: review?(thunder)
> +      case "SeaMonkey":
> +        engines = ["Bookmarks", "Form", "History", "Password", "Tab"];
We don't yet use places based bookmarks. Not sure if "Bookmarks" should be included at this point. KaiRo?

> +        break;
> +
>        case "Thunderbird":
>          engines = ["Cookie", "Password"];

SeaMonkey shares the same back-end mailnews code with Thunderbird so I'd think we would also want "Cookie" what ever it is. Mnyromyr, your opinion?
Yes, removing bookmarks will be right until Seamonkey uses places bookmarks.
Cookies doesn't metter until cookies engine will not work for firefox — if it will work at all.
For the moment, we should only enable those engines that work (with SeaMonkey), everything else should be disabled for now and can be added with further work on this.
Comment on attachment 372526 [details] [diff] [review]
R3 - corrected to work after Bug 486810 fix.

r=Mardak

I've cleaned up the style and removed Bookmarks/Tab engines for now.
Attachment #372526 - Flags: review?(thunder) → review+
http://hg.mozilla.org/labs/weave/rev/08161da765e7

Add seamonkey bits for manifest/install. Start with Form, History, Password engines.. No places bookmarks and tabs seem to have issues applying(?)
Status: NEW → RESOLVED
Closed: 15 years ago
Depends on: 486810
Keywords: checkin-needed
Resolution: --- → FIXED
Target Milestone: Future → 0.4
Blocks: 488294
(In reply to comment #39)
> http://hg.mozilla.org/labs/weave/rev/08161da765e7
> 
> Add seamonkey bits for manifest/install. Start with Form, History, Password
> engines.. No places bookmarks and tabs seem to have issues applying(?)

Thanks. And yes, tabs might have problems, as tabbrowser implementation differ somewhat between Firefox and SeaMonkey, another area to work on in followups :)
Component: Weave → General
Product: Mozilla Labs → Weave
Version: Trunk → unspecified
QA Contact: weave → general
Blocks: 499001
Attached patch patch I tryingSplinter Review
It broken from the drop out about:weave page.

I return similar with previous, but menu does nothing, and properties page not adds to properties window.

Previously tuned sync works.

Tools menu contains "weave" menu with submenus, statusbar contain weave icon, and statusbar icon shows status during update.

Mouse click on status bar weave icon and choosing of any tools->weave submenu produces at js console:

Error: gWeaveWin is undefined
Source file: chrome://navigator/content/navigator.xul
Line: 1

What I am missing?
Status: RESOLVED → REOPENED
Resolution: FIXED → ---
As a note, usually it's better to open a new bug if an issue reappears due to different reasons, so that tracking of versions, etc. is not disturbed - after all, this is a new bug due to new changes.
Should I open new bug now, or it's only "for the future issues"?
(In reply to comment #43)
> Should I open new bug now, or it's only "for the future issues"?

Probably depends on how Weave people like it, but I'd go for this for future bugs and leave this one here as you already have a patch up.
I filed bug 526521 for this problem yesterday. So either I can dupe it against this bug or we can use to solve the problem.
(In reply to comment #45)
> I filed bug 526521 for this problem yesterday. So either I can dupe it against
> this bug or we can use to solve the problem.

Probably best if we move it over there, then, and set this one here back to resolved.
Status: REOPENED → RESOLVED
Closed: 15 years ago15 years ago
Resolution: --- → FIXED
Depends on: 526521
No longer depends on: 486810
You need to log in before you can comment on or make changes to this bug.

Attachment

General

Creator:
Created:
Updated:
Size: