Factor out proxy properties from OpenIdServiceImpl

OAuth GitHub authentication method needs proxy properties as well.
Factor it out to ProxyProperties class and prepare it for reuse in
both places.

Change-Id: Id5c05472b1ab04abcf85d25c230c01c56ad542c8
InlineEdit: Add container to represent change edit

Change edits are created on top of patch sets and are virtual patch
sets that don't exist in the database. A max of one edit per user per
change is stored on ref:

  refs/users/UU/UUUU/edit-CCCC

for edit by user UUUU on top of patch set P of CCCC, where user account
is sharded in the same way as for refs/changes.  The parent of the edit
is SHA-1 of the patch set P it is based on.

Change-Id: I736f5b954ec539a453cf0500a7bd97547bb494d7
Fix undefined returned from JSNI method

Change-Id: Iba83ab4122415b537b6a8c67245c2a245b8afc96
InlineEdit: Add method to read edits

This method is supposed to be used from REST endpoints and from
acceptance tests.

Change-Id: I1114acc280cb5b8235bf941b963e04bbdf5870f9
Remove gwt.logging.popupHandler

This has been unsupported by upstream GWT[1].

[1] https://gwt-review.googlesource.com/7810

Change-Id: I37410f091bba916c240cc9e3fe9c9da9dc62dac6
Update Buck

This version contains a fix for a watchman/buckd integration issue[1]
producing incorrect builds.

Change-Id: I56cdc9f55f605849dcfd74a4c5359481e3c2c860
BanCommit: Don't eagerly flush inserter

The inserter is flushed later by NotesBranchUtil.commitNewNotes.

Change-Id: I874bcaa6455ee9d4e2173c0c6d475a70083bc333
Merge "Factor out proxy properties from OpenIdServiceImpl"
notedb: Support users with no name or email

Change-Id: I238d362e23f9f18f37d508433484ce020bc9b99a
CommentsInNotesUtil: Make a singleton

Change-Id: I3ebdc209dea8260f976f8e6e68c8da16be1d8a86
Remove imports of bare Id classes

Change-Id: I670ce718ec53bf82ce6ecd3631ec33cc0fbc1ea6
Remove unused imports

Change-Id: I00fa971c0076f1dab6fd5a5f3eb5c5c022eb2d80
CommitResource: Delegate to ProjectResource

Other child resources, such as RevisionResource, use delegation rather
than inheritance to refer to their parent collections. This allows us
to use more sensibly named methods; for example, it is not obvious
that what myCommitResource.getNameKey() is referring to is actually
the project name key.

Change-Id: I2aa58246afd22ef7bd0f437c6cfe7233b825f976
Add tests for ProjectControl#canReadCommit()

Change-Id: Idc4e0920ccf23f4f1bf2890d5253064d68f3f63d
Hoist allow method into AbstractDaemonTest

Change-Id: I4a53a272d8c6d96f5cf40f42f429e52615bd166f
Add acceptance test for VisibleRefFilter

Change-Id: Icafaeeb7d34a22aef638107e637626827cac033b
VisibleRefFilter: Fix short-circuiting when all refs visible

ProjectControl.allRefsVisibleExcept was confusingly named, and as a
result incorrectly used by VisibleRefFilter. The caller in
VisibleRefFilter was treating "except" as "check that the set of
visible refs is all refs, minus the refs in this set I'm passing."
However, the actual behavior was "check that the set of visible refs
is all refs, but ignore any permissions relating to refs in this set
I'm passing."

This means that VisibleRefFilter was erroneously removing
refs/meta/config from the result set in this fast path, even if
refs/meta/config was in fact visible. Fix this by double-checking
visibility of refs/meta/config before removing it.

Change-Id: I0b1af9a72b48548cb5be8e0af96dc05eb4b69dc1
ProjectIT: Grant user read permission before creating branch

In order to create a branch, the user either needs create permission,
or read permission to a branch containing the existing object (in this
case master).

Change-Id: Iaf3ff0301cb9e810d4759485b19af70d5fb863ea
SubmitOnPushIT: Grant push permission when pushing a tag

The intent of I4e580e2f is that this permission is required when
pushing new commits that do not exist on the server. Due to various
bugs in the current implementation of ReceiveCommits, that requirement
is not enforced in this case, but we want to be able to fix those
bugs.

Theoretically, it should be possible to inspect the rest of the
command set in order to determine whether the commits being pushed
here will still be "new" after the rest of the push is processed. But
doing that in a consistent and predictable way is more effort than
it's worth. For the scenario exercised in this specific test, even if
the user cannot be granted push permission, they can use the simple
workaround of pushing once to submit and again to create the tag.

Change-Id: I2b1f2baa825e16049ab6f9c66c9a53be2a1001c1
Reset RevWalk before calling refControl.canCreate()

The internals of IncludedInResolver reuse the existing RevWalk but
carry the UNINTERESTING flag. Within CreateBranch in particular, this
flag may already be set on some commits.

Document this restriction on canCreate.

Change-Id: I5ec75a2bdd079edb5aa21bca3bd3dc33e5c3a0f9