Use six.iteritems to iterate over dictionary's items in tools

This corresponds to dictionary.iteritems() on Python 2 and
dictionary.items() on Python 3.
diff --git a/tools/manifest/manifest.py b/tools/manifest/manifest.py
index 599015d..74d8020 100644
--- a/tools/manifest/manifest.py
+++ b/tools/manifest/manifest.py
@@ -141,7 +141,7 @@
         tpath_len = len(tpath)
 
         for type_tests in self._data.values():
-            for path, tests in type_tests.iteritems():
+            for path, tests in iteritems(type_tests):
                 if path[:tpath_len] == tpath:
                     for test in tests:
                         yield test
diff --git a/tools/runner/report.py b/tools/runner/report.py
index 5eb8d67..e9986fd 100644
--- a/tools/runner/report.py
+++ b/tools/runner/report.py
@@ -5,10 +5,11 @@
 import argparse
 import json
 import sys
+import types
+
 from cgi import escape
 from collections import defaultdict
-
-import types
+from six import iteritems
 
 
 def html_escape(item, escape_quote=False):
@@ -44,7 +45,7 @@
             attrs_unicode = " " + " ".join("%s=\"%s\"" % (html_escape(key),
                                                           html_escape(value,
                                                                       escape_quote=True))
-                                           for key, value in self.attrs.iteritems())
+                                           for key, value in iteritems(self.attrs))
         else:
             attrs_unicode = ""
         return "<%s%s>%s</%s>\n" % (self.name,
@@ -157,7 +158,7 @@
 
 def all_tests(data):
     tests = defaultdict(set)
-    for UA, results in data.iteritems():
+    for UA, results in iteritems(data):
         for result in results["results"]:
             id = test_id(result["test"])
             tests[id] |= {subtest["name"] for subtest in result["subtests"]}
@@ -185,7 +186,7 @@
 
     results_by_test = defaultdict(result)
 
-    for UA, results in data.iteritems():
+    for UA, results in iteritems(data):
         for test_data in results["results"]:
             id = test_id(test_data["test"])
             result = results_by_test[id]
@@ -230,10 +231,10 @@
 def summary(UAs, results_by_test):
     """Render the implementation report summary"""
     not_passing = []
-    for test, results in results_by_test.iteritems():
+    for test, results in iteritems(results_by_test):
         if not any(item[0] in ("PASS", "OK") for item in results["harness"].values()):
             not_passing.append((test, None))
-        for subtest_name, subtest_results in results["subtests"].iteritems():
+        for subtest_name, subtest_results in iteritems(results["subtests"]):
             if not any(item[0] == "PASS" for item in subtest_results.values()):
                 not_passing.append((test, subtest_name))
     if not_passing:
@@ -260,7 +261,7 @@
         class_="test"
     )
 
-    for name, subtest_result in sorted(result["subtests"].iteritems()):
+    for name, subtest_result in sorted(iteritems(result["subtests"])):
         yield h.tr(
             h.td(name),
             [status_cell(status, message)
@@ -271,7 +272,7 @@
 
 def result_bodies(UAs, results_by_test):
     return [h.tbody(result_rows(UAs, test, result))
-            for test, result in sorted(results_by_test.iteritems())]
+            for test, result in sorted(iteritems(results_by_test))]
 
 
 def generate_html(UAs, results_by_test):
diff --git a/tools/wptrunner/test/test.py b/tools/wptrunner/test/test.py
index 0e3b30c..42e7abb 100644
--- a/tools/wptrunner/test/test.py
+++ b/tools/wptrunner/test/test.py
@@ -6,6 +6,7 @@
 from mozlog import structuredlog
 from mozlog.handlers import BaseHandler, StreamHandler
 from mozlog.formatters import MachFormatter
+from six import iteritems
 from six.moves.configparser import ConfigParser
 from wptrunner import wptcommandline, wptrunner
 
@@ -83,7 +84,7 @@
 
 def settings_to_argv(settings):
     rv = []
-    for name, value in settings.iteritems():
+    for name, value in iteritems(settings):
         key = "--%s" % name
         if not value:
             rv.append(key)
@@ -109,7 +110,7 @@
 
     logger.suite_start(tests=[])
 
-    for product, product_settings in config["products"].iteritems():
+    for product, product_settings in iteritems(config["products"]):
         if args.product and product not in args.product:
             continue
 
diff --git a/tools/wptrunner/wptrunner/executors/executormarionette.py b/tools/wptrunner/wptrunner/executors/executormarionette.py
index 7f576e6..4739d09 100644
--- a/tools/wptrunner/wptrunner/executors/executormarionette.py
+++ b/tools/wptrunner/wptrunner/executors/executormarionette.py
@@ -5,6 +5,7 @@
 import traceback
 import uuid
 
+from six import iteritems
 from six.moves.urllib.parse import urljoin
 
 errors = None
@@ -608,7 +609,7 @@
             else:
                 self.prefs.set(name, value)
 
-        for name, value in new_environment.get("prefs", {}).iteritems():
+        for name, value in iteritems(new_environment.get("prefs", {})):
             self.executor.original_pref_values[name] = self.prefs.get(name)
             self.prefs.set(name, value)
 
@@ -893,7 +894,8 @@
         data = {"screenshot": screenshot}
         if self.executor.group_metadata is not None:
             data["urlCount"] = {urljoin(self.executor.server_url(key[0]), key[1]):value
-                                for key, value in self.executor.group_metadata.get("url_count", {}).iteritems()
+                                for key, value in iteritems(
+                                    self.executor.group_metadata.get("url_count", {}))
                                 if value > 1}
         self.executor.protocol.marionette.set_context(self.executor.protocol.marionette.CONTEXT_CHROME)
         self.executor.protocol.marionette._send_message("reftest:setup", data)
diff --git a/tools/wptrunner/wptrunner/metadata.py b/tools/wptrunner/wptrunner/metadata.py
index 1f815f7..73b6de9 100644
--- a/tools/wptrunner/wptrunner/metadata.py
+++ b/tools/wptrunner/wptrunner/metadata.py
@@ -128,7 +128,7 @@
     files_changed = set(files_changed)
 
     root_manifest = None
-    for manifest, paths in manifests.iteritems():
+    for manifest, paths in iteritems(manifests):
         if paths["url_base"] == "/":
             root_manifest = manifest
             break
@@ -258,7 +258,7 @@
     manifests = manifest_loader.load()
 
     id_test_map = {}
-    for test_manifest, paths in manifests.iteritems():
+    for test_manifest, paths in iteritems(manifests):
         id_test_map.update(create_test_tree(paths["metadata_path"],
                                             test_manifest))
     return id_test_map
diff --git a/tools/wptrunner/wptrunner/wpttest.py b/tools/wptrunner/wptrunner/wpttest.py
index 2f24bed..e8c2674 100644
--- a/tools/wptrunner/wptrunner/wpttest.py
+++ b/tools/wptrunner/wptrunner/wpttest.py
@@ -2,7 +2,7 @@
 import subprocess
 from six.moves.urllib.parse import urljoin
 from collections import defaultdict
-from six import string_types
+from six import iteritems, string_types
 
 from .wptmanifest.parser import atoms
 
@@ -291,7 +291,7 @@
         rv = {}
         for meta in self.itermeta(None):
             threshold = meta.leak_threshold
-            for key, value in threshold.iteritems():
+            for key, value in iteritems(threshold):
                 if key not in rv:
                     rv[key] = value
         return rv