Overview- Located in about:sync (or chrome://sync-internals)
- Inspired by chrome://net-internals
- Tabs:
- About tab: "Classic" about:sync page, concise status overview
- Data tab: dump debugging data to text for copy & paste
- Notifications tab: Keeps track of incoming sync notifications
- Events tab: logs for sync-related events
- Sync Node Browser tab: browse all synced data
About tab- "Classic" about:sync page
- Updates on the fly
- Try moving a bookmark, or stopping and starting sync
- Some stuff will eventually be moved out, but page is still useful as an overview
Data tab- Dump to text button
- Dumps all info from about, notifications, and events tab
- Once M11 goes stable, can tell users to:
- Open about:sync
- Repro the problem if possible
- Wait a while (15-30 seconds)
- Go to data tab
- Dump info, paste into bug (or email privately if there's sensitive info)
- Event log will probably be most useful part
- Room for improvement
- Redact sensitive info
- Automatically highlight dumped text, add "Copy to clipboard" button
- Button to add to an existing bug, or create a new one
Notifications tab- If a notification is received when the page (not just the tab) is open, a counter will increment (one for each data type)
- Try moving a bookmark, setting a preference, or stopping and starting sync
- Takes ~5-10 seconds for a notification to bounce back
- Counters reset if you reload
- Room for improvement
- More detailed connection stats
- How long has connection been up? Which XMPP server/port? How long ago was the last message sent/received?
Events tab- Shows all sync events (i.e., functions in SyncManager::Observer and incoming notifications) that happen as long as the page is open
- Try moving a bookmark, or starting sync (dumps lots of data!)
- Doesn't quite log everything yet
- Only logs events after backend is initialized
- Resets if you reload
- Room for improvement
- Store last N events (C++ side) so you can open it right when you hit a problem and still get some useful info
- Also log requests/responses to HTTP server
- Perhaps more logging for sync setup events
- Better display (82866)
- Start logging even before backend is initialized (tricky)
Sync node browser tab- Shows sync nodes
- One at a time if M11, tree view if canary/ToT
- M11 version
- Sync nodes are structured in a tree.
- Each data type has a top-level node which is a child of the root node
- Bookmark top-level node is named "Google Chrome" for historical reasons
- Only bookmarks sub-tree has true tree structure
- Everything else is just a list under the top-level node
- Use links to navigate tree: parent, first child, predecessor, successor
- Ignore specifics information for folder
- Tree view version
- Tree visualized on the left, details of selected node on the right
- Does not auto-update; you need to refresh
- Be careful, you may lose logged events; you can always open a new about:sync tab instead
- Room for improvement
- CSS/JS tweaks to make tree view nicer
- Overflow behavior, scrolling behavior
- Implement auto-updating (hard)
- Add a refresh button (easier)
- Search (id/client tag/full-text)
- Cut down on the large number of displayed empty fields (empty strings, etc.) (see autofill nodes)
Network-level debugging- Sync talks to the sync server via POSTing to clients4.google.com.
- Sync talks to the notification servers via XMPP (talk.google.com).
- Both sockets should show up in chrome://net-internals (after 82365 is fixed).
Room for improvement- Data type-specific tabs
- Model associators / change processors have access to the ProfileSyncService, so shouldn't be too hard to emit events or reply to calls
- Probably easier for things that live on the UI thread
- Some way to capture VLOG() events
- Should be obvious when sync isn't working
- Use HTML notifications for events
- Front-end for memory usage info (Lingesh is working on backend)
|
|