summaryrefslogtreecommitdiffstats
path: root/sync/util
Commit message (Collapse)AuthorAgeFilesLines
* [Sync] Implement keystore migration support.zea@chromium.org2012-09-133-94/+167
| | | | | | | | | | | | | | | | | | | | | | | We'll now trigger migration if the keystore key is available, the cryptographer is ready, and the nigori node isn't already properly migrated. Note that this means we won't trigger migration without at least the implicit gaia password already available to the cryptographer, in order to support backwards compatibility with older clients. Eventually that will change. In addition, once a nigori node has been migrated, any client that supports keystore encryption will follow the new encryption constraints, whether or not the --sync-keystore-encryption flag is passed. This means that if the user sets a custom passphrase, encrypt everything will also be enabled (and vice versa). Migration-aware conflict resolution is not implemented yet. BUG=129665 Review URL: https://chromiumcodereview.appspot.com/10916036 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@156646 0039d316-1c4b-4281-b951-d872f2087c98
* [Sync] Move keystore key handling to SyncEncryptionHandlerImplzea@chromium.org2012-08-293-121/+39
| | | | | | | | | | | | The cryptographer has no notion of keystore keys, and we now persist the keystore key by reusing the OnBoostrapTokenUpdated method (which now takes an enum as an extra param specifying the type of token). BUG=129665 Review URL: https://chromiumcodereview.appspot.com/10878015 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@154007 0039d316-1c4b-4281-b951-d872f2087c98
* [Sync] Refactor GetEncryptedTypes usage.zea@chromium.org2012-08-242-46/+2
| | | | | | | | | | | | | | | | | | | | | | | | The cryptographer is now owned by the SyncEncryptionHandlerImpl, and no longer needs any connection to the nigori handler or encrypted types. Those are accessed via the directory, which now has a GetNigoriHandler method. Because of this, we can now clean up the thread safety guarantees in the sync encryption handler impl, enforcing that everything except GetEncryptedTypes (and IsUsingExplicitPassphrase, which will be fixed in a followup patch) are invoked on the syncer thread. This lets us not have to open unnecessary transactions. At the chrome layer, encrypted types are accessed via BaseTransaction:: GetEncryptedTypes(). At the syncer layer, they're accessed via directory:: GetNigoriHandler()->GetEncryptedTypes(BaseTransaction* trans const). BUG=142476,139848 Review URL: https://chromiumcodereview.appspot.com/10844005 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@153335 0039d316-1c4b-4281-b951-d872f2087c98
* Prefix match CHROMEOS_RELEASE_BOARD for checking chromebox.kochi@chromium.org2012-08-161-3/+5
| | | | | | | | | | | | | | It used to conatin only "stumpy", but recently official image contains some suffix, and looks like "stumpy-signed-mp-v2keys". That change caused regression, and this should fix it. BUG=chromium:126732 TEST=Open some tabs on stumpy and sync, then on the other machine you should see "Chromebox" instead of "Chromebook" in "ohter devices" menu in new tab page. Review URL: https://chromiumcodereview.appspot.com/10836257 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@151839 0039d316-1c4b-4281-b951-d872f2087c98
* [Sync] Add SyncEncryptionHandlerzea@chromium.org2012-08-164-411/+67
| | | | | | | | | | | | | | | | | | All sync-specific encryption state (types, encrypt everything, explicit passphrase, keys) is now tracked within the new class SyncEncryptionHandler. It's owned by the sync manager, and unifies some of the observer logic we previously had. In addition, it's capable of creating its own transactions, taking us a step closer to have a nigori datatype. In addition, we add a NigoriHandler to abstract the chrome-side of encryption from the sync visible side of encryption. BUG=139848 Review URL: https://chromiumcodereview.appspot.com/10827266 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@151833 0039d316-1c4b-4281-b951-d872f2087c98
* Try to fix a crash in the new sync machine codethakis@chromium.org2012-08-021-3/+26
| | | | | | | | | | | | This adds back the fallback code that was deleted after the 10.6 migration in https://chromiumcodereview.appspot.com/10807052, it's necessary again. BUG=140256,138570 Review URL: https://chromiumcodereview.appspot.com/10824151 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@149715 0039d316-1c4b-4281-b951-d872f2087c98
* Added crypto random-number generatormniknami@chromium.org2012-08-021-11/+3
| | | | | | | | | | | Added a cryptographic random-number generator to crypto/. Modified sync to use this function instead. May also be used by Cloud Print in the future. Review URL: https://chromiumcodereview.appspot.com/10698177 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@149689 0039d316-1c4b-4281-b951-d872f2087c98
* mac: Don't use |NSHost currentHost|, as it takes 4s per testthakis@chromium.org2012-08-021-9/+8
| | | | | | | | | | | Also see http://codereview.chromium.org/7000022 BUG=81634,138570 Review URL: https://chromiumcodereview.appspot.com/10827126 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@149543 0039d316-1c4b-4281-b951-d872f2087c98
* [Sync] Persist keystore key across restartszea@chromium.org2012-08-014-18/+83
| | | | | | | | | | | | | | | | Adds the preference for the bootstrap token and the bootstrapping functionality in the cryptographer so that we persist the keystore key across restarts. With this, we should only ever do one GetKey per client, and only on the first time that client signs in/restarts on a version with GetKey support (although it's not persisted across signouts/profile nukes) BUG=129665 TEST=unit_tests Review URL: https://chromiumcodereview.appspot.com/10540149 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@149344 0039d316-1c4b-4281-b951-d872f2087c98
* [Sync] Add support for performing a GetKey on startup.zea@chromium.org2012-07-313-1/+32
| | | | | | | | | | | | | | | | | The functionality is behind the --sync-keystore-encryption flag, and the key is not currently consumed by anything, but this lays the groundwork for testing the server and client interaction. We request a key anytime we perform a GetUpdates while the cryptographer does not have a keystore key. But, it is considered an error to request a key and not receive one, putting us into a state of backoff. BUG=129665 TEST=sync_unit_tests, running against python server Review URL: https://chromiumcodereview.appspot.com/10455012 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@149248 0039d316-1c4b-4281-b951-d872f2087c98
* Tidy up Android's is-tablet functionality.benm@chromium.org2012-07-242-8/+0
| | | | | | | | | | | | | | | | Remove the code in sync/ that checks if the device is a tablet and perform the check in the chrome/ layer based upon a command line switch. Additionally, rather than looking for a tablet when (not) setting the Mobile specific user agent, look for --use-mobile-user-agent. The embedder should set these command line switches as appropriate, so remove the code that used to set them in the generic process startup. Review URL: https://chromiumcodereview.appspot.com/10808052 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@148091 0039d316-1c4b-4281-b951-d872f2087c98
* mac: Remove code that was only needed on 10.5thakis@chromium.org2012-07-201-25/+1
| | | | | | | | | BUG=137676 TEST=none Review URL: https://chromiumcodereview.appspot.com/10807052 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@147738 0039d316-1c4b-4281-b951-d872f2087c98
* [Sync] Remove unneeded 'using syncer::' lines and 'syncer::' scopingsakalin@chromium.org2012-07-206-91/+82
| | | | | | | | | | | | | | | | | Since (almost) everything in sync/ is now in the 'syncer' namespace, all of these are redundant. Clean up indentation. Put sync_{client,listen_notifications} into syncer namespace. BUG=128060 TEST= Review URL: https://chromiumcodereview.appspot.com/10795018 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@147675 0039d316-1c4b-4281-b951-d872f2087c98
* Remove #pragma once from syncajwong@chromium.org2012-07-1113-13/+0
| | | | | | Review URL: https://chromiumcodereview.appspot.com/10700154 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@146074 0039d316-1c4b-4281-b951-d872f2087c98
* [Sync] Move ModelType and related classes to 'syncer' namespaceakalin@chromium.org2012-07-035-87/+85
| | | | | | | | | | | | | | Previously they were in 'syncer::syncable'. Also remove aliases to those classes from 'syncable'. BUG=128060 TEST= TBR=pkasting@chromium.org,jhawkins@chromium.org, Review URL: https://chromiumcodereview.appspot.com/10696087 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@145399 0039d316-1c4b-4281-b951-d872f2087c98
* [Sync] Move model_type* from syncable/ to base/akalin@chromium.org2012-07-034-4/+4
| | | | | | | | | | | | | | | | | | | Also move enum_set* to base/. This is the first step in moving ModelType et al. to the syncer namespace (from syncer::syncable). Move PurgeStalePayload() back to sync_session.cc. Move ModelTypePayloadMapFromRoutingInfo() to model_safe_worker.* and rename it to ModelSafeRoutingInfoToPayloadMap(). BUG=128060 TEST= Review URL: https://chromiumcodereview.appspot.com/10690071 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@145236 0039d316-1c4b-4281-b951-d872f2087c98
* [Sync] Rename csync namespace to syncerakalin@chromium.org2012-06-2825-51/+51
| | | | | | | | | | | | | | | Everyone was confused by 'csync'. 'syncer' seems more understandable. (Note that we can't use the 'sync' namespace since sync() is a function from unistd.h.) BUG=10662035 TEST= TBR=jhawkins@chromium.org,pkasting@chromium.org Review URL: https://chromiumcodereview.appspot.com/10698014 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@144820 0039d316-1c4b-4281-b951-d872f2087c98
* [Sync] Rename browser_sync to csync in sync/akalin@chromium.org2012-06-2125-51/+51
| | | | | | | | | | | | | | | Update all references from chrome. Leave possibly-extraneous csync:: qualifications in sync/ for now. (This will be cleaned up once everything in sync/ is in csync::.) BUG=128060 TEST= TBR=jhawkins@chromium.org Review URL: https://chromiumcodereview.appspot.com/10600002 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@143449 0039d316-1c4b-4281-b951-d872f2087c98
* sync: move internal_api components used by chrome/browser into ↵tim@chromium.org2012-06-1712-1416/+2
| | | | | | | | | | | | | | internal_api/public TBR=jhawkins@chromium.org BUG=131130 TEST= Review URL: https://chromiumcodereview.appspot.com/10534080 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@142626 0039d316-1c4b-4281-b951-d872f2087c98
* sync: create internal_api/public to house sync/ files needed by ↵tim@chromium.org2012-06-079-571/+7
| | | | | | | | | | | | | | | | | chrome/browser/sync. Note on sync.gyp changes and .cc file moves: most files in /public have .h and their .cc side by side, as they are simple implementations. In some cases like model_type.cc (and others in a follow up patch, like sync_manager.cc) have only their header exposed in /public while the impl stays behind, because it needs to include things from within sync/, and /public has a strict include DEPS policy. This is in accordance with other /public folders (like content/). Cleans up DEPS files in sync + c/b/sync. Adds sync/{engine, sessions, syncable} to public/. There is more to come (moving things in internal_api/ into public). Not touching /notifier as that is in flux at the moment. BUG=131130 TEST= Review URL: https://chromiumcodereview.appspot.com/10532019 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@141038 0039d316-1c4b-4281-b951-d872f2087c98
* [Sync] Cleanup all tab sync enabling logic now that its on by default.zea@chromium.org2012-05-301-6/+2
| | | | | | | | | | BUG=none TEST= Review URL: https://chromiumcodereview.appspot.com/10443046 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@139462 0039d316-1c4b-4281-b951-d872f2087c98
* [Sync] Fix sync_listen_notifications to use a real host resolverakalin@chromium.org2012-05-251-0/+4
| | | | | | | | | | | | | | | r138413 switched TestURLRequestContext to use a mock HostResolver by default. Clean up sync DEPS a bit. BUG= TEST= Review URL: https://chromiumcodereview.appspot.com/10435007 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@138947 0039d316-1c4b-4281-b951-d872f2087c98
* Disable failing test ImmutableTest.Deque on Windowsbattre@chromium.org2012-05-231-1/+7
| | | | | | | | | | BUG=129128 TEST=no TBR=akalin@chromium.org Review URL: https://chromiumcodereview.appspot.com/10388250 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@138468 0039d316-1c4b-4281-b951-d872f2087c98
* Add session name for Chromebox.kochi@chromium.org2012-05-101-2/+13
| | | | | | | | | | | | | For testing, on stumpy open some tabs and sync, then on the other device click on NTP "other devices" link and see if "chromebox" appears. BUG=chromium:124916 TEST=manual Review URL: https://chromiumcodereview.appspot.com/10382034 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@136230 0039d316-1c4b-4281-b951-d872f2087c98
* [Sync] Add support for automatic enabling of syncing tab favicons.zea@chromium.org2012-04-271-0/+32
| | | | | | | | | | | | | | | We add the sync_tab_favicons field to the nigori node and add support for automatically enabling the feature when we receive a new nigori node. Once we do enable the feature, the browser will only start writing favicons after the next restart. BUG=92728 TEST=using python testserver to enable sync tab favicons, then restarting. Review URL: http://codereview.chromium.org/10235013 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@134184 0039d316-1c4b-4281-b951-d872f2087c98
* Add base::HostToNetXX() & NetToHostXX(), and use them to replace htonX() & ↵wez@chromium.org2012-03-281-3/+3
| | | | | | | | | | | | | | ntohX() in Chrome. This primarily addresses issues with code using the OS-provided htonX() & ntohX() functions from within the Chrome sandbox. Under Windows these functions are provided by ws2_32.dll, which is no longer available within Chrome's sandbox. The new base::HostToNetXX() and NetToHostXX() functions are safe for use by sandboxed code on Windows, and provide a single place where future fixes for other platforms can be made. BUG=117252 Review URL: http://codereview.chromium.org/9716020 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@129476 0039d316-1c4b-4281-b951-d872f2087c98
* [Sync] Clean up sync.gypakalin@chromium.org2012-03-282-1/+5
| | | | | | | | | | | | | | | | Only export dependent settings when necessary. Forward-declare crypto classes to avoid including crypto headers in sync headers (and thus neccessitating exporting crypto settings to dependents). BUG=117585 TEST= Review URL: http://codereview.chromium.org/9701094 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@129449 0039d316-1c4b-4281-b951-d872f2087c98
* [Sync] Improve nigori conflict and rollback handling.zea@chromium.org2012-03-232-22/+34
| | | | | | | | | | | | | | | | We now ensure we don't change to an old default key when we receive a nigori update. We also preserve the local explicit passphrase state if we get into conflict with a nigori node with old encryption keys. Lastly, we write to the node at the end of each sync cycle toensure it has the current encrypted types and encryption keys (assuming the cryptographer is ready). This way, we'll never lose the current encryption state due to a blank/old nigori. BUG=119207 TEST= Review URL: https://chromiumcodereview.appspot.com/9815018 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@128567 0039d316-1c4b-4281-b951-d872f2087c98
* Continue implementing session sync for Android.yfriedman@chromium.org2012-03-213-0/+106
| | | | | | | | | | | | | | | | | | Adds utilities to get the device name and model type. IsTablet is stubbed due to additional Java deps. Note that if we actually ran unit_tests for Android they'd crash with this change since it depends on the Android framework and we don't have apk-based tests yet, but this happily compiles and links and sync_unit_tests still runs and passes. BUG= TEST= Review URL: http://codereview.chromium.org/9704060 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@128010 0039d316-1c4b-4281-b951-d872f2087c98
* [Sync] Move 'sync' target to sync/akalin@chromium.org2012-03-1542-0/+4362
Also move related test files. Move WriteNode::UpdateEntryWithEncryption to nigori_util.h. Clean up defines and dependencies. In particular, get rid of SYNC_ENGINE_VERSION_STRING and hard-code the string in the single place it's used. Rename data_encryption.* to data_encryption_win.* and add a pragma for crypt32.lib. Clean up exit-time constructor warnings in sync{able,er}_unittest.cc. Remove some unused files. BUG=117585 TEST= TBR=jhawkins@chromium.org Review URL: https://chromiumcodereview.appspot.com/9699057 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@126872 0039d316-1c4b-4281-b951-d872f2087c98