Merge "Revert "Cross-host support.""
diff --git a/src/main/java/com/googlesource/gerrit/plugins/automerger/ApiManager.java b/src/main/java/com/googlesource/gerrit/plugins/automerger/ApiManager.java
deleted file mode 100644
index 8a44a07..0000000
--- a/src/main/java/com/googlesource/gerrit/plugins/automerger/ApiManager.java
+++ /dev/null
@@ -1,37 +0,0 @@
-// Copyright (C) 2018 The Android Open Source Project
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package com.googlesource.gerrit.plugins.automerger;
-
-import com.google.gerrit.extensions.api.GerritApi;
-import com.google.inject.Inject;
-
-/** Interface for sending REST API requests to another Gerrit host. */
-public interface ApiManager {
-  public GerritApi forHostname(String hostname);
-
-  class DefaultApiManager implements ApiManager {
-    protected GerritApi gApi;
-
-    @Inject
-    public DefaultApiManager(GerritApi gApi) {
-      this.gApi = gApi;
-    }
-
-    @Override
-    public GerritApi forHostname(String hostname) {
-      return gApi;
-    }
-  }
-}
diff --git a/src/main/java/com/googlesource/gerrit/plugins/automerger/AutomergeChangeAction.java b/src/main/java/com/googlesource/gerrit/plugins/automerger/AutomergeChangeAction.java
index 09a5b7d..92d8176 100644
--- a/src/main/java/com/googlesource/gerrit/plugins/automerger/AutomergeChangeAction.java
+++ b/src/main/java/com/googlesource/gerrit/plugins/automerger/AutomergeChangeAction.java
@@ -83,10 +83,6 @@
     mdsMergeInput.obsoleteRevision = revision;
     mdsMergeInput.currentRevision = revision;
 
-    String changeBranch = change.getDest().get();
-    mdsMergeInput.fromCrossHostMap = config.getFromCrossHostMap(changeBranch, branchMap.keySet());
-    mdsMergeInput.toCrossHostMap = config.getToCrossHostMap(changeBranch, branchMap.keySet());
-
     log.debug("Multiple downstream merge input: {}", mdsMergeInput.dsBranchMap);
 
     try {
diff --git a/src/main/java/com/googlesource/gerrit/plugins/automerger/AutomergerModule.java b/src/main/java/com/googlesource/gerrit/plugins/automerger/AutomergerModule.java
index 227b22c..b588a2f 100644
--- a/src/main/java/com/googlesource/gerrit/plugins/automerger/AutomergerModule.java
+++ b/src/main/java/com/googlesource/gerrit/plugins/automerger/AutomergerModule.java
@@ -50,6 +50,5 @@
           }
         });
     DynamicSet.bind(binder(), WebUiPlugin.class).toInstance(new JavaScriptPlugin("automerger.js"));
-    bind(ApiManager.class).to(ApiManager.DefaultApiManager.class);
   }
 }
diff --git a/src/main/java/com/googlesource/gerrit/plugins/automerger/ConfigLoader.java b/src/main/java/com/googlesource/gerrit/plugins/automerger/ConfigLoader.java
index 26d26b3..2ecb88b 100644
--- a/src/main/java/com/googlesource/gerrit/plugins/automerger/ConfigLoader.java
+++ b/src/main/java/com/googlesource/gerrit/plugins/automerger/ConfigLoader.java
@@ -33,10 +33,8 @@
 import com.google.re2j.Pattern;
 import java.io.IOException;
 import java.util.Arrays;
-import java.util.HashMap;
 import java.util.HashSet;
 import java.util.List;
-import java.util.Map;
 import java.util.Set;
 import org.eclipse.jgit.errors.ConfigInvalidException;
 import org.eclipse.jgit.lib.Config;
@@ -115,42 +113,6 @@
     return false;
   }
 
-  // Returns cross host URL if specified, null if not
-  public String getFromCrossHost(String fromBranch, String toBranch) throws ConfigInvalidException {
-    return getConfig()
-        .getString("automerger", fromBranch + BRANCH_DELIMITER + toBranch, "fromCrossHost");
-  }
-
-  public Map<String, String> getFromCrossHostMap(String fromBranch, Set<String> branches)
-      throws ConfigInvalidException {
-    Map<String, String> fromCrossHostMap = new HashMap<>();
-    for (String branch : branches) {
-      String fromCrossHost = getFromCrossHost(fromBranch, branch);
-      if (fromCrossHost != null) {
-        fromCrossHostMap.put(fromBranch, fromCrossHost);
-      }
-    }
-    return fromCrossHostMap;
-  }
-
-  // Returns cross host URL if specified, null if not
-  public String getToCrossHost(String fromBranch, String toBranch) throws ConfigInvalidException {
-    return getConfig()
-        .getString("automerger", fromBranch + BRANCH_DELIMITER + toBranch, "toCrossHost");
-  }
-
-  public Map<String, String> getToCrossHostMap(String toBranch, Set<String> branches)
-      throws ConfigInvalidException {
-    Map<String, String> toCrossHostMap = new HashMap<>();
-    for (String branch : branches) {
-      String toCrossHost = getToCrossHost(branch, toBranch);
-      if (toCrossHost != null) {
-        toCrossHostMap.put(branch, toCrossHost);
-      }
-    }
-    return toCrossHostMap;
-  }
-
   private Pattern getConfigPattern(String key) throws ConfigInvalidException {
     String[] patternList = getConfig().getStringList("global", null, key);
     Set<String> mergeStrings = new HashSet<>(Arrays.asList(patternList));
diff --git a/src/main/java/com/googlesource/gerrit/plugins/automerger/DownstreamCreator.java b/src/main/java/com/googlesource/gerrit/plugins/automerger/DownstreamCreator.java
index 7884411..7de0782 100644
--- a/src/main/java/com/googlesource/gerrit/plugins/automerger/DownstreamCreator.java
+++ b/src/main/java/com/googlesource/gerrit/plugins/automerger/DownstreamCreator.java
@@ -78,7 +78,6 @@
   private static final String CURRENT = "current";
 
   protected GerritApi gApi;
-  protected ApiManager apiManager;
   protected ConfigLoader config;
   protected CurrentUser user;
 
@@ -86,12 +85,8 @@
 
   @Inject
   public DownstreamCreator(
-      GerritApi gApi,
-      ApiManager apiManager,
-      ConfigLoader config,
-      OneOffRequestContext oneOffRequestContext) {
+      GerritApi gApi, ConfigLoader config, OneOffRequestContext oneOffRequestContext) {
     this.gApi = gApi;
-    this.apiManager = apiManager;
     this.config = config;
     this.oneOffRequestContext = oneOffRequestContext;
   }
@@ -164,12 +159,11 @@
       } else {
         for (String downstreamBranch : downstreamBranches) {
           try {
-            String toCrossHost = config.getToCrossHost(change.branch, downstreamBranch);
             List<Integer> existingDownstream =
-                getExistingMergesOnBranch(revision, oldTopic, downstreamBranch, toCrossHost);
+                getExistingMergesOnBranch(revision, oldTopic, downstreamBranch);
             for (Integer changeNumber : existingDownstream) {
               log.debug("Setting topic {} on {}", change.topic, changeNumber);
-              apiManager.forHostname(toCrossHost).changes().id(changeNumber).topic(change.topic);
+              gApi.changes().id(changeNumber).topic(change.topic);
             }
           } catch (RestApiException | InvalidQueryParameterException e) {
             log.error("Failed to edit downstream topics of {}", change.id, e);
@@ -214,16 +208,11 @@
 
       for (String downstreamBranch : downstreamBranches) {
         try {
-          String toCrossHost = config.getToCrossHost(change.branch, downstreamBranch);
           List<Integer> existingDownstream =
-              getExistingMergesOnBranch(revision, change.topic, downstreamBranch, toCrossHost);
+              getExistingMergesOnBranch(revision, change.topic, downstreamBranch);
           for (Integer changeNumber : existingDownstream) {
             ChangeInfo downstreamChange =
-                apiManager
-                    .forHostname(toCrossHost)
-                    .changes()
-                    .id(changeNumber)
-                    .get(EnumSet.of(ListChangesOption.CURRENT_REVISION));
+                gApi.changes().id(changeNumber).get(EnumSet.of(ListChangesOption.CURRENT_REVISION));
             for (Map.Entry<String, LabelInfo> labelEntry : labels.entrySet()) {
               if (labelEntry.getValue().all.size() > 0) {
                 OptionalInt maxVote =
@@ -236,11 +225,7 @@
                         .max();
 
                 if (maxVote.isPresent()) {
-                  updateVote(
-                      downstreamChange,
-                      labelEntry.getKey(),
-                      (short) maxVote.getAsInt(),
-                      toCrossHost);
+                  updateVote(downstreamChange, labelEntry.getKey(), (short) maxVote.getAsInt());
                 }
               }
             }
@@ -330,27 +315,13 @@
 
       // Make the vote on the original change
       ChangeInfo originalChange =
-          getOriginalChange(
-              mdsMergeInput.changeNumber,
-              mdsMergeInput.currentRevision,
-              mdsMergeInput.sourceBranch,
-              null);
+          getOriginalChange(mdsMergeInput.changeNumber, mdsMergeInput.currentRevision);
       // if this fails, i.e. -2 is restricted, catch it and still post message without a vote.
       try {
-        apiManager
-            .forHostname(mdsMergeInput.fromCrossHostMap.get(originalChange.branch))
-            .changes()
-            .id(originalChange._number)
-            .revision(CURRENT)
-            .review(reviewInput);
+        gApi.changes().id(originalChange._number).revision(CURRENT).review(reviewInput);
       } catch (AuthException e) {
         reviewInput.labels = null;
-        apiManager
-            .forHostname(mdsMergeInput.fromCrossHostMap.get(originalChange.branch))
-            .changes()
-            .id(originalChange._number)
-            .revision(CURRENT)
-            .review(reviewInput);
+        gApi.changes().id(originalChange._number).revision(CURRENT).review(reviewInput);
       }
     }
   }
@@ -377,14 +348,10 @@
         // If there are existing downstream merges, update them
         // Otherwise, create them.
         boolean createDownstreams = true;
-        String toCrossHost = config.getToCrossHost(mdsMergeInput.sourceBranch, downstreamBranch);
         if (mdsMergeInput.obsoleteRevision != null) {
           existingDownstream =
               getExistingMergesOnBranch(
-                  mdsMergeInput.obsoleteRevision,
-                  mdsMergeInput.topic,
-                  downstreamBranch,
-                  toCrossHost);
+                  mdsMergeInput.obsoleteRevision, mdsMergeInput.topic, downstreamBranch);
           if (!existingDownstream.isEmpty()) {
             log.debug(
                 "Attempting to update downstream merge of {} on branch {}",
@@ -394,26 +361,19 @@
             // it's possible to construct it so that it's not
             for (Integer dsChangeNumber : existingDownstream) {
               try {
-                log.info("mds merge input: {}", mdsMergeInput);
-                log.info("mds merge input crosshmap: {}", mdsMergeInput.toCrossHostMap);
-                log.info(
-                    "mds merge input crosshmap: {}",
-                    mdsMergeInput.toCrossHostMap.get(downstreamBranch));
                 updateDownstreamMerge(
                     mdsMergeInput.currentRevision,
                     mdsMergeInput.subject,
                     dsChangeNumber,
                     mdsMergeInput.dsBranchMap.get(downstreamBranch),
                     mdsMergeInput.changeNumber,
-                    downstreamBranch,
-                    mdsMergeInput.toCrossHostMap.get(downstreamBranch),
-                    mdsMergeInput.fromCrossHostMap.get(mdsMergeInput.sourceBranch));
+                    downstreamBranch);
                 createDownstreams = false;
               } catch (MergeConflictException e) {
                 failedMergeBranchMap.put(downstreamBranch, e.getMessage());
                 log.debug(
                     "Abandoning existing, obsolete {} due to merge conflict.", dsChangeNumber);
-                abandonChange(dsChangeNumber, toCrossHost);
+                abandonChange(dsChangeNumber);
               }
             }
           }
@@ -431,8 +391,6 @@
           sdsMergeInput.subject = mdsMergeInput.subject;
           sdsMergeInput.downstreamBranch = downstreamBranch;
           sdsMergeInput.doMerge = mdsMergeInput.dsBranchMap.get(downstreamBranch);
-          sdsMergeInput.fromCrossHost = mdsMergeInput.fromCrossHostMap.get(downstreamBranch);
-          sdsMergeInput.toCrossHost = mdsMergeInput.toCrossHostMap.get(downstreamBranch);
           try {
             createSingleDownstreamMerge(sdsMergeInput);
           } catch (MergeConflictException e) {
@@ -468,12 +426,12 @@
    * @throws OrmException Throws if we fail to open the request context
    */
   public List<Integer> getExistingMergesOnBranch(
-      String upstreamRevision, String topic, String downstreamBranch, String hostname)
+      String upstreamRevision, String topic, String downstreamBranch)
       throws RestApiException, InvalidQueryParameterException, OrmException,
           ConfigInvalidException {
     try (ManualRequestContext ctx = oneOffRequestContext.openAs(config.getContextUserId())) {
       List<Integer> downstreamChangeNumbers = new ArrayList<>();
-      List<ChangeInfo> changes = getChangesInTopicAndBranch(topic, downstreamBranch, hostname);
+      List<ChangeInfo> changes = getChangesInTopicAndBranch(topic, downstreamBranch);
 
       for (ChangeInfo change : changes) {
         String changeRevision = change.currentRevision;
@@ -530,9 +488,7 @@
       downstreamChangeInput.baseChange =
           getBaseChangeId(
               getChangeParents(sdsMergeInput.changeNumber, sdsMergeInput.currentRevision),
-              sdsMergeInput.downstreamBranch,
-              sdsMergeInput.fromCrossHost,
-              sdsMergeInput.toCrossHost);
+              sdsMergeInput.downstreamBranch);
 
       if (!sdsMergeInput.doMerge) {
         mergeInput.strategy = "ours";
@@ -545,9 +501,8 @@
             sdsMergeInput.downstreamBranch);
       }
 
-      ChangeApi downstreamChange =
-          apiManager.forHostname(sdsMergeInput.toCrossHost).changes().create(downstreamChangeInput);
-      tagChange(downstreamChange.get(), "Automerger change created!", sdsMergeInput.toCrossHost);
+      ChangeApi downstreamChange = gApi.changes().create(downstreamChangeInput);
+      tagChange(downstreamChange.get(), "Automerger change created!");
     }
   }
 
@@ -575,21 +530,19 @@
    * @throws InvalidQueryParameterException
    * @throws RestApiException
    */
-  private String getBaseChangeId(
-      List<String> parents, String branch, String fromCrossHost, String toCrossHost)
+  private String getBaseChangeId(List<String> parents, String branch)
       throws InvalidQueryParameterException, RestApiException {
     if (parents.isEmpty()) {
       log.info("No base change id for change with no parents.");
       return null;
     }
     // 1) Get topic of first parent
-    String firstParentTopic = getTopic(parents.get(0), fromCrossHost);
+    String firstParentTopic = getTopic(parents.get(0));
     if (firstParentTopic == null) {
       return null;
     }
     // 2) query that topic and use that to find A'
-    List<ChangeInfo> changesInTopic =
-        getChangesInTopicAndBranch(firstParentTopic, branch, toCrossHost);
+    List<ChangeInfo> changesInTopic = getChangesInTopicAndBranch(firstParentTopic, branch);
     String firstParent = parents.get(0);
     for (ChangeInfo change : changesInTopic) {
       List<CommitInfo> topicChangeParents =
@@ -615,9 +568,8 @@
       return;
     }
 
-    // Map of whether or not we should merge it or skip it for each downstream
+    // Map whether or not we should merge it or skip it for each downstream
     Map<String, Boolean> dsBranchMap = new HashMap<String, Boolean>();
-    // Map of downstream branch to corresponding API to use.
     for (String downstreamBranch : downstreamBranches) {
       boolean isSkipMerge = config.isSkipMerge(change.branch, downstreamBranch, change.subject);
       dsBranchMap.put(downstreamBranch, !isSkipMerge);
@@ -631,14 +583,11 @@
     mdsMergeInput.dsBranchMap = dsBranchMap;
     mdsMergeInput.changeNumber = change._number;
     mdsMergeInput.patchsetNumber = revisionInfo._number;
-    mdsMergeInput.sourceBranch = change.branch;
     mdsMergeInput.project = change.project;
     mdsMergeInput.topic = getOrSetTopic(change._number, change.topic);
     mdsMergeInput.subject = change.subject;
     mdsMergeInput.obsoleteRevision = previousRevision;
     mdsMergeInput.currentRevision = currentRevision;
-    mdsMergeInput.fromCrossHostMap = config.getFromCrossHostMap(change.branch, downstreamBranches);
-    mdsMergeInput.toCrossHostMap = config.getToCrossHostMap(change.branch, downstreamBranches);
 
     createMergesAndHandleConflicts(mdsMergeInput);
   }
@@ -653,13 +602,11 @@
       }
 
       for (String downstreamBranch : downstreamBranches) {
-        String toCrossHost = config.getToCrossHost(change.branch, downstreamBranch);
-
         List<Integer> existingDownstream =
-            getExistingMergesOnBranch(revision, change.topic, downstreamBranch, toCrossHost);
+            getExistingMergesOnBranch(revision, change.topic, downstreamBranch);
         log.debug("Abandoning existing downstreams: {}", existingDownstream);
         for (Integer changeNumber : existingDownstream) {
-          abandonChange(changeNumber, toCrossHost);
+          abandonChange(changeNumber);
         }
       }
     } catch (RestApiException | IOException | InvalidQueryParameterException e) {
@@ -667,8 +614,7 @@
     }
   }
 
-  private void updateVote(ChangeInfo change, String label, short vote, String hostname)
-      throws RestApiException {
+  private void updateVote(ChangeInfo change, String label, short vote) throws RestApiException {
     log.debug("Giving {} for label {} to {}", vote, label, change.id);
     // Vote on all downstream branches unless merge conflict.
     ReviewInput reviewInput = new ReviewInput();
@@ -678,30 +624,19 @@
     reviewInput.notify = NotifyHandling.NONE;
     reviewInput.tag = AUTOMERGER_TAG;
     try {
-      apiManager
-          .forHostname(hostname)
-          .changes()
-          .id(change.id)
-          .revision(CURRENT)
-          .review(reviewInput);
+      gApi.changes().id(change.id).revision(CURRENT).review(reviewInput);
     } catch (AuthException e) {
       log.error("Automerger could not set label, but still continuing.", e);
     }
   }
 
-  private void tagChange(ChangeInfo change, String message, String hostname)
-      throws RestApiException {
+  private void tagChange(ChangeInfo change, String message) throws RestApiException {
     ReviewInput reviewInput = new ReviewInput();
     reviewInput.message(message);
     reviewInput.notify = NotifyHandling.NONE;
     reviewInput.tag = AUTOMERGER_TAG;
     try {
-      apiManager
-          .forHostname(hostname)
-          .changes()
-          .id(change.id)
-          .revision(CURRENT)
-          .review(reviewInput);
+      gApi.changes().id(change.id).revision(CURRENT).review(reviewInput);
     } catch (AuthException e) {
       log.error("Automerger could not set label, but still continuing.", e);
     }
@@ -710,12 +645,10 @@
   private void updateDownstreamMerge(
       String newParentRevision,
       String upstreamSubject,
-      Integer existingDownstreamNum,
+      Integer sourceNum,
       boolean doMerge,
       Integer upstreamChangeNumber,
-      String downstreamBranch,
-      String fromCrossHost,
-      String toCrossHost)
+      String downstreamBranch)
       throws RestApiException, InvalidQueryParameterException {
     MergeInput mergeInput = new MergeInput();
     mergeInput.source = newParentRevision;
@@ -728,19 +661,15 @@
       mergeInput.strategy = "ours";
       mergePatchSetInput.subject =
           getSubjectForDownstreamMerge(upstreamSubject, newParentRevision, true);
-      log.debug("Skipping merge for {} on {}", newParentRevision, existingDownstreamNum);
+      log.debug("Skipping merge for {} on {}", newParentRevision, sourceNum);
     }
     mergePatchSetInput.merge = mergeInput;
 
     mergePatchSetInput.baseChange =
         getBaseChangeId(
-            getChangeParents(upstreamChangeNumber, newParentRevision),
-            downstreamBranch,
-            fromCrossHost,
-            toCrossHost);
+            getChangeParents(upstreamChangeNumber, newParentRevision), downstreamBranch);
 
-    ChangeApi originalChange =
-        apiManager.forHostname(toCrossHost).changes().id(existingDownstreamNum);
+    ChangeApi originalChange = gApi.changes().id(sourceNum);
 
     if (originalChange.info().status == ChangeStatus.ABANDONED) {
       RestoreInput restoreInput = new RestoreInput();
@@ -770,28 +699,20 @@
     return previousRevision;
   }
 
-  private ChangeInfo getOriginalChange(
-      int changeNumber, String currentRevision, String downstreamBranch, String hostname)
-      throws RestApiException, InvalidQueryParameterException, ConfigInvalidException {
+  private ChangeInfo getOriginalChange(int changeNumber, String currentRevision)
+      throws RestApiException, InvalidQueryParameterException {
     List<String> parents = getChangeParents(changeNumber, currentRevision);
     if (parents.size() >= 2) {
       String secondParentRevision = parents.get(1);
-      String topic = apiManager.forHostname(hostname).changes().id(changeNumber).topic();
-      List<ChangeInfo> changesInTopic = getChangesInTopic(topic, hostname);
+      String topic = gApi.changes().id(changeNumber).topic();
+      List<ChangeInfo> changesInTopic = getChangesInTopic(topic);
       for (ChangeInfo change : changesInTopic) {
-        String newHostname = hostname;
-        String fromCrossHost = config.getFromCrossHost(change.branch, downstreamBranch);
-        if (fromCrossHost != null) {
-          newHostname = fromCrossHost;
-        }
         if (change.currentRevision.equals(secondParentRevision)) {
-          return getOriginalChange(
-              change._number, secondParentRevision, change.branch, newHostname);
+          return getOriginalChange(change._number, secondParentRevision);
         }
       }
     }
-
-    return apiManager.forHostname(hostname).changes().id(changeNumber).get();
+    return gApi.changes().id(changeNumber).get();
   }
 
   private List<String> getChangeParents(int changeNumber, String currentRevision)
@@ -808,22 +729,19 @@
     return parents;
   }
 
-  private void abandonChange(Integer changeNumber, String toCrossHost) throws RestApiException {
+  private void abandonChange(Integer changeNumber) throws RestApiException {
     log.debug("Abandoning change: {}", changeNumber);
     AbandonInput abandonInput = new AbandonInput();
     abandonInput.notify = NotifyHandling.NONE;
     abandonInput.message = "Merge parent updated; abandoning due to upstream conflict.";
-    apiManager.forHostname(toCrossHost).changes().id(changeNumber).abandon(abandonInput);
+    gApi.changes().id(changeNumber).abandon(abandonInput);
   }
 
-  private String getTopic(String revision, String hostname)
-      throws InvalidQueryParameterException, RestApiException {
+  private String getTopic(String revision) throws InvalidQueryParameterException, RestApiException {
     QueryBuilder queryBuilder = new QueryBuilder();
     queryBuilder.addParameter("commit", revision);
     List<ChangeInfo> changes =
-        apiManager
-            .forHostname(hostname)
-            .changes()
+        gApi.changes()
             .query(queryBuilder.get())
             .withOption(ListChangesOption.CURRENT_REVISION)
             .get();
@@ -844,25 +762,20 @@
     return queryBuilder;
   }
 
-  private List<ChangeInfo> getChangesInTopic(String topic, String hostname)
+  private List<ChangeInfo> getChangesInTopic(String topic)
       throws InvalidQueryParameterException, RestApiException {
     QueryBuilder queryBuilder = constructTopicQuery(topic);
-    return apiManager
-        .forHostname(hostname)
-        .changes()
+    return gApi.changes()
         .query(queryBuilder.get())
         .withOptions(ListChangesOption.ALL_REVISIONS, ListChangesOption.CURRENT_COMMIT)
         .get();
   }
 
-  private List<ChangeInfo> getChangesInTopicAndBranch(
-      String topic, String downstreamBranch, String hostname)
+  private List<ChangeInfo> getChangesInTopicAndBranch(String topic, String downstreamBranch)
       throws InvalidQueryParameterException, RestApiException {
     QueryBuilder queryBuilder = constructTopicQuery(topic);
     queryBuilder.addParameter("branch", downstreamBranch);
-    return apiManager
-        .forHostname(hostname)
-        .changes()
+    return gApi.changes()
         .query(queryBuilder.get())
         .withOptions(ListChangesOption.ALL_REVISIONS, ListChangesOption.CURRENT_COMMIT)
         .get();
@@ -872,8 +785,7 @@
       throws InvalidQueryParameterException, RestApiException {
     // If we've already merged this commit to this branch, don't do it again.
     List<ChangeInfo> changes =
-        getChangesInTopicAndBranch(
-            currentTopic, sdsMergeInput.downstreamBranch, sdsMergeInput.toCrossHost);
+        getChangesInTopicAndBranch(currentTopic, sdsMergeInput.downstreamBranch);
     for (ChangeInfo change : changes) {
       if (change.branch.equals(sdsMergeInput.downstreamBranch)) {
         List<CommitInfo> parents = change.revisions.get(change.currentRevision).commit.parents;
diff --git a/src/main/java/com/googlesource/gerrit/plugins/automerger/MultipleDownstreamMergeInput.java b/src/main/java/com/googlesource/gerrit/plugins/automerger/MultipleDownstreamMergeInput.java
index d420d57..a62d9a7 100644
--- a/src/main/java/com/googlesource/gerrit/plugins/automerger/MultipleDownstreamMergeInput.java
+++ b/src/main/java/com/googlesource/gerrit/plugins/automerger/MultipleDownstreamMergeInput.java
@@ -23,12 +23,9 @@
   public Map<String, Boolean> dsBranchMap;
   public int changeNumber;
   public int patchsetNumber;
-  public String sourceBranch;
   public String project;
   public String topic;
   public String subject;
   public String obsoleteRevision;
   public String currentRevision;
-  public Map<String, String> fromCrossHostMap;
-  public Map<String, String> toCrossHostMap;
 }
diff --git a/src/main/java/com/googlesource/gerrit/plugins/automerger/SingleDownstreamMergeInput.java b/src/main/java/com/googlesource/gerrit/plugins/automerger/SingleDownstreamMergeInput.java
index 4e4740c..5a5f0e7 100644
--- a/src/main/java/com/googlesource/gerrit/plugins/automerger/SingleDownstreamMergeInput.java
+++ b/src/main/java/com/googlesource/gerrit/plugins/automerger/SingleDownstreamMergeInput.java
@@ -24,6 +24,4 @@
   public String subject;
   public String downstreamBranch;
   public boolean doMerge;
-  public String fromCrossHost;
-  public String toCrossHost;
 }
diff --git a/src/test/java/com/googlesource/gerrit/plugins/automerger/ConfigLoaderIT.java b/src/test/java/com/googlesource/gerrit/plugins/automerger/ConfigLoaderIT.java
index 91bb93a..d692e95 100644
--- a/src/test/java/com/googlesource/gerrit/plugins/automerger/ConfigLoaderIT.java
+++ b/src/test/java/com/googlesource/gerrit/plugins/automerger/ConfigLoaderIT.java
@@ -181,20 +181,6 @@
         .isEqualTo(expectedBranches);
   }
 
-  @Test
-  public void getFromCrossHostTest() throws Exception {
-    defaultSetup("automerger.config");
-    assertThat(configLoader.getFromCrossHost("other_host_branch", "this_host_branch"))
-        .isEqualTo("https://boogieplex-android.example.com");
-  }
-
-  @Test
-  public void getToCrossHostTest() throws Exception {
-    defaultSetup("automerger.config");
-    assertThat(configLoader.getToCrossHost("this_host_branch", "that_host_branch"))
-        .isEqualTo("https://boogieplex-chrome.example.com");
-  }
-
   private void defaultSetup(String resourceName) throws Exception {
     createProject("All-Projects");
     manifestNameKey = createProject("platform/manifest");
diff --git a/src/test/resources/com/googlesource/gerrit/plugins/automerger/automerger.config b/src/test/resources/com/googlesource/gerrit/plugins/automerger/automerger.config
index 82c4b6a..ea54637 100644
--- a/src/test/resources/com/googlesource/gerrit/plugins/automerger/automerger.config
+++ b/src/test/resources/com/googlesource/gerrit/plugins/automerger/automerger.config
@@ -9,12 +9,6 @@
   setProjects = platform/other/project
 [automerger "ds_two:ds_three"]
   setProjects = platform/some/project
-[automerger "other_host_branch:this_host_branch"]
-  setProjects = platform/some/project
-  fromCrossHost = https://boogieplex-android.example.com
-[automerger "this_host_branch:that_host_branch"]
-  setProjects = platform/some/project
-  toCrossHost = https://boogieplex-chrome.example.com
 [global]
   alwaysBlankMerge = .*Import translations. DO NOT MERGE.*
   alwaysBlankMerge = .*DO NOT MERGE ANYWHERE.*