Index: trunk/src/org/openstreetmap/josm/actions/downloadtasks/DownloadOsmTask.java
===================================================================
--- trunk/src/org/openstreetmap/josm/actions/downloadtasks/DownloadOsmTask.java	(revision 13928)
+++ trunk/src/org/openstreetmap/josm/actions/downloadtasks/DownloadOsmTask.java	(revision 13929)
@@ -267,4 +267,15 @@
                 layerName = OsmDataLayer.createNewName();
             }
+            if (settings.getDownloadPolicy() != null) {
+                dataSet.setDownloadPolicy(settings.getDownloadPolicy());
+            }
+            if (settings.getUploadPolicy() != null) {
+                dataSet.setUploadPolicy(settings.getUploadPolicy());
+            }
+            if (dataSet.isLocked() && !settings.isLocked()) {
+                dataSet.unlock();
+            } else if (!dataSet.isLocked() && settings.isLocked()) {
+                dataSet.lock();
+            }
             return new OsmDataLayer(dataSet, layerName, null);
         }
Index: trunk/src/org/openstreetmap/josm/io/remotecontrol/RemoteControl.java
===================================================================
--- trunk/src/org/openstreetmap/josm/io/remotecontrol/RemoteControl.java	(revision 13928)
+++ trunk/src/org/openstreetmap/josm/io/remotecontrol/RemoteControl.java	(revision 13929)
@@ -41,5 +41,5 @@
      */
     static final int protocolMajorVersion = 1;
-    static final int protocolMinorVersion = 7;
+    static final int protocolMinorVersion = 8;
 
     /**
Index: trunk/src/org/openstreetmap/josm/io/remotecontrol/handler/ImportHandler.java
===================================================================
--- trunk/src/org/openstreetmap/josm/io/remotecontrol/handler/ImportHandler.java	(revision 13928)
+++ trunk/src/org/openstreetmap/josm/io/remotecontrol/handler/ImportHandler.java	(revision 13929)
@@ -64,5 +64,5 @@
     @Override
     public String[] getOptionalParams() {
-        return new String[] {"new_layer", "layer_name"};
+        return new String[] {"new_layer", "layer_name", "layer_locked", "download_policy", "upload_policy"};
     }
 
@@ -102,4 +102,5 @@
     @Override
     protected void validateRequest() throws RequestHandlerBadRequestException {
+        validateDownloadParams();
         String urlString = args != null ? args.get("url") : null;
         if (Config.getPref().getBoolean("remotecontrol.importhandler.fix_url_query", true)) {
Index: trunk/src/org/openstreetmap/josm/io/remotecontrol/handler/LoadAndZoomHandler.java
===================================================================
--- trunk/src/org/openstreetmap/josm/io/remotecontrol/handler/LoadAndZoomHandler.java	(revision 13928)
+++ trunk/src/org/openstreetmap/josm/io/remotecontrol/handler/LoadAndZoomHandler.java	(revision 13929)
@@ -83,5 +83,6 @@
     public String[] getOptionalParams() {
         return new String[] {"new_layer", "layer_name", "addtags", "select", "zoom_mode",
-                "changeset_comment", "changeset_source", "changeset_hashtags", "search"};
+                "changeset_comment", "changeset_source", "changeset_hashtags", "search",
+                "layer_locked", "download_policy", "upload_policy"};
     }
 
@@ -261,4 +262,5 @@
     @Override
     protected void validateRequest() throws RequestHandlerBadRequestException {
+        validateDownloadParams();
         // Process mandatory arguments
         minlat = 0;
Index: trunk/src/org/openstreetmap/josm/io/remotecontrol/handler/LoadDataHandler.java
===================================================================
--- trunk/src/org/openstreetmap/josm/io/remotecontrol/handler/LoadDataHandler.java	(revision 13928)
+++ trunk/src/org/openstreetmap/josm/io/remotecontrol/handler/LoadDataHandler.java	(revision 13929)
@@ -51,5 +51,5 @@
     @Override
     public String[] getOptionalParams() {
-        return new String[] {"new_layer", "mime_type", "layer_name"};
+        return new String[] {"new_layer", "mime_type", "layer_name", "layer_locked", "download_policy", "upload_policy"};
     }
 
@@ -80,4 +80,5 @@
     @Override
     protected void validateRequest() throws RequestHandlerBadRequestException {
+        validateDownloadParams();
         this.data = args.get("data");
         /**
Index: trunk/src/org/openstreetmap/josm/io/remotecontrol/handler/LoadObjectHandler.java
===================================================================
--- trunk/src/org/openstreetmap/josm/io/remotecontrol/handler/LoadObjectHandler.java	(revision 13928)
+++ trunk/src/org/openstreetmap/josm/io/remotecontrol/handler/LoadObjectHandler.java	(revision 13929)
@@ -41,5 +41,6 @@
     @Override
     public String[] getOptionalParams() {
-        return new String[] {"new_layer", "layer_name", "addtags", "relation_members", "referrers"};
+        return new String[] {"new_layer", "layer_name", "layer_locked", "download_policy", "upload_policy",
+                "addtags", "relation_members", "referrers"};
     }
 
@@ -97,4 +98,5 @@
     @Override
     protected void validateRequest() throws RequestHandlerBadRequestException {
+        validateDownloadParams();
         ps.clear();
         for (String i : splitArg("objects", SPLITTER_COMMA)) {
Index: trunk/src/org/openstreetmap/josm/io/remotecontrol/handler/RequestHandler.java
===================================================================
--- trunk/src/org/openstreetmap/josm/io/remotecontrol/handler/RequestHandler.java	(revision 13928)
+++ trunk/src/org/openstreetmap/josm/io/remotecontrol/handler/RequestHandler.java	(revision 13929)
@@ -14,4 +14,6 @@
 import java.util.Map;
 import java.util.Set;
+import java.util.function.Function;
+import java.util.function.Supplier;
 import java.util.regex.Pattern;
 
@@ -21,4 +23,6 @@
 import org.openstreetmap.josm.Main;
 import org.openstreetmap.josm.actions.downloadtasks.DownloadParams;
+import org.openstreetmap.josm.data.osm.DownloadPolicy;
+import org.openstreetmap.josm.data.osm.UploadPolicy;
 import org.openstreetmap.josm.io.remotecontrol.PermissionPrefWithDefault;
 import org.openstreetmap.josm.spi.preferences.Config;
@@ -299,8 +303,15 @@
     }
 
+    private <T> T get(String key, Function<String, T> parser, Supplier<T> defaultSupplier) {
+        String val = args.get(key);
+        return val != null && !val.isEmpty() ? parser.apply(val) : defaultSupplier.get();
+    }
+
     private boolean isLoadInNewLayer() {
-        return args.get("new_layer") != null && !args.get("new_layer").isEmpty()
-                ? Boolean.parseBoolean(args.get("new_layer"))
-                : Config.getPref().getBoolean(loadInNewLayerKey, loadInNewLayerDefault);
+        return get("new_layer", Boolean::parseBoolean, () -> Config.getPref().getBoolean(loadInNewLayerKey, loadInNewLayerDefault));
+    }
+
+    private boolean is(String key) {
+        return get(key, Boolean::parseBoolean, () -> false);
     }
 
@@ -308,5 +319,16 @@
         return new DownloadParams()
                 .withNewLayer(isLoadInNewLayer())
-                .withLayerName(args.get("layer_name"));
+                .withLayerName(args.get("layer_name"))
+                .withLocked(is("layer_locked"))
+                .withDownloadPolicy(get("download_policy", DownloadPolicy::of, () -> DownloadPolicy.NORMAL))
+                .withUploadPolicy(get("upload_policy", UploadPolicy::of, () -> UploadPolicy.NORMAL));
+    }
+
+    protected void validateDownloadParams() throws RequestHandlerBadRequestException {
+        try {
+            getDownloadParams();
+        } catch (IllegalArgumentException e) {
+            throw new RequestHandlerBadRequestException(e);
+        }
     }
 
