Index: /trunk/src/org/openstreetmap/josm/data/validation/TestError.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/data/validation/TestError.java	(revision 13488)
+++ /trunk/src/org/openstreetmap/josm/data/validation/TestError.java	(revision 13489)
@@ -191,5 +191,5 @@
          * Sets a supplier to obtain a command to fix the error.
          *
-         * @param fixingCommand the fix supplier
+         * @param fixingCommand the fix supplier. Can be null
          * @return {@code this}
          */
Index: /trunk/src/org/openstreetmap/josm/data/validation/tests/InternetTags.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/data/validation/tests/InternetTags.java	(revision 13488)
+++ /trunk/src/org/openstreetmap/josm/data/validation/tests/InternetTags.java	(revision 13489)
@@ -5,4 +5,8 @@
 import static org.openstreetmap.josm.tools.I18n.tr;
 
+import java.util.function.Supplier;
+
+import org.openstreetmap.josm.command.ChangePropertyCommand;
+import org.openstreetmap.josm.command.Command;
 import org.openstreetmap.josm.data.osm.Node;
 import org.openstreetmap.josm.data.osm.OsmPrimitive;
@@ -97,13 +101,20 @@
         String value = v != null ? v : p.get(k);
         if (!validator.isValid(value)) {
+            Supplier<Command> fix = null;
             String errMsg = validator.getErrorMessage();
-            // Special treatment to allow URLs without protocol. See UrlValidator#isValid
             if (tr("URL contains an invalid protocol: {0}", (String) null).equals(errMsg)) {
+                // Special treatment to allow URLs without protocol. See UrlValidator#isValid
                 String proto = validator instanceof EmailValidator ? "mailto://" : "http://";
                 return doValidateTag(p, k, proto+value, validator, code);
+            } else if (tr("URL contains an invalid authority: {0}", (String) null).equals(errMsg)
+                    && value.contains("\\") && validator.isValid(value.replaceAll("\\\\", "/"))) {
+                // Special treatment to autofix URLs with backslashes. See UrlValidator#isValid
+                errMsg = tr("URL contains backslashes instead of slashes");
+                fix = () -> new ChangePropertyCommand(p, k, value.replaceAll("\\\\", "/"));
             }
             error = TestError.builder(this, Severity.WARNING, code)
                     .message(validator.getValidatorName(), marktr("''{0}'': {1}"), k, errMsg)
                     .primitives(p)
+                    .fix(fix)
                     .build();
         }
Index: /trunk/test/unit/org/openstreetmap/josm/TestUtils.java
===================================================================
--- /trunk/test/unit/org/openstreetmap/josm/TestUtils.java	(revision 13488)
+++ /trunk/test/unit/org/openstreetmap/josm/TestUtils.java	(revision 13489)
@@ -260,4 +260,15 @@
 
     /**
+     * Makes sure the given primitive belongs to a data set.
+     * @param <T> OSM primitive type
+     * @param osm OSM primitive
+     * @return OSM primitive, attached to a new {@code DataSet}
+     */
+    public static <T extends OsmPrimitive> T addFakeDataSet(T osm) {
+        new DataSet(osm);
+        return osm;
+    }
+
+    /**
      * Creates a new node with the given tags (see {@link OsmUtils#createPrimitive(java.lang.String)})
      *
Index: /trunk/test/unit/org/openstreetmap/josm/command/MoveCommandTest.java
===================================================================
--- /trunk/test/unit/org/openstreetmap/josm/command/MoveCommandTest.java	(revision 13488)
+++ /trunk/test/unit/org/openstreetmap/josm/command/MoveCommandTest.java	(revision 13489)
@@ -247,7 +247,6 @@
     @Test
     public void testDescription() {
-        Node node = new Node(LatLon.ZERO);
+        Node node = TestUtils.addFakeDataSet(new Node(LatLon.ZERO));
         node.put("name", "xy");
-        new DataSet(node);
         List<OsmPrimitive> nodeList = Arrays.<OsmPrimitive>asList(node);
         assertTrue(new MoveCommand(nodeList, 1, 2).getDescriptionText().matches("Move 1 node"));
Index: /trunk/test/unit/org/openstreetmap/josm/data/validation/tests/InternetTagsTest.java
===================================================================
--- /trunk/test/unit/org/openstreetmap/josm/data/validation/tests/InternetTagsTest.java	(revision 13488)
+++ /trunk/test/unit/org/openstreetmap/josm/data/validation/tests/InternetTagsTest.java	(revision 13489)
@@ -2,10 +2,12 @@
 package org.openstreetmap.josm.data.validation.tests;
 
+import static org.junit.Assert.assertEquals;
 import static org.junit.Assert.assertNotNull;
 import static org.junit.Assert.assertNull;
+import static org.openstreetmap.josm.tools.I18n.tr;
 
 import org.junit.Rule;
 import org.junit.Test;
-import org.openstreetmap.josm.data.osm.OsmUtils;
+import org.openstreetmap.josm.TestUtils;
 import org.openstreetmap.josm.data.validation.TestError;
 import org.openstreetmap.josm.data.validation.routines.AbstractValidator;
@@ -75,6 +77,16 @@
     }
 
-    private static void testKey(String key, String value, boolean valid, AbstractValidator validator, int code) {
-        TestError error = TEST.validateTag(OsmUtils.createPrimitive("node "+key+"="+value+""), key, validator, code);
+    /**
+     * Test of invalid slashes.
+     */
+    @Test
+    public void testInvalidSlashes() {
+        TestError error = testUrl("website", "http:\\\\www.sjoekurs.no", false);
+        assertEquals(tr("''{0}'': {1}", "website", tr("URL contains backslashes instead of slashes")), error.getDescription());
+        assertNotNull(error.getFix());
+    }
+
+    private static TestError testKey(String key, String value, boolean valid, AbstractValidator validator, int code) {
+        TestError error = TEST.validateTag(TestUtils.addFakeDataSet(TestUtils.newNode(key+"="+value+"")), key, validator, code);
         if (valid) {
             assertNull(error != null ? error.getMessage() : null, error);
@@ -82,12 +94,13 @@
             assertNotNull(error);
         }
+        return error;
     }
 
-    private static void testUrl(String key, String value, boolean valid) {
-        testKey(key, value, valid, UrlValidator.getInstance(), InternetTags.INVALID_URL);
+    private static TestError testUrl(String key, String value, boolean valid) {
+        return testKey(key, value, valid, UrlValidator.getInstance(), InternetTags.INVALID_URL);
     }
 
-    private static void testEmail(String key, String value, boolean valid) {
-        testKey(key, value, valid, EmailValidator.getInstance(), InternetTags.INVALID_EMAIL);
+    private static TestError testEmail(String key, String value, boolean valid) {
+        return testKey(key, value, valid, EmailValidator.getInstance(), InternetTags.INVALID_EMAIL);
     }
 }
Index: /trunk/test/unit/org/openstreetmap/josm/data/validation/tests/MapCSSTagCheckerTest.java
===================================================================
--- /trunk/test/unit/org/openstreetmap/josm/data/validation/tests/MapCSSTagCheckerTest.java	(revision 13488)
+++ /trunk/test/unit/org/openstreetmap/josm/data/validation/tests/MapCSSTagCheckerTest.java	(revision 13489)
@@ -102,5 +102,5 @@
     @Test
     public void testTicket10913() throws ParseException {
-        final OsmPrimitive p = OsmUtils.createPrimitive("way highway=tertiary construction=yes");
+        final OsmPrimitive p = TestUtils.addFakeDataSet(TestUtils.newWay("highway=tertiary construction=yes"));
         final TagCheck check = TagCheck.readMapCSS(new StringReader("way {" +
                 "throwError: \"error\";" +
@@ -108,5 +108,4 @@
                 "fixAdd: \"highway=construction\";\n" +
                 "}")).parseChecks.get(0);
-        new DataSet(p);
         final Command command = check.fixPrimitive(p);
         assertTrue(command instanceof SequenceCommand);
Index: /trunk/test/unit/org/openstreetmap/josm/data/validation/tests/TagCheckerTest.java
===================================================================
--- /trunk/test/unit/org/openstreetmap/josm/data/validation/tests/TagCheckerTest.java	(revision 13488)
+++ /trunk/test/unit/org/openstreetmap/josm/data/validation/tests/TagCheckerTest.java	(revision 13489)
@@ -12,5 +12,5 @@
 import org.junit.Rule;
 import org.junit.Test;
-import org.openstreetmap.josm.data.osm.DataSet;
+import org.openstreetmap.josm.TestUtils;
 import org.openstreetmap.josm.data.osm.OsmPrimitive;
 import org.openstreetmap.josm.data.osm.OsmUtils;
@@ -34,9 +34,8 @@
 
     List<TestError> test(OsmPrimitive primitive) throws IOException {
-        new DataSet(primitive);
         final TagChecker checker = new TagChecker();
         checker.initialize();
         checker.startTest(null);
-        checker.check(primitive);
+        checker.check(TestUtils.addFakeDataSet(primitive));
         return checker.getErrors();
     }
Index: /trunk/test/unit/org/openstreetmap/josm/gui/dialogs/relation/GenericRelationEditorTest.java
===================================================================
--- /trunk/test/unit/org/openstreetmap/josm/gui/dialogs/relation/GenericRelationEditorTest.java	(revision 13488)
+++ /trunk/test/unit/org/openstreetmap/josm/gui/dialogs/relation/GenericRelationEditorTest.java	(revision 13489)
@@ -11,4 +11,5 @@
 import org.junit.Rule;
 import org.junit.Test;
+import org.openstreetmap.josm.TestUtils;
 import org.openstreetmap.josm.data.osm.DataSet;
 import org.openstreetmap.josm.data.osm.Node;
@@ -91,6 +92,5 @@
     @Test
     public void testAddPrimitivesToRelation() {
-        Relation r = new Relation(1);
-        new DataSet(r);
+        Relation r = TestUtils.addFakeDataSet(new Relation(1));
         assertNull(GenericRelationEditor.addPrimitivesToRelation(r, Collections.<OsmPrimitive>emptyList()));
         assertNull(GenericRelationEditor.addPrimitivesToRelation(r, Collections.singleton(new Relation(1))));
