Index: /trunk/src/org/openstreetmap/josm/actions/downloadtasks/ChangesetHeaderDownloadTask.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/actions/downloadtasks/ChangesetHeaderDownloadTask.java	(revision 10163)
+++ /trunk/src/org/openstreetmap/josm/actions/downloadtasks/ChangesetHeaderDownloadTask.java	(revision 10164)
@@ -149,8 +149,5 @@
             ids.add(cs.getId());
         }
-        if (parent == null)
-            return new ChangesetHeaderDownloadTask(ids);
-        else
-            return new ChangesetHeaderDownloadTask(parent, ids);
+        return new ChangesetHeaderDownloadTask(parent, ids);
     }
 }
Index: /trunk/src/org/openstreetmap/josm/gui/util/GuiHelper.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/gui/util/GuiHelper.java	(revision 10163)
+++ /trunk/src/org/openstreetmap/josm/gui/util/GuiHelper.java	(revision 10164)
@@ -16,4 +16,5 @@
 import java.awt.GraphicsEnvironment;
 import java.awt.GridBagLayout;
+import java.awt.HeadlessException;
 import java.awt.Image;
 import java.awt.Stroke;
@@ -522,8 +523,12 @@
      */
     public static Frame getFrameForComponent(Component parentComponent) {
-        if (parentComponent == null && GraphicsEnvironment.isHeadless()) {
+        try {
+            return JOptionPane.getFrameForComponent(parentComponent);
+        } catch (HeadlessException e) {
+            if (Main.isDebugEnabled()) {
+                Main.debug(e.getMessage());
+            }
             return null;
         }
-        return JOptionPane.getFrameForComponent(parentComponent);
     }
 }
Index: /trunk/test/unit/org/openstreetmap/josm/actions/downloadtasks/ChangesetContentDownloadTaskTest.java
===================================================================
--- /trunk/test/unit/org/openstreetmap/josm/actions/downloadtasks/ChangesetContentDownloadTaskTest.java	(revision 10164)
+++ /trunk/test/unit/org/openstreetmap/josm/actions/downloadtasks/ChangesetContentDownloadTaskTest.java	(revision 10164)
@@ -0,0 +1,62 @@
+// License: GPL. For details, see LICENSE file.
+package org.openstreetmap.josm.actions.downloadtasks;
+
+import static org.junit.Assert.assertNotNull;
+
+import java.awt.Component;
+import java.util.Arrays;
+
+import org.junit.BeforeClass;
+import org.junit.Test;
+import org.openstreetmap.josm.JOSMFixture;
+
+/**
+ * Unit tests for class {@link ChangesetContentDownloadTask}.
+ */
+public class ChangesetContentDownloadTaskTest {
+
+    /**
+     * Setup test.
+     */
+    @BeforeClass
+    public static void setUp() {
+        JOSMFixture.createUnitTestFixture().init();
+    }
+
+    /**
+     * Unit test of {@code ChangesetContentDownloadTask#ChangesetContentDownloadTask}.
+     */
+    @Test
+    public void testChangesetContentDownloadTask() {
+        Component parent = new Component() {
+            // empty component
+        };
+        assertNotNull(new ChangesetContentDownloadTask(parent, 1));
+        assertNotNull(new ChangesetContentDownloadTask(parent, Arrays.asList(1, 2)));
+        assertNotNull(new ChangesetContentDownloadTask(parent, null));
+    }
+
+    /**
+     * Unit test of {@code ChangesetContentDownloadTask#ChangesetContentDownloadTask} - invalid changeset id.
+     */
+    @Test(expected = IllegalArgumentException.class)
+    public void testChangesetContentDownloadTaskInvalidId() {
+        new ChangesetContentDownloadTask(0);
+    }
+
+    /**
+     * Unit test of {@code ChangesetContentDownloadTask#ChangesetContentDownloadTask} - null parent.
+     */
+    @Test(expected = IllegalArgumentException.class)
+    public void testChangesetContentDownloadTaskNullParent1() {
+        new ChangesetContentDownloadTask(1);
+    }
+
+    /**
+     * Unit test of {@code ChangesetContentDownloadTask#ChangesetContentDownloadTask} - null parent.
+     */
+    @Test(expected = IllegalArgumentException.class)
+    public void testChangesetContentDownloadTaskNullParent2() {
+        new ChangesetContentDownloadTask(Arrays.asList(1, 2));
+    }
+}
Index: /trunk/test/unit/org/openstreetmap/josm/actions/downloadtasks/ChangesetHeaderDownloadTaskTest.java
===================================================================
--- /trunk/test/unit/org/openstreetmap/josm/actions/downloadtasks/ChangesetHeaderDownloadTaskTest.java	(revision 10164)
+++ /trunk/test/unit/org/openstreetmap/josm/actions/downloadtasks/ChangesetHeaderDownloadTaskTest.java	(revision 10164)
@@ -0,0 +1,47 @@
+// License: GPL. For details, see LICENSE file.
+package org.openstreetmap.josm.actions.downloadtasks;
+
+import static org.junit.Assert.assertNotNull;
+
+import java.awt.Component;
+import java.util.Collections;
+
+import org.junit.BeforeClass;
+import org.junit.Test;
+import org.openstreetmap.josm.JOSMFixture;
+import org.openstreetmap.josm.data.osm.Changeset;
+
+/**
+ * Unit tests for class {@link ChangesetHeaderDownloadTask}.
+ */
+public class ChangesetHeaderDownloadTaskTest {
+
+    /**
+     * Setup test.
+     */
+    @BeforeClass
+    public static void setUp() {
+        JOSMFixture.createUnitTestFixture().init();
+    }
+
+    /**
+     * Unit test of {@code ChangesetHeaderDownloadTask#buildTaskForChangesets}.
+     */
+    @Test
+    public void testBuildTaskForChangesets() {
+        Component parent = new Component() {
+            // empty component
+        };
+        assertNotNull(ChangesetHeaderDownloadTask.buildTaskForChangesets(parent, Collections.singleton(new Changeset(1))));
+        assertNotNull(ChangesetHeaderDownloadTask.buildTaskForChangesets(parent, Collections.<Changeset>singleton(null)));
+        assertNotNull(ChangesetHeaderDownloadTask.buildTaskForChangesets(parent, null));
+    }
+
+    /**
+     * Unit test of {@code ChangesetHeaderDownloadTask#buildTaskForChangesets} - null parent.
+     */
+    @Test(expected = IllegalArgumentException.class)
+    public void testBuildTaskForChangesetsNullParent() {
+        ChangesetHeaderDownloadTask.buildTaskForChangesets(Collections.singleton(new Changeset(1)));
+    }
+}
Index: /trunk/test/unit/org/openstreetmap/josm/actions/downloadtasks/ChangesetQueryTaskTest.java
===================================================================
--- /trunk/test/unit/org/openstreetmap/josm/actions/downloadtasks/ChangesetQueryTaskTest.java	(revision 10164)
+++ /trunk/test/unit/org/openstreetmap/josm/actions/downloadtasks/ChangesetQueryTaskTest.java	(revision 10164)
@@ -0,0 +1,44 @@
+// License: GPL. For details, see LICENSE file.
+package org.openstreetmap.josm.actions.downloadtasks;
+
+import static org.junit.Assert.assertNotNull;
+
+import java.awt.Component;
+
+import org.junit.BeforeClass;
+import org.junit.Test;
+import org.openstreetmap.josm.JOSMFixture;
+import org.openstreetmap.josm.io.ChangesetQuery;
+
+/**
+ * Unit tests for class {@link ChangesetQueryTask}.
+ */
+public class ChangesetQueryTaskTest {
+
+    /**
+     * Setup test.
+     */
+    @BeforeClass
+    public static void setUp() {
+        JOSMFixture.createUnitTestFixture().init();
+    }
+
+    /**
+     * Unit test of {@code ChangesetQueryTask#ChangesetQueryTask}.
+     */
+    @Test
+    public void testChangesetQueryTask() {
+        Component parent = new Component() {
+            // empty component
+        };
+        assertNotNull(new ChangesetQueryTask(parent, new ChangesetQuery()));
+    }
+
+    /**
+     * Unit test of {@code ChangesetQueryTask#ChangesetQueryTask} - null parent.
+     */
+    @Test(expected = IllegalArgumentException.class)
+    public void testChangesetQueryTaskNullParent() {
+        new ChangesetQueryTask(new ChangesetQuery());
+    }
+}
