This commit introduces a Rust XPCOM component, `mozISyncedBookmarksMerger`, that wraps the Dogear crate for merging and applying synced bookmarks. How this works: `SyncedBookmarksMirror.jsm` manages opening the connection, initializing the schema, and writing incoming items into the mirror database. The new `mozISyncedBookmarksMerger` holds a handle to the same connection. When JS code calls `mozISyncedBookmarksMerger::apply`, the merger builds local and remote trees, produces a merged tree, applies the tree back to Places, and stages outgoing items for upload in a temp table, all on the storage thread. It then calls back in to JS, which inflates Sync records for outgoing items, notifies Places observers, and cleans up. Since Dogear has a more robust merging algorithm that attempts to fix up invalid trees, `test_bookmark_corruption.js` intentionally fails. This is fixed in the next commit, which changes the merger to handle invalid structure. Differential Revision: https://phabricator.services.mozilla.com/D20076
51 lines
1.7 KiB
Python
51 lines
1.7 KiB
Python
# -*- Mode: python; c-basic-offset: 4; indent-tabs-mode: nil; tab-width: 40 -*-
|
|
# vim: set filetype=python:
|
|
# This Source Code Form is subject to the terms of the Mozilla Public
|
|
# License, v. 2.0. If a copy of the MPL was not distributed with this
|
|
# file, You can obtain one at http://mozilla.org/MPL/2.0/.
|
|
|
|
gkrust_features = ['servo', 'bindgen']
|
|
|
|
if CONFIG['MOZ_DEBUG']:
|
|
gkrust_features += ['gecko_debug']
|
|
|
|
if CONFIG['MOZ_BUILD_WEBRENDER']:
|
|
gkrust_features += ['quantum_render']
|
|
|
|
if CONFIG['MOZ_PULSEAUDIO']:
|
|
gkrust_features += ['cubeb_pulse_rust']
|
|
|
|
if CONFIG['MOZ_RUST_SIMD']:
|
|
gkrust_features += ['simd-accel']
|
|
|
|
# This feature is not yet supported on all platforms, and this check needs to
|
|
# match MOZ_CUBEB_REMOTING in CubebUtils.cpp.
|
|
if (CONFIG['OS_ARCH'] == 'Linux' and CONFIG['OS_TARGET'] != 'Android') or CONFIG['OS_ARCH'] == 'Darwin' or (CONFIG['OS_ARCH'] == 'WINNT' and CONFIG['CPU_ARCH'] != 'aarch64'):
|
|
gkrust_features += ['cubeb-remoting']
|
|
|
|
if CONFIG['MOZ_MEMORY']:
|
|
gkrust_features += ['moz_memory']
|
|
|
|
if CONFIG['MOZ_PLACES']:
|
|
gkrust_features += ['moz_places']
|
|
|
|
if CONFIG['ENABLE_WASM_CRANELIFT']:
|
|
gkrust_features += ['spidermonkey_rust']
|
|
if CONFIG['JS_CODEGEN_X86'] or CONFIG['JS_CODEGEN_X64']:
|
|
gkrust_features += ['cranelift_x86']
|
|
elif CONFIG['JS_CODEGEN_ARM']:
|
|
gkrust_features += ['cranelift_arm32']
|
|
elif CONFIG['JS_CODEGEN_ARM64']:
|
|
gkrust_features += ['cranelift_arm64']
|
|
else:
|
|
gkrust_features += ['cranelift_none']
|
|
|
|
if CONFIG['MOZ_GECKO_PROFILER']:
|
|
gkrust_features += ['gecko_profiler']
|
|
|
|
if CONFIG['MOZ_GECKO_PROFILER_PARSE_ELF']:
|
|
gkrust_features += ['gecko_profiler_parse_elf']
|
|
|
|
if CONFIG['MOZ_BITS_DOWNLOAD']:
|
|
gkrust_features += ['bitsdownload']
|