Index: trunk/src/org/openstreetmap/josm/gui/progress/AbstractProgressMonitor.java
===================================================================
--- trunk/src/org/openstreetmap/josm/gui/progress/AbstractProgressMonitor.java	(revision 9528)
+++ trunk/src/org/openstreetmap/josm/gui/progress/AbstractProgressMonitor.java	(revision 9529)
@@ -219,5 +219,5 @@
     ==================*/
 
-    abstract void updateProgress(double value);
+    protected abstract void updateProgress(double value);
 
     @Override
Index: trunk/src/org/openstreetmap/josm/io/StreamProgressUpdater.java
===================================================================
--- trunk/src/org/openstreetmap/josm/io/StreamProgressUpdater.java	(revision 9528)
+++ trunk/src/org/openstreetmap/josm/io/StreamProgressUpdater.java	(revision 9529)
@@ -27,6 +27,6 @@
 
     private void initProgressMonitor() {
+        progressMonitor.beginTask(taskTitle);
         if (size > 0) {
-            progressMonitor.subTask(taskTitle);
             progressMonitor.setTicksCount((int) size);
         } else {
Index: trunk/src/org/openstreetmap/josm/tools/HttpClient.java
===================================================================
--- trunk/src/org/openstreetmap/josm/tools/HttpClient.java	(revision 9528)
+++ trunk/src/org/openstreetmap/josm/tools/HttpClient.java	(revision 9529)
@@ -103,6 +103,7 @@
             connection.setFixedLengthStreamingMode(requestBody.length);
             connection.setDoOutput(true);
+            final ProgressMonitor subTaskMonitor = progressMonitor.createSubTaskMonitor(1, false);
             try (OutputStream out = new BufferedOutputStream(
-                    new ProgressOutputStream(connection.getOutputStream(), requestBody.length, progressMonitor))) {
+                    new ProgressOutputStream(connection.getOutputStream(), requestBody.length, subTaskMonitor))) {
                 out.write(requestBody);
             }
@@ -256,6 +257,7 @@
                 in = connection.getErrorStream();
             }
+            monitor.subTask(tr("Fetching content..."));
             if (in != null) {
-                in = new ProgressInputStream(in, getContentLength(), monitor);
+                in = new ProgressInputStream(in, getContentLength(), monitor.createSubTaskMonitor(1, false));
                 in = "gzip".equalsIgnoreCase(getContentEncoding()) ? new GZIPInputStream(in) : in;
                 Compression compression = Compression.NONE;
