diff options
author | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-04-19 00:47:55 +0000 |
---|---|---|
committer | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-04-19 00:47:55 +0000 |
commit | 26a029d407be480d791972afb5975cf62c9360a6 (patch) | |
tree | f435a8308119effd964b339f76abb83a57c29483 /python/mozperftest | |
parent | Initial commit. (diff) | |
download | firefox-26a029d407be480d791972afb5975cf62c9360a6.tar.xz firefox-26a029d407be480d791972afb5975cf62c9360a6.zip |
Adding upstream version 124.0.1.upstream/124.0.1
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to 'python/mozperftest')
145 files changed, 26824 insertions, 0 deletions
diff --git a/python/mozperftest/.ruff.toml b/python/mozperftest/.ruff.toml new file mode 100644 index 0000000000..10338e3dbc --- /dev/null +++ b/python/mozperftest/.ruff.toml @@ -0,0 +1,4 @@ +extend = "../../pyproject.toml" + +[isort] +known-first-party = ["mozperftest"] diff --git a/python/mozperftest/README.rst b/python/mozperftest/README.rst new file mode 100644 index 0000000000..383530146b --- /dev/null +++ b/python/mozperftest/README.rst @@ -0,0 +1,6 @@ +=========== +mozperftest +=========== + +**mozperftest** can be used to run performance tests against browsers. +See the docs directory. diff --git a/python/mozperftest/mozperftest/.coveragerc b/python/mozperftest/mozperftest/.coveragerc new file mode 100644 index 0000000000..a3cdafa52c --- /dev/null +++ b/python/mozperftest/mozperftest/.coveragerc @@ -0,0 +1,10 @@ +[run] +omit = + python/mozperftest/mozperftest/tests/* +include = + python/mozperftest/* + +[report] +sort = Cover +show_missing = True +fail_under = 91 diff --git a/python/mozperftest/mozperftest/__init__.py b/python/mozperftest/mozperftest/__init__.py new file mode 100644 index 0000000000..3d12258de5 --- /dev/null +++ b/python/mozperftest/mozperftest/__init__.py @@ -0,0 +1,13 @@ +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at http://mozilla.org/MPL/2.0/. +import mozlog + +from mozperftest.argparser import ( # noqa + PerftestArgumentParser, + PerftestToolsArgumentParser, +) +from mozperftest.environment import MachEnvironment # noqa +from mozperftest.metadata import Metadata # noqa + +logger = mozlog.commandline.setup_logging("mozperftest", {}) diff --git a/python/mozperftest/mozperftest/argparser.py b/python/mozperftest/mozperftest/argparser.py new file mode 100644 index 0000000000..40b3cfc277 --- /dev/null +++ b/python/mozperftest/mozperftest/argparser.py @@ -0,0 +1,481 @@ +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at http://mozilla.org/MPL/2.0/. +import copy +import os +from argparse import ArgumentParser, Namespace + +import mozlog + +here = os.path.abspath(os.path.dirname(__file__)) +try: + from mozbuild.base import MachCommandConditions as conditions + from mozbuild.base import MozbuildObject + + build_obj = MozbuildObject.from_environment(cwd=here) +except Exception: + build_obj = None + conditions = None + +from mozperftest.metrics import get_layers as metrics_layers # noqa +from mozperftest.system import get_layers as system_layers # noqa +from mozperftest.test import get_layers as test_layers # noqa +from mozperftest.utils import convert_day # noqa + +FLAVORS = ( + "desktop-browser", + "mobile-browser", + "doc", + "xpcshell", + "webpagetest", + "mochitest", +) + + +class Options: + general_args = { + "--flavor": { + "choices": FLAVORS, + "metavar": "{{{}}}".format(", ".join(FLAVORS)), + "default": "desktop-browser", + "help": "Only run tests of this flavor.", + }, + "tests": { + "nargs": "*", + "metavar": "TEST", + "default": [], + "help": "Test to run. Can be a single test file or URL or a directory" + " of tests (to run recursively). If omitted, the entire suite is run.", + }, + "--test-iterations": { + "type": int, + "default": 1, + "help": "Number of times the whole test is executed", + }, + "--output": { + "type": str, + "default": "artifacts", + "help": "Path to where data will be stored, defaults to a top-level " + "`artifacts` folder.", + }, + "--hooks": { + "type": str, + "default": None, + "help": "Script containing hooks. Can be a path or a URL.", + }, + "--verbose": {"action": "store_true", "default": False, "help": "Verbose mode"}, + "--push-to-try": { + "action": "store_true", + "default": False, + "help": "Pushin the test to try", + }, + "--try-platform": { + "nargs": "*", + "type": str, + "default": "linux", + "help": "Platform to use on try", + "choices": ["linux", "mac", "win"], + }, + "--on-try": { + "action": "store_true", + "default": False, + "help": "Running the test on try", + }, + "--test-date": { + "type": convert_day, + "default": "today", + "help": "Used in multi-commit testing, it specifies the day to get test builds from. " + "Must follow the format `YYYY.MM.DD` or be `today` or `yesterday`.", + }, + } + + args = copy.deepcopy(general_args) + + +for layer in system_layers() + test_layers() + metrics_layers(): + if layer.activated: + # add an option to deactivate it + option_name = "--no-%s" % layer.name + option_help = "Deactivates the %s layer" % layer.name + else: + option_name = "--%s" % layer.name + option_help = "Activates the %s layer" % layer.name + + Options.args[option_name] = { + "action": "store_true", + "default": False, + "help": option_help, + } + + for option, value in layer.arguments.items(): + parsed_option = "--%s-%s" % (layer.name, option.replace("_", "-")) + if parsed_option in Options.args: + raise KeyError("%s option already defined!" % parsed_option) + Options.args[parsed_option] = value + + +class PerftestArgumentParser(ArgumentParser): + """%(prog)s [options] [test paths]""" + + def __init__(self, app=None, **kwargs): + ArgumentParser.__init__( + self, usage=self.__doc__, conflict_handler="resolve", **kwargs + ) + # XXX see if this list will vary depending on the flavor & app + self.oldcwd = os.getcwd() + self.app = app + if not self.app and build_obj: + if conditions.is_android(build_obj): + self.app = "android" + if not self.app: + self.app = "generic" + for name, options in Options.args.items(): + self.add_argument(name, **options) + + mozlog.commandline.add_logging_group(self) + self.set_by_user = [] + + def parse_helper(self, args): + for arg in args: + arg_part = arg.partition("--")[-1].partition("-") + layer_name = f"--{arg_part[0]}" + layer_exists = arg_part[1] and layer_name in Options.args + if layer_exists: + args.append(layer_name) + + def get_user_args(self, args): + # suppress args that were not provided by the user. + res = {} + for key, value in args.items(): + if key not in self.set_by_user: + continue + res[key] = value + return res + + def _parse_known_args(self, arg_strings, namespace): + # at this point, the namespace is filled with default values + # defined in the args + + # let's parse what the user really gave us in the CLI + # in a new namespace + user_namespace, extras = super()._parse_known_args(arg_strings, Namespace()) + + self.set_by_user = list([name for name, value in user_namespace._get_kwargs()]) + + # we can now merge both + for key, value in user_namespace._get_kwargs(): + setattr(namespace, key, value) + + return namespace, extras + + def parse_args(self, args=None, namespace=None): + self.parse_helper(args) + return super().parse_args(args, namespace) + + def parse_known_args(self, args=None, namespace=None): + self.parse_helper(args) + return super().parse_known_args(args, namespace) + + +class SideBySideOptions: + args = [ + [ + ["-t", "--test-name"], + { + "type": str, + "required": True, + "dest": "test_name", + "help": "The name of the test task to get videos from.", + }, + ], + [ + ["--new-test-name"], + { + "type": str, + "default": None, + "help": "The name of the test task to get videos from in the new revision.", + }, + ], + [ + ["--base-revision"], + { + "type": str, + "required": True, + "help": "The base revision to compare a new revision to.", + }, + ], + [ + ["--new-revision"], + { + "type": str, + "required": True, + "help": "The base revision to compare a new revision to.", + }, + ], + [ + ["--base-branch"], + { + "type": str, + "default": "autoland", + "help": "Branch to search for the base revision.", + }, + ], + [ + ["--new-branch"], + { + "type": str, + "default": "autoland", + "help": "Branch to search for the new revision.", + }, + ], + [ + ["--base-platform"], + { + "type": str, + "required": True, + "dest": "platform", + "help": "Platform to return results for.", + }, + ], + [ + ["--new-platform"], + { + "type": str, + "default": None, + "help": "Platform to return results for in the new revision.", + }, + ], + [ + ["-o", "--overwrite"], + { + "action": "store_true", + "default": False, + "help": "If set, the downloaded task group data will be deleted before " + + "it gets re-downloaded.", + }, + ], + [ + ["--cold"], + { + "action": "store_true", + "default": False, + "help": "If set, we'll only look at cold pageload tests.", + }, + ], + [ + ["--warm"], + { + "action": "store_true", + "default": False, + "help": "If set, we'll only look at warm pageload tests.", + }, + ], + [ + ["--most-similar"], + { + "action": "store_true", + "default": False, + "help": "If set, we'll search for a video pairing that is the most similar.", + }, + ], + [ + ["--search-crons"], + { + "action": "store_true", + "default": False, + "help": "If set, we will search for the tasks within the cron jobs as well. ", + }, + ], + [ + ["--skip-download"], + { + "action": "store_true", + "default": False, + "help": "If set, we won't try to download artifacts again and we'll " + + "try using what already exists in the output folder.", + }, + ], + [ + ["--output"], + { + "type": str, + "default": None, + "help": "This is where the data will be saved. Defaults to CWD. " + + "You can include a name for the file here, otherwise it will " + + "default to side-by-side.mp4.", + }, + ], + [ + ["--metric"], + { + "type": str, + "default": "speedindex", + "help": "Metric to use for side-by-side comparison.", + }, + ], + [ + ["--vismetPath"], + { + "type": str, + "default": False, + "help": "Paths to visualmetrics.py for step chart generation.", + }, + ], + [ + ["--original"], + { + "action": "store_true", + "default": False, + "help": "If set, use the original videos in the side-by-side instead " + + "of the postprocessed videos.", + }, + ], + [ + ["--skip-slow-gif"], + { + "action": "store_true", + "default": False, + "help": "If set, the slow-motion GIFs won't be produced.", + }, + ], + ] + + +class ChangeDetectorOptions: + args = [ + # TODO: Move the common tool arguments to a common + # argument class. + [ + ["--task-name"], + { + "type": str, + "nargs": "*", + "default": [], + "dest": "task_names", + "help": "The full name of the test task to get data from e.g. " + "test-android-hw-a51-11-0-aarch64-shippable-qr/opt-" + "browsertime-tp6m-geckoview-sina-nofis.", + }, + ], + [ + ["-t", "--test-name"], + { + "type": str, + "default": None, + "dest": "test_name", + "help": "The name of the test task to get data from e.g. " + "browsertime-tp6m-geckoview-sina-nofis.", + }, + ], + [ + ["--platform"], + { + "type": str, + "default": None, + "help": "Platform to analyze e.g. " + "test-android-hw-a51-11-0-aarch64-shippable-qr/opt.", + }, + ], + [ + ["--new-test-name"], + { + "type": str, + "help": "The name of the test task to get data from in the " + "base revision e.g. browsertime-tp6m-geckoview-sina-nofis.", + }, + ], + [ + ["--new-platform"], + { + "type": str, + "help": "Platform to analyze in base revision e.g. " + "test-android-hw-a51-11-0-aarch64-shippable-qr/opt.", + }, + ], + [ + ["--depth"], + { + "type": int, + "default": None, + "help": "This sets how the change detector should run. " + "Default is None, which is a direct comparison between the " + "revisions. -1 will autocompute the number of revisions to " + "look at between the base, and new. Any other positive integer " + "acts as a maximum number to look at.", + }, + ], + [ + ["--base-revision"], + { + "type": str, + "required": True, + "help": "The base revision to compare a new revision to.", + }, + ], + [ + ["--new-revision"], + { + "type": str, + "required": True, + "help": "The new revision to compare a base revision to.", + }, + ], + [ + ["--base-branch"], + { + "type": str, + "default": "try", + "help": "Branch to search for the base revision.", + }, + ], + [ + ["--new-branch"], + { + "type": str, + "default": "try", + "help": "Branch to search for the new revision.", + }, + ], + [ + ["--skip-download"], + { + "action": "store_true", + "default": False, + "help": "If set, we won't try to download artifacts again and we'll " + + "try using what already exists in the output folder.", + }, + ], + [ + ["-o", "--overwrite"], + { + "action": "store_true", + "default": False, + "help": "If set, the downloaded task group data will be deleted before " + + "it gets re-downloaded.", + }, + ], + ] + + +class ToolingOptions: + args = { + "side-by-side": SideBySideOptions.args, + "change-detector": ChangeDetectorOptions.args, + } + + +class PerftestToolsArgumentParser(ArgumentParser): + """%(prog)s [options] [test paths]""" + + tool = None + + def __init__(self, *args, **kwargs): + ArgumentParser.__init__( + self, usage=self.__doc__, conflict_handler="resolve", **kwargs + ) + + if PerftestToolsArgumentParser.tool is None: + raise SystemExit("No tool specified, cannot continue parsing") + else: + for name, options in ToolingOptions.args[PerftestToolsArgumentParser.tool]: + self.add_argument(*name, **options) diff --git a/python/mozperftest/mozperftest/environment.py b/python/mozperftest/mozperftest/environment.py new file mode 100644 index 0000000000..7be0f1f639 --- /dev/null +++ b/python/mozperftest/mozperftest/environment.py @@ -0,0 +1,106 @@ +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at http://mozilla.org/MPL/2.0/. +import contextlib +import copy + +from mozperftest.argparser import FLAVORS +from mozperftest.hooks import Hooks +from mozperftest.layers import Layers, StopRunError +from mozperftest.metrics import pick_metrics +from mozperftest.system import pick_system +from mozperftest.test import pick_test +from mozperftest.utils import MachLogger + +SYSTEM, TEST, METRICS = 0, 1, 2 + + +class MachEnvironment(MachLogger): + def __init__(self, mach_cmd, flavor="desktop-browser", hooks=None, **kwargs): + MachLogger.__init__(self, mach_cmd) + self._mach_cmd = mach_cmd + self._mach_args = dict( + [(self._normalize(key), value) for key, value in kwargs.items()] + ) + self.layers = [] + if flavor not in FLAVORS: + raise NotImplementedError(flavor) + for layer in (pick_system, pick_test, pick_metrics): + self.add_layer(layer(self, flavor, mach_cmd)) + if hooks is None: + # we just load an empty Hooks instance + hooks = Hooks(mach_cmd) + self.hooks = hooks + + @contextlib.contextmanager + def frozen(self): + self.freeze() + try: + # used to trigger __enter__/__exit__ + with self: + yield self + finally: + self.unfreeze() + + def _normalize(self, name): + if name.startswith("--"): + name = name[2:] + return name.replace("-", "_") + + def set_arg(self, name, value): + """Sets the argument""" + # see if we want to restrict to existing keys + self._mach_args[self._normalize(name)] = value + + def get_arg(self, name, default=None, layer=None): + name = self._normalize(name) + marker = object() + res = self._mach_args.get(name, marker) + if res is marker: + # trying with the name prefixed with the layer name + if layer is not None and not name.startswith(layer.name): + name = "%s_%s" % (layer.name, name) + return self._mach_args.get(name, default) + return default + return res + + def get_layer(self, name): + for layer in self.layers: + if isinstance(layer, Layers): + found = layer.get_layer(name) + if found is not None: + return found + elif layer.name == name: + return layer + return None + + def add_layer(self, layer): + self.layers.append(layer) + + def freeze(self): + # freeze args (XXX do we need to freeze more?) + self._saved_mach_args = copy.deepcopy(self._mach_args) + + def unfreeze(self): + self._mach_args = self._saved_mach_args + self._saved_mach_args = None + + def run(self, metadata): + # run the system and test layers + try: + with self.layers[SYSTEM] as syslayer, self.layers[TEST] as testlayer: + metadata = testlayer(syslayer(metadata)) + + # then run the metrics layers + with self.layers[METRICS] as metrics: + metadata = metrics(metadata) + except StopRunError: + # ends the cycle but without bubbling up the error + pass + return metadata + + def __enter__(self): + return self + + def __exit__(self, type, value, traceback): + return diff --git a/python/mozperftest/mozperftest/fzf/__init__.py b/python/mozperftest/mozperftest/fzf/__init__.py new file mode 100644 index 0000000000..6fbe8159b2 --- /dev/null +++ b/python/mozperftest/mozperftest/fzf/__init__.py @@ -0,0 +1,3 @@ +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at http://mozilla.org/MPL/2.0/. diff --git a/python/mozperftest/mozperftest/fzf/fzf.py b/python/mozperftest/mozperftest/fzf/fzf.py new file mode 100644 index 0000000000..993c6e4e23 --- /dev/null +++ b/python/mozperftest/mozperftest/fzf/fzf.py @@ -0,0 +1,116 @@ +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at http://mozilla.org/MPL/2.0/. +import json +import os +import subprocess +import sys +from pathlib import Path +from shutil import which + +from mach.util import get_state_dir +from mozterm import Terminal + +HERE = Path(__file__).parent.resolve() +SRC_ROOT = (HERE / ".." / ".." / ".." / "..").resolve() +PREVIEW_SCRIPT = HERE / "preview.py" +FZF_HEADER = """ +Please select a performance test to execute. +{shortcuts} +""".strip() + +fzf_shortcuts = { + "ctrl-t": "toggle-all", + "alt-bspace": "beginning-of-line+kill-line", + "?": "toggle-preview", +} + +fzf_header_shortcuts = [ + ("select", "tab"), + ("accept", "enter"), + ("cancel", "ctrl-c"), + ("cursor-up", "up"), + ("cursor-down", "down"), +] + + +def run_fzf(cmd, tasks): + env = dict(os.environ) + env.update( + {"PYTHONPATH": os.pathsep.join([p for p in sys.path if "requests" in p])} + ) + proc = subprocess.Popen( + cmd, + stdout=subprocess.PIPE, + stdin=subprocess.PIPE, + env=env, + universal_newlines=True, + ) + out = proc.communicate("\n".join(tasks))[0].splitlines() + selected = [] + query = None + if out: + query = out[0] + selected = out[1:] + return query, selected + + +def format_header(): + terminal = Terminal() + shortcuts = [] + for action, key in fzf_header_shortcuts: + shortcuts.append( + "{t.white}{action}{t.normal}: {t.yellow}<{key}>{t.normal}".format( + t=terminal, action=action, key=key + ) + ) + return FZF_HEADER.format(shortcuts=", ".join(shortcuts), t=terminal) + + +def select(test_objects): + mozbuild_dir = Path(Path.home(), ".mozbuild") + os.makedirs(str(mozbuild_dir), exist_ok=True) + cache_file = Path(mozbuild_dir, ".perftestfuzzy") + + with cache_file.open("w") as f: + f.write(json.dumps(test_objects)) + + def _display(task): + from mozperftest.script import ScriptInfo + + path = Path(task["path"]) + script_info = ScriptInfo(str(path)) + flavor = script_info.script_type.name + if flavor == "browsertime": + flavor = "bt" + tags = script_info.get("tags", []) + + location = str(path.parent).replace(str(SRC_ROOT), "").strip("/") + if len(tags) > 0: + return f"[{flavor}][{','.join(tags)}] {path.name} in {location}" + return f"[{flavor}] {path.name} in {location}" + + candidate_tasks = [_display(t) for t in test_objects] + + fzf_bin = which("fzf", path=str(Path(get_state_dir(), "fzf", "bin"))) or which( + "fzf" + ) + if not fzf_bin: + raise AssertionError("Unable to find fzf") + + key_shortcuts = [k + ":" + v for k, v in fzf_shortcuts.items()] + + base_cmd = [ + fzf_bin, + "-m", + "--bind", + ",".join(key_shortcuts), + "--header", + format_header(), + "--preview-window=right:50%", + "--print-query", + "--preview", + sys.executable + ' {} -t "{{+f}}"'.format(str(PREVIEW_SCRIPT)), + ] + query_str, tasks = run_fzf(base_cmd, sorted(candidate_tasks)) + return tasks diff --git a/python/mozperftest/mozperftest/fzf/preview.py b/python/mozperftest/mozperftest/fzf/preview.py new file mode 100644 index 0000000000..d6441becbd --- /dev/null +++ b/python/mozperftest/mozperftest/fzf/preview.py @@ -0,0 +1,90 @@ +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at http://mozilla.org/MPL/2.0/. +""" +This file is executed by fzf through the command line and needs to +work in a standalone way on any Python 3 environment. + +This is why it alters PATH,making the assumption it's executed +from within a source tree. Do not add dependencies unless they +are in the source tree and added in SEARCH_PATHS. +""" +import argparse +import importlib.util +import json +import sys +from pathlib import Path + +HERE = Path(__file__).parent.resolve() +SRC_ROOT = (HERE / ".." / ".." / ".." / "..").resolve() +# make sure esprima is in the path +SEARCH_PATHS = [ + ("third_party", "python", "esprima"), +] + +for path in SEARCH_PATHS: + path = Path(SRC_ROOT, *path) + if path.exists(): + sys.path.insert(0, str(path)) + + +def get_test_objects(): + """Loads .perftestfuzzy and returns its content. + + The cache file is produced by the main fzf script and is used + as a way to let the preview script grab test_objects from the + mach command + """ + cache_file = Path(Path.home(), ".mozbuild", ".perftestfuzzy") + with cache_file.open() as f: + return json.loads(f.read()) + + +def plain_display(taskfile): + """Preview window display. + + Returns the reST summary for the perf test script. + """ + # Lame way to catch the ScriptInfo class without loading mozperftest + script_info = HERE / ".." / "script.py" + spec = importlib.util.spec_from_file_location( + name="script.py", location=str(script_info) + ) + module = importlib.util.module_from_spec(spec) + spec.loader.exec_module(module) + ScriptInfo = module.ScriptInfo + + with open(taskfile) as f: + tasklist = [line.strip() for line in f] + + tags, script_name, __, location = tasklist[0].split(" ") + script_path = Path(SRC_ROOT, location, script_name).resolve() + + for ob in get_test_objects(): + if ob["path"] == str(script_path): + print(ScriptInfo(ob["path"])) + return + + +def process_args(args): + """Process preview arguments.""" + argparser = argparse.ArgumentParser() + argparser.add_argument( + "-t", + "--tasklist", + type=str, + default=None, + help="Path to temporary file containing the selected tasks", + ) + return argparser.parse_args(args=args) + + +def main(args=None): + if args is None: + args = sys.argv[1:] + args = process_args(args) + plain_display(args.tasklist) + + +if __name__ == "__main__": + main() diff --git a/python/mozperftest/mozperftest/hooks.py b/python/mozperftest/mozperftest/hooks.py new file mode 100644 index 0000000000..b3491bc915 --- /dev/null +++ b/python/mozperftest/mozperftest/hooks.py @@ -0,0 +1,63 @@ +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at http://mozilla.org/MPL/2.0/. +import importlib +import shutil +import tempfile +from pathlib import Path + +from mozperftest.utils import MachLogger, download_file + +_LOADED_MODULES = {} + + +class Hooks(MachLogger): + def __init__(self, mach_cmd, hook_module=None): + MachLogger.__init__(self, mach_cmd) + self.tmp_dir = tempfile.mkdtemp() + + if hook_module is None: + self._hooks = None + return + + if not isinstance(hook_module, Path): + if hook_module.startswith("http"): + target = Path(self.tmp_dir, hook_module.split("/")[-1]) + hook_module = download_file(hook_module, target) + else: + hook_module = Path(hook_module) + + if hook_module.exists(): + path = str(hook_module) + if path not in _LOADED_MODULES: + spec = importlib.util.spec_from_file_location("hooks", path) + hook_module = importlib.util.module_from_spec(spec) + spec.loader.exec_module(hook_module) + _LOADED_MODULES[path] = hook_module + self._hooks = _LOADED_MODULES[path] + else: + raise IOError("Could not find hook module. %s" % str(hook_module)) + + def cleanup(self): + if self.tmp_dir is None: + return + shutil.rmtree(self.tmp_dir) + self.tmp_dir = None + + def exists(self, name): + if self._hooks is None: + return False + return hasattr(self._hooks, name) + + def get(self, name): + if self._hooks is None: + return False + return getattr(self._hooks, name) + + def run(self, name, *args, **kw): + if self._hooks is None: + return + if not hasattr(self._hooks, name): + return + self.debug("Running hook %s" % name) + return getattr(self._hooks, name)(*args, **kw) diff --git a/python/mozperftest/mozperftest/layers.py b/python/mozperftest/mozperftest/layers.py new file mode 100644 index 0000000000..08bc835bb8 --- /dev/null +++ b/python/mozperftest/mozperftest/layers.py @@ -0,0 +1,177 @@ +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at http://mozilla.org/MPL/2.0/. +import traceback + +from mozperftest.utils import MachLogger + + +class StopRunError(Exception): + pass + + +class Layer(MachLogger): + # layer name + name = "unset" + + # activated by default ? + activated = False + + # list of arguments grabbed by PerftestArgumentParser + arguments = {} + + # If true, calls on_exception() on errors + user_exception = False + + def __init__(self, env, mach_command): + MachLogger.__init__(self, mach_command) + self.return_code = 0 + self.mach_cmd = mach_command + self.run_process = mach_command.run_process + self.env = env + + def _normalize_arg(self, name): + if name.startswith("--"): + name = name[2:] + if not name.startswith(self.name): + name = "%s-%s" % (self.name, name) + return name.replace("-", "_") + + def get_arg_names(self): + return [self._normalize_arg(arg) for arg in self.arguments] + + def set_arg(self, name, value): + """Sets the argument""" + name = self._normalize_arg(name) + if name not in self.get_arg_names(): + raise KeyError( + "%r tried to set %r, but does not own it" % (self.name, name) + ) + return self.env.set_arg(name, value) + + def get_arg(self, name, default=None): + return self.env.get_arg(name, default, self) + + def __enter__(self): + self.info("Running %s:setup" % self.name) + self.setup() + return self + + def __exit__(self, type, value, traceback): + # XXX deal with errors here + self.info("Running %s:teardown" % self.name) + self.teardown() + + def __call__(self, metadata): + has_exc_handler = self.env.hooks.exists("on_exception") + self.info("Running %s:run" % self.name) + try: + metadata = self.run(metadata) + except Exception as e: + if self.user_exception and has_exc_handler: + self.error("User handled error") + for line in traceback.format_exc().splitlines(): + self.error(line) + resume_run = self.env.hooks.run("on_exception", self.env, self, e) + if resume_run: + return metadata + raise StopRunError() + else: + raise + return metadata + + def setup(self): + pass + + def teardown(self): + pass + + def run(self, metadata): + return metadata + + +class Layers(Layer): + def __init__(self, env, mach_command, factories): + super(Layers, self).__init__(env, mach_command) + + def _active(layer): + # if it's activated by default, see if we need to deactivate + # it by looking for the --no-layername option + if layer.activated: + return not env.get_arg("no-" + layer.name, False) + # if it's deactivated by default, we look for --layername + return env.get_arg(layer.name, False) + + self.layers = [ + factory(env, mach_command) for factory in factories if _active(factory) + ] + self.env = env + self._counter = -1 + + def _normalize_arg(self, name): + if name.startswith("--"): + name = name[2:] + return name.replace("-", "_") + + def get_layer(self, name): + for layer in self.layers: + if layer.name == name: + return layer + return None + + @property + def name(self): + return " + ".join([l.name for l in self.layers]) + + def __iter__(self): + self._counter = -1 + return self + + def __next__(self): + self._counter += 1 + try: + return self.layers[self._counter] + except IndexError: + raise StopIteration + + def __enter__(self): + self.setup() + return self + + def __exit__(self, type, value, traceback): + # XXX deal with errors here + self.teardown() + + def setup(self): + for layer in self.layers: + self.debug("Running %s:setup" % layer.name) + layer.setup() + + def teardown(self): + for layer in self.layers: + self.debug("Running %s:teardown" % layer.name) + layer.teardown() + + def __call__(self, metadata): + for layer in self.layers: + metadata = layer(metadata) + return metadata + + def set_arg(self, name, value): + """Sets the argument""" + name = self._normalize_arg(name) + found = False + for layer in self.layers: + if name in layer.get_arg_names(): + found = True + break + + if not found: + raise KeyError( + "%r tried to set %r, but does not own it" % (self.name, name) + ) + + return self.env.set_arg(name, value) + + def get_arg(self, name, default=None): + return self.env.get_arg(name, default) diff --git a/python/mozperftest/mozperftest/mach_commands.py b/python/mozperftest/mozperftest/mach_commands.py new file mode 100644 index 0000000000..4ac39d6a9e --- /dev/null +++ b/python/mozperftest/mozperftest/mach_commands.py @@ -0,0 +1,302 @@ +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at http://mozilla.org/MPL/2.0/. +import json +import os +import sys +from functools import partial + +from mach.decorators import Command, CommandArgument, SubCommand +from mozbuild.base import MachCommandConditions as conditions + +_TRY_PLATFORMS = { + "linux-xpcshell": "perftest-linux-try-xpcshell", + "mac-xpcshell": "perftest-macosx-try-xpcshell", + "linux-browsertime": "perftest-linux-try-browsertime", + "mac-browsertime": "perftest-macosx-try-browsertime", + "win-browsertimee": "perftest-windows-try-browsertime", +} + + +HERE = os.path.dirname(__file__) + + +def get_perftest_parser(): + from mozperftest import PerftestArgumentParser + + return PerftestArgumentParser + + +def get_perftest_tools_parser(tool): + def tools_parser_func(): + from mozperftest import PerftestToolsArgumentParser + + PerftestToolsArgumentParser.tool = tool + return PerftestToolsArgumentParser + + return tools_parser_func + + +def get_parser(): + return run_perftest._mach_command._parser + + +@Command( + "perftest", + category="testing", + conditions=[partial(conditions.is_buildapp_in, apps=["firefox", "android"])], + description="Run any flavor of perftest", + parser=get_perftest_parser, +) +def run_perftest(command_context, **kwargs): + # original parser that brought us there + original_parser = get_parser() + + from pathlib import Path + + from mozperftest.script import ParseError, ScriptInfo, ScriptType + + # user selection with fuzzy UI + from mozperftest.utils import ON_TRY + + if not ON_TRY and kwargs.get("tests", []) == []: + from moztest.resolve import TestResolver + + from mozperftest.fzf.fzf import select + + resolver = command_context._spawn(TestResolver) + test_objects = list(resolver.resolve_tests(paths=None, flavor="perftest")) + selected = select(test_objects) + + def full_path(selection): + __, script_name, __, location = selection.split(" ") + return str( + Path( + command_context.topsrcdir.rstrip(os.sep), + location.strip(os.sep), + script_name, + ) + ) + + kwargs["tests"] = [full_path(s) for s in selected] + + if kwargs["tests"] == []: + print("\nNo selection. Bye!") + return + + if len(kwargs["tests"]) > 1: + print("\nSorry no support yet for multiple local perftest") + return + + sel = "\n".join(kwargs["tests"]) + print("\nGood job! Best selection.\n%s" % sel) + # if the script is xpcshell, we can force the flavor here + # XXX on multi-selection, what happens if we have seeveral flavors? + try: + script_info = ScriptInfo(kwargs["tests"][0]) + except ParseError as e: + if e.exception is IsADirectoryError: + script_info = None + else: + raise + else: + if script_info.script_type == ScriptType.xpcshell: + kwargs["flavor"] = script_info.script_type.name + else: + # we set the value only if not provided (so "mobile-browser" + # can be picked) + if "flavor" not in kwargs: + kwargs["flavor"] = "desktop-browser" + + push_to_try = kwargs.pop("push_to_try", False) + if push_to_try: + sys.path.append(str(Path(command_context.topsrcdir, "tools", "tryselect"))) + + from tryselect.push import push_to_try + + perftest_parameters = {} + args = script_info.update_args(**original_parser.get_user_args(kwargs)) + platform = args.pop("try_platform", "linux") + if isinstance(platform, str): + platform = [platform] + + platform = ["%s-%s" % (plat, script_info.script_type.name) for plat in platform] + + for plat in platform: + if plat not in _TRY_PLATFORMS: + # we can extend platform support here: linux, win, macOs + # by adding more jobs in taskcluster/ci/perftest/kind.yml + # then picking up the right one here + raise NotImplementedError( + "%r doesn't exist or is not yet supported" % plat + ) + + def relative(path): + if path.startswith(command_context.topsrcdir): + return path[len(command_context.topsrcdir) :].lstrip(os.sep) + return path + + for name, value in args.items(): + # ignore values that are set to default + if original_parser.get_default(name) == value: + continue + if name == "tests": + value = [relative(path) for path in value] + perftest_parameters[name] = value + + parameters = { + "try_task_config": { + "tasks": [_TRY_PLATFORMS[plat] for plat in platform], + "perftest-options": perftest_parameters, + }, + "try_mode": "try_task_config", + } + + task_config = {"parameters": parameters, "version": 2} + if args.get("verbose"): + print("Pushing run to try...") + print(json.dumps(task_config, indent=4, sort_keys=True)) + + push_to_try("perftest", "perftest", try_task_config=task_config) + return + + from mozperftest.runner import run_tests + + run_tests(command_context, kwargs, original_parser.get_user_args(kwargs)) + + print("\nFirefox. Fast For Good.\n") + + +@Command( + "perftest-test", + category="testing", + description="Run perftest tests", + virtualenv_name="perftest-test", +) +@CommandArgument( + "tests", default=None, nargs="*", help="Tests to run. By default will run all" +) +@CommandArgument( + "-s", + "--skip-linters", + action="store_true", + default=False, + help="Skip flake8 and black", +) +@CommandArgument( + "-v", "--verbose", action="store_true", default=False, help="Verbose mode" +) +def run_tests(command_context, **kwargs): + from pathlib import Path + + from mozperftest.utils import temporary_env + + with temporary_env( + COVERAGE_RCFILE=str(Path(HERE, ".coveragerc")), RUNNING_TESTS="YES" + ): + _run_tests(command_context, **kwargs) + + +def _run_tests(command_context, **kwargs): + from pathlib import Path + + from mozperftest.utils import ON_TRY, checkout_python_script, checkout_script + + venv = command_context.virtualenv_manager + skip_linters = kwargs.get("skip_linters", False) + verbose = kwargs.get("verbose", False) + + if not ON_TRY and not skip_linters: + cmd = "./mach lint " + if verbose: + cmd += " -v" + cmd += " " + str(HERE) + if not checkout_script(cmd, label="linters", display=verbose, verbose=verbose): + raise AssertionError("Please fix your code.") + + # running pytest with coverage + # coverage is done in three steps: + # 1/ coverage erase => erase any previous coverage data + # 2/ coverage run pytest ... => run the tests and collect info + # 3/ coverage report => generate the report + tests_dir = Path(HERE, "tests").resolve() + tests = kwargs.get("tests", []) + if tests == []: + tests = str(tests_dir) + run_coverage_check = not skip_linters + else: + run_coverage_check = False + + def _get_test(test): + if Path(test).exists(): + return str(test) + return str(tests_dir / test) + + tests = " ".join([_get_test(test) for test in tests]) + + # on macOS + try we skip the coverage + # because macOS workers prevent us from installing + # packages from PyPI + if sys.platform == "darwin" and ON_TRY: + run_coverage_check = False + + options = "-xs" + if kwargs.get("verbose"): + options += "v" + + if run_coverage_check: + assert checkout_python_script( + venv, "coverage", ["erase"], label="remove old coverage data" + ) + args = ["run", "-m", "pytest", options, "--durations", "10", tests] + assert checkout_python_script( + venv, "coverage", args, label="running tests", verbose=verbose + ) + if run_coverage_check and not checkout_python_script( + venv, "coverage", ["report"], display=True + ): + raise ValueError("Coverage is too low!") + + +@Command( + "perftest-tools", + category="testing", + description="Run perftest tools", +) +def run_tools(command_context, **kwargs): + """ + Runs various perftest tools such as the side-by-side generator. + """ + print("Runs various perftest tools such as the side-by-side generator.") + + +@SubCommand( + "perftest-tools", + "side-by-side", + description="This tool can be used to generate a side-by-side visualization of two videos. " + "When using this tool, make sure that the `--test-name` is an exact match, i.e. if you are " + "comparing the task `test-linux64-shippable-qr/opt-browsertime-tp6-firefox-linkedin-e10s` " + "between two revisions, then use `browsertime-tp6-firefox-linkedin-e10s` as the suite name " + "and `test-linux64-shippable-qr/opt` as the platform.", + parser=get_perftest_tools_parser("side-by-side"), +) +def run_side_by_side(command_context, **kwargs): + from mozperftest.runner import run_tools + + kwargs["tool"] = "side-by-side" + run_tools(command_context, kwargs) + + +@SubCommand( + "perftest-tools", + "change-detector", + description="This tool can be used to determine if there are differences between two " + "revisions. It can do either direct comparisons, or searching for regressions in between " + "two revisions (with a maximum or autocomputed depth).", + parser=get_perftest_tools_parser("change-detector"), +) +def run_change_detector(command_context, **kwargs): + from mozperftest.runner import run_tools + + kwargs["tool"] = "change-detector" + run_tools(command_context, kwargs) diff --git a/python/mozperftest/mozperftest/metadata.py b/python/mozperftest/mozperftest/metadata.py new file mode 100644 index 0000000000..95864e14e2 --- /dev/null +++ b/python/mozperftest/mozperftest/metadata.py @@ -0,0 +1,44 @@ +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at http://mozilla.org/MPL/2.0/. +from collections import defaultdict + +from mozperftest.utils import MachLogger + + +class Metadata(MachLogger): + def __init__(self, mach_cmd, env, flavor, script): + MachLogger.__init__(self, mach_cmd) + self._mach_cmd = mach_cmd + self.flavor = flavor + self.options = defaultdict(dict) + self._results = [] + self._output = None + self._env = env + self.script = script + + def run_hook(self, name, *args, **kw): + # this bypasses layer restrictions on args, + # which is fine since it's a user script + return self._env.hooks.run(name, *args, **kw) + + def set_output(self, output): + self._output = output + + def get_output(self): + return self._output + + def add_result(self, result): + self._results.append(result) + + def get_results(self): + return self._results + + def clear_results(self): + self._results = [] + + def update_options(self, name, options): + self.options[name].update(options) + + def get_options(self, name): + return self.options[name] diff --git a/python/mozperftest/mozperftest/metrics/__init__.py b/python/mozperftest/mozperftest/metrics/__init__.py new file mode 100644 index 0000000000..1ca5f7e408 --- /dev/null +++ b/python/mozperftest/mozperftest/metrics/__init__.py @@ -0,0 +1,23 @@ +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at http://mozilla.org/MPL/2.0/. +from mozperftest.layers import Layers +from mozperftest.metrics.consoleoutput import ConsoleOutput +from mozperftest.metrics.notebookupload import Notebook +from mozperftest.metrics.perfboard.influx import Influx +from mozperftest.metrics.perfherder import Perfherder +from mozperftest.metrics.visualmetrics import VisualMetrics + + +def get_layers(): + return VisualMetrics, Perfherder, ConsoleOutput, Notebook, Influx + + +def pick_metrics(env, flavor, mach_cmd): + if flavor in ("desktop-browser", "mobile-browser"): + layers = get_layers() + else: + # we don't need VisualMetrics for xpcshell + layers = Perfherder, ConsoleOutput, Notebook, Influx + + return Layers(env, mach_cmd, layers) diff --git a/python/mozperftest/mozperftest/metrics/common.py b/python/mozperftest/mozperftest/metrics/common.py new file mode 100644 index 0000000000..3598cd378a --- /dev/null +++ b/python/mozperftest/mozperftest/metrics/common.py @@ -0,0 +1,356 @@ +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at http://mozilla.org/MPL/2.0/. +from collections import defaultdict +from pathlib import Path + +from mozperftest.metrics.exceptions import ( + MetricsMissingResultsError, + MetricsMultipleTransformsError, +) +from mozperftest.metrics.notebook import PerftestETL +from mozperftest.metrics.utils import metric_fields, validate_intermediate_results + +COMMON_ARGS = { + "metrics": { + "type": metric_fields, + "nargs": "*", + "default": [], + "help": "The metrics that should be retrieved from the data.", + }, + "prefix": {"type": str, "default": "", "help": "Prefix used by the output files."}, + "split-by": { + "type": str, + "default": None, + "help": "A metric name to use for splitting the data. For instance, " + "using browserScripts.pageinfo.url will split the data by the unique " + "URLs that are found.", + }, + "simplify-names": { + "action": "store_true", + "default": False, + "help": "If set, metric names will be simplified to a single word. The PerftestETL " + "combines dictionary keys by `.`, and the final key contains that value of the data. " + "That final key becomes the new name of the metric.", + }, + "simplify-exclude": { + "nargs": "*", + "default": ["statistics"], + "help": "When renaming/simplifying metric names, entries with these strings " + "will be ignored and won't get simplified. These options are only used when " + "--simplify-names is set.", + }, + "transformer": { + "type": str, + "default": None, + "help": "The path to the file containing the custom transformer, " + "or the module to import along with the class name, " + "e.g. mozperftest.test.xpcshell:XpcShellTransformer", + }, +} + + +class MetricsStorage(object): + """Holds data that is commonly used across all metrics layers. + + An instance of this class represents data for a given and output + path and prefix. + """ + + def __init__(self, output_path, prefix, logger): + self.prefix = prefix + self.output_path = output_path + self.stddata = {} + self.ptnb_config = {} + self.results = [] + self.logger = logger + + p = Path(output_path) + p.mkdir(parents=True, exist_ok=True) + + def _parse_results(self, results): + if isinstance(results, dict): + return [results] + res = [] + # XXX we need to embrace pathlib everywhere. + if isinstance(results, (str, Path)): + # Expecting a single path or a directory + p = Path(results) + if not p.exists(): + self.logger.warning("Given path does not exist: {}".format(results)) + elif p.is_dir(): + files = [f for f in p.glob("**/*.json") if not f.is_dir()] + res.extend(self._parse_results(files)) + else: + res.append(p.as_posix()) + if isinstance(results, list): + # Expecting a list of paths + for path in results: + res.extend(self._parse_results(path)) + return res + + def set_results(self, results): + """Processes and sets results provided by the metadata. + + `results` can be a path to a file or a directory. Every + file is scanned and we build a list. Alternatively, it + can be a mapping containing the results, in that case + we just use it direcly, but keep it in a list. + + :param results list/dict/str: Path, or list of paths to the data + (or the data itself in a dict) of the data to be processed. + """ + # Parse the results into files (for now) and the settings + self.results = defaultdict(lambda: defaultdict(list)) + self.settings = defaultdict(dict) + for res in results: + # Ensure that the results are valid before continuing + validate_intermediate_results(res) + + name = res["name"] + if isinstance(res["results"], dict): + # XXX Implement subtest based parsing + raise NotImplementedError( + "Subtest-based processing is not implemented yet" + ) + + # Merge all entries with the same name into one + # result, if separation is needed use unique names + self.results[name]["files"].extend(self._parse_results(res["results"])) + + suite_settings = self.settings[name] + for key, val in res.items(): + if key == "results": + continue + suite_settings[key] = val + + # Check the transform definitions + currtrfm = self.results[name]["transformer"] + if not currtrfm: + self.results[name]["transformer"] = res.get( + "transformer", "SingleJsonRetriever" + ) + elif currtrfm != res.get("transformer", "SingleJsonRetriever"): + raise MetricsMultipleTransformsError( + f"Only one transformer allowed per data name! Found multiple for {name}: " + f"{[currtrfm, res['transformer']]}" + ) + + # Get the transform options if available + self.results[name]["options"] = res.get("transformer-options", {}) + + if not self.results: + self.return_code = 1 + raise MetricsMissingResultsError("Could not find any results to process.") + + def get_standardized_data(self, group_name="firefox", transformer=None): + """Returns a parsed, standardized results data set. + + The dataset is computed once then cached unless overwrite is used. + The transformer dictates how the data will be parsed, by default it uses + a JSON transformer that flattens the dictionary while merging all the + common metrics together. + + :param group_name str: The name for this results group. + :param transformer str: The name of the transformer to use + when parsing the data. Currently, only SingleJsonRetriever + is available. + :param overwrite str: if True, we recompute the results + :return dict: Standardized notebook data with containing the + requested metrics. + """ + if self.stddata: + return self.stddata + + for data_type, data_info in self.results.items(): + tfm = transformer if transformer is not None else data_info["transformer"] + prefix = data_type + if self.prefix: + prefix = "{}-{}".format(self.prefix, data_type) + + # Primarily used to store the transformer used on the data + # so that it can also be used for generating things + # like summary values for suites, and subtests. + self.ptnb_config[data_type] = { + "output": self.output_path, + "prefix": prefix, + "custom_transformer": tfm, + "file_groups": {data_type: data_info["files"]}, + } + + ptnb = PerftestETL( + file_groups=self.ptnb_config[data_type]["file_groups"], + config=self.ptnb_config[data_type], + prefix=self.prefix, + logger=self.logger, + custom_transform=tfm, + ) + r = ptnb.process(**data_info["options"]) + self.stddata[data_type] = r["data"] + + return self.stddata + + def filtered_metrics( + self, + group_name="firefox", + transformer=None, + metrics=None, + exclude=None, + split_by=None, + simplify_names=False, + simplify_exclude=["statistics"], + ): + """Filters the metrics to only those that were requested by `metrics`. + + If metrics is Falsey (None, empty list, etc.) then no metrics + will be filtered. The entries in metrics are pattern matched with + the subtests in the standardized data (not a regular expression). + For example, if "firstPaint" is in metrics, then all subtests which + contain this string in their name will be kept. + + :param metrics list: List of metrics to keep. + :param exclude list: List of string matchers to exclude from the metrics + gathered/reported. + :param split_by str: The name of a metric to use to split up data by. + :param simplify_exclude list: List of string matchers to exclude + from the naming simplification process. + :return dict: Standardized notebook data containing the + requested metrics. + """ + results = self.get_standardized_data( + group_name=group_name, transformer=transformer + ) + if not metrics: + return results + if not exclude: + exclude = [] + if not simplify_exclude: + simplify_exclude = [] + + # Get the field to split the results by (if any) + if split_by is not None: + splitting_entry = None + for data_type, data_info in results.items(): + for res in data_info: + if split_by in res["subtest"]: + splitting_entry = res + break + if splitting_entry is not None: + split_by = defaultdict(list) + for c, entry in enumerate(splitting_entry["data"]): + split_by[entry["value"]].append(c) + + # Filter metrics + filtered = {} + for data_type, data_info in results.items(): + newresults = [] + for res in data_info: + if any([met["name"] in res["subtest"] for met in metrics]) and not any( + [met in res["subtest"] for met in exclude] + ): + res["transformer"] = self.ptnb_config[data_type][ + "custom_transformer" + ] + newresults.append(res) + filtered[data_type] = newresults + + # Simplify the filtered metric names + if simplify_names: + + def _simplify(name): + if any([met in name for met in simplify_exclude]): + return None + return name.split(".")[-1] + + self._alter_name(filtered, res, filter=_simplify) + + # Split the filtered results + if split_by is not None: + newfilt = {} + total_iterations = sum([len(inds) for _, inds in split_by.items()]) + for data_type in filtered: + if not filtered[data_type]: + # Ignore empty data types + continue + + newresults = [] + newfilt[data_type] = newresults + for split, indices in split_by.items(): + for res in filtered[data_type]: + if len(res["data"]) != total_iterations: + # Skip data that cannot be split + continue + splitres = {key: val for key, val in res.items()} + splitres["subtest"] += " " + split + splitres["data"] = [res["data"][i] for i in indices] + splitres["transformer"] = self.ptnb_config[data_type][ + "custom_transformer" + ] + + newresults.append(splitres) + + filtered = newfilt + + return filtered + + def _alter_name(self, filtered, res, filter): + previous = [] + for data_type, data_info in filtered.items(): + for res in data_info: + new = filter(res["subtest"]) + if new is None: + continue + if new in previous: + self.logger.warning( + f"Another metric which ends with `{new}` was already found. " + f"{res['subtest']} will not be simplified." + ) + continue + res["subtest"] = new + previous.append(new) + + +_metrics = {} + + +def filtered_metrics( + metadata, + path, + prefix, + group_name="firefox", + transformer=None, + metrics=None, + settings=False, + exclude=None, + split_by=None, + simplify_names=False, + simplify_exclude=["statistics"], +): + """Returns standardized data extracted from the metadata instance. + + We're caching an instance of MetricsStorage per metrics/storage + combination and compute the data only once when this function is called. + """ + key = path, prefix + if key not in _metrics: + storage = _metrics[key] = MetricsStorage(path, prefix, metadata) + storage.set_results(metadata.get_results()) + else: + storage = _metrics[key] + + results = storage.filtered_metrics( + group_name=group_name, + transformer=transformer, + metrics=metrics, + exclude=exclude, + split_by=split_by, + simplify_names=simplify_names, + simplify_exclude=simplify_exclude, + ) + + # XXX returning two different types is a problem + # in case settings is false, we should return None for it + # and always return a 2-tuple + if settings: + return results, storage.settings + return results diff --git a/python/mozperftest/mozperftest/metrics/consoleoutput.py b/python/mozperftest/mozperftest/metrics/consoleoutput.py new file mode 100644 index 0000000000..a4d544f3ef --- /dev/null +++ b/python/mozperftest/mozperftest/metrics/consoleoutput.py @@ -0,0 +1,59 @@ +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at http://mozilla.org/MPL/2.0/. +import os + +from mozperftest.layers import Layer +from mozperftest.metrics.common import COMMON_ARGS, filtered_metrics + +RESULTS_TEMPLATE = """\ + +========================================================== + Results ({}) +========================================================== + +{} + +""" + + +class ConsoleOutput(Layer): + """Output metrics in the console.""" + + name = "console" + # By default activate the console layer when running locally. + activated = "MOZ_AUTOMATION" not in os.environ + arguments = COMMON_ARGS + + def run(self, metadata): + # Get filtered metrics + results = filtered_metrics( + metadata, + self.get_arg("output"), + self.get_arg("prefix"), + metrics=self.get_arg("metrics"), + transformer=self.get_arg("transformer"), + split_by=self.get_arg("split-by"), + simplify_names=self.get_arg("simplify-names"), + simplify_exclude=self.get_arg("simplify-exclude"), + ) + + if not results: + self.warning("No results left after filtering") + return metadata + + for name, res in results.items(): + # Make a nicer view of the data + subtests = [ + "{}: {}".format(r["subtest"], [v["value"] for v in r["data"]]) + for r in res + ] + + # Output the data to console + self.info( + "\n==========================================================\n" + "= Results =\n" + "==========================================================" + "\n" + "\n".join(subtests) + "\n" + ) + return metadata diff --git a/python/mozperftest/mozperftest/metrics/exceptions.py b/python/mozperftest/mozperftest/metrics/exceptions.py new file mode 100644 index 0000000000..dcac64ded9 --- /dev/null +++ b/python/mozperftest/mozperftest/metrics/exceptions.py @@ -0,0 +1,53 @@ +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at http://mozilla.org/MPL/2.0/. + + +class MetricsMultipleTransformsError(Exception): + """Raised when more than one transformer was specified. + + This is because intermediate results with the same data + name are merged when being processed. + """ + + pass + + +class MetricsMissingResultsError(Exception): + """Raised when no results could be found after parsing the intermediate results.""" + + pass + + +class PerfherderValidDataError(Exception): + """Raised when no valid data (int/float) can be found to build perfherder blob.""" + + pass + + +class NotebookInvalidTransformError(Exception): + """Raised when an invalid custom transformer is set.""" + + pass + + +class NotebookTransformOptionsError(Exception): + """Raised when an invalid option is given to a transformer.""" + + pass + + +class NotebookTransformError(Exception): + """Raised on generic errors within the transformers.""" + + +class NotebookDuplicateTransformsError(Exception): + """Raised when a directory contains more than one transformers have the same class name.""" + + pass + + +class NotebookInvalidPathError(Exception): + """Raised when an invalid path is given.""" + + pass diff --git a/python/mozperftest/mozperftest/metrics/notebook/__init__.py b/python/mozperftest/mozperftest/metrics/notebook/__init__.py new file mode 100644 index 0000000000..8d69182664 --- /dev/null +++ b/python/mozperftest/mozperftest/metrics/notebook/__init__.py @@ -0,0 +1,7 @@ +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at http://mozilla.org/MPL/2.0/. +from .perftestetl import PerftestETL +from .perftestnotebook import PerftestNotebook + +__all__ = ["PerftestETL", "PerftestNotebook"] diff --git a/python/mozperftest/mozperftest/metrics/notebook/constant.py b/python/mozperftest/mozperftest/metrics/notebook/constant.py new file mode 100644 index 0000000000..ca40d289d4 --- /dev/null +++ b/python/mozperftest/mozperftest/metrics/notebook/constant.py @@ -0,0 +1,31 @@ +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at http://mozilla.org/MPL/2.0/. +import os +import pathlib +from types import MappingProxyType + +from .transformer import get_transformers + + +class Constant(object): + """A singleton class to store all constants.""" + + __instance = None + + def __new__(cls, *args, **kw): + if cls.__instance is None: + cls.__instance = object.__new__(cls, *args, **kw) + return cls.__instance + + def __init__(self): + self.__here = pathlib.Path(os.path.dirname(os.path.abspath(__file__))) + self.__predefined_transformers = get_transformers(self.__here / "transforms") + + @property + def predefined_transformers(self): + return MappingProxyType(self.__predefined_transformers).copy() + + @property + def here(self): + return self.__here diff --git a/python/mozperftest/mozperftest/metrics/notebook/notebook-sections/compare b/python/mozperftest/mozperftest/metrics/notebook/notebook-sections/compare new file mode 100644 index 0000000000..f6870f0246 --- /dev/null +++ b/python/mozperftest/mozperftest/metrics/notebook/notebook-sections/compare @@ -0,0 +1,85 @@ +%% md +<div id="table-wrapper"> + <table id="compareTable" border="1"></table> +</div> + +%% py +from js import document, data_object +import json +import numpy as np + +split_data = {} +dir_names = set() +subtests = set() +newest_run_name = "" +for element in data_object: + name = element["name"] + if "- newest run" in name: + newest_run_name = name + subtest = element["subtest"] + dir_names.add(name) + subtests.add(subtest) + + data = [p["value"] for p in element["data"]] + split_data.setdefault(name, {}).update({ + subtest:{ + "data":data, + "stats":{ + "Mean": np.round(np.mean(data),2), + "Median": np.median(data), + "Std. Dev.": np.round(np.std(data),2) + } + } + }) + +table = document.getElementById("compareTable") +table.innerHTML='' + +# build table head +thead = table.createTHead() +throw = thead.insertRow() +for name in ["Metrics", "Statistics"] + list(dir_names): + th = document.createElement("th") + th.appendChild(document.createTextNode(name)) + throw.appendChild(th) + +def fillRow(row, subtest, stat): + row.insertCell().appendChild(document.createTextNode(stat)) + newest_run_val = split_data[newest_run_name][subtest]["stats"][stat] + for name in dir_names: + cell_val = split_data[name][subtest]["stats"][stat] + diff = np.round((cell_val - newest_run_val * 1.0)/newest_run_val * 100, 2) + color = "red" if diff>0 else "green" + row.insertCell().innerHTML = f"{cell_val}\n(<span style=\"color:{color}\">{diff}</span>%)" + +# build table body +tbody = document.createElement("tbody") +for subtest in subtests: + row1 = tbody.insertRow() + cell0 = row1.insertCell() + cell0.appendChild(document.createTextNode(subtest)) + cell0.rowSpan = 3; + a = split_data + fillRow(row1, subtest, "Mean") + + row2 = tbody.insertRow() + fillRow(row2, subtest, "Median") + + row3 = tbody.insertRow() + fillRow(row3, subtest, "Std. Dev.") + +table.appendChild(tbody) + +%% css +#table-wrapper { + height: 600px; + overflow: auto; +} + +#table { + display: table; +} + +td { + white-space:pre-line; +} diff --git a/python/mozperftest/mozperftest/metrics/notebook/notebook-sections/header b/python/mozperftest/mozperftest/metrics/notebook/notebook-sections/header new file mode 100644 index 0000000000..1a0f659e54 --- /dev/null +++ b/python/mozperftest/mozperftest/metrics/notebook/notebook-sections/header @@ -0,0 +1,12 @@ +%% md +# Welcome to PerftestNotebook + +press the :fast_forward: button on your top left corner to run whole notebook + +%% fetch + +text: data_string = http://127.0.0.1:5000/data + +%% js + +var data_object = JSON.parse(data_string); diff --git a/python/mozperftest/mozperftest/metrics/notebook/notebook-sections/scatterplot b/python/mozperftest/mozperftest/metrics/notebook/notebook-sections/scatterplot new file mode 100644 index 0000000000..f68b540236 --- /dev/null +++ b/python/mozperftest/mozperftest/metrics/notebook/notebook-sections/scatterplot @@ -0,0 +1,15 @@ +%% py +from js import data_object +import matplotlib.pyplot as plt + +plt.figure() + +for element in data_object: + data_array = element["data"] + x = [x["xaxis"] for x in data_array] + y = [x["value"] for x in data_array] + label = element["name"]+"\n"+element["subtest"] + plt.scatter(x,y,label=label) + +plt.legend() +plt.show() diff --git a/python/mozperftest/mozperftest/metrics/notebook/perftestetl.py b/python/mozperftest/mozperftest/metrics/notebook/perftestetl.py new file mode 100644 index 0000000000..bd28d9be6d --- /dev/null +++ b/python/mozperftest/mozperftest/metrics/notebook/perftestetl.py @@ -0,0 +1,167 @@ +#!/usr/bin/env python3 +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at http://mozilla.org/MPL/2.0/. +import json +import os +import pathlib +from collections import OrderedDict + +from .constant import Constant +from .transformer import SimplePerfherderTransformer, Transformer, get_transformer + + +class PerftestETL(object): + """Controller class for the PerftestETL.""" + + def __init__( + self, + file_groups, + config, + prefix, + logger, + custom_transform=None, + sort_files=False, + ): + """Initializes PerftestETL. + + :param dict file_groups: A dict of file groupings. The value + of each of the dict entries is the name of the data that + will be produced. + :param str custom_transform: The class name of a custom transformer. + """ + self.fmt_data = {} + self.file_groups = file_groups + self.config = config + self.sort_files = sort_files + self.const = Constant() + self.prefix = prefix + self.logger = logger + + # Gather the available transformers + tfms_dict = self.const.predefined_transformers + + # XXX NOTEBOOK_PLUGIN functionality is broken at the moment. + # This code block will raise an exception if it detects it in + # the environment. + plugin_path = os.getenv("NOTEBOOK_PLUGIN") + if plugin_path: + raise Exception("NOTEBOOK_PLUGIN is currently broken.") + + # Initialize the requested transformer + if custom_transform: + # try to load it directly, and fallback to registry + try: + tfm_cls = get_transformer(custom_transform) + except ImportError: + tfm_cls = tfms_dict.get(custom_transform) + + if tfm_cls: + self.transformer = Transformer( + files=[], + custom_transformer=tfm_cls(), + logger=self.logger, + prefix=self.prefix, + ) + self.logger.info(f"Found {custom_transform} transformer", self.prefix) + else: + raise Exception(f"Could not get a {custom_transform} transformer.") + else: + self.transformer = Transformer( + files=[], + custom_transformer=SimplePerfherderTransformer(), + logger=self.logger, + prefix=self.prefix, + ) + + def parse_file_grouping(self, file_grouping): + """Handles differences in the file_grouping definitions. + + It can either be a path to a folder containing the files, a list of files, + or it can contain settings from an artifact_downloader instance. + + :param file_grouping: A file grouping entry. + :return: A list of files to process. + """ + files = [] + if isinstance(file_grouping, list): + # A list of files was provided + files = file_grouping + elif isinstance(file_grouping, dict): + # A dictionary of settings from an artifact_downloader instance + # was provided here + raise Exception( + "Artifact downloader tooling is disabled for the time being." + ) + elif isinstance(file_grouping, str): + # Assume a path to files was given + filepath = file_grouping + newf = [f.resolve().as_posix() for f in pathlib.Path(filepath).rglob("*")] + files = newf + else: + raise Exception( + "Unknown file grouping type provided here: %s" % file_grouping + ) + + if self.sort_files: + if isinstance(files, list): + files.sort() + else: + for _, file_list in files.items(): + file_list.sort() + files = OrderedDict(sorted(files.items(), key=lambda entry: entry[0])) + + if not files: + raise Exception( + "Could not find any files in this configuration: %s" % file_grouping + ) + + return files + + def parse_output(self): + # XXX Fix up this function, it should only return a directory for output + # not a directory or a file. Or remove it completely, it's not very useful. + prefix = "" if "prefix" not in self.config else self.config["prefix"] + filepath = f"{prefix}std-output.json" + + if "output" in self.config: + filepath = self.config["output"] + if os.path.isdir(filepath): + filepath = os.path.join(filepath, f"{prefix}std-output.json") + + return filepath + + def process(self, **kwargs): + """Process the file groups and return the results of the requested analyses. + + :return: All the results in a dictionary. The field names are the Analyzer + funtions that were called. + """ + fmt_data = [] + + for name, files in self.file_groups.items(): + files = self.parse_file_grouping(files) + if isinstance(files, dict): + raise Exception( + "Artifact downloader tooling is disabled for the time being." + ) + else: + # Transform the data + self.transformer.files = files + trfm_data = self.transformer.process(name, **kwargs) + + if isinstance(trfm_data, list): + fmt_data.extend(trfm_data) + else: + fmt_data.append(trfm_data) + + self.fmt_data = fmt_data + + # Write formatted data output to filepath + output_data_filepath = self.parse_output() + + print("Writing results to %s" % output_data_filepath) + with open(output_data_filepath, "w") as f: + json.dump(self.fmt_data, f, indent=4, sort_keys=True) + + return {"data": self.fmt_data, "file-output": output_data_filepath} diff --git a/python/mozperftest/mozperftest/metrics/notebook/perftestnotebook.py b/python/mozperftest/mozperftest/metrics/notebook/perftestnotebook.py new file mode 100644 index 0000000000..99c3766b42 --- /dev/null +++ b/python/mozperftest/mozperftest/metrics/notebook/perftestnotebook.py @@ -0,0 +1,79 @@ +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at http://mozilla.org/MPL/2.0/. +import json +import webbrowser +from http.server import BaseHTTPRequestHandler, HTTPServer + +from .constant import Constant + + +class PerftestNotebook(object): + """Controller class for PerftestNotebook.""" + + def __init__(self, data, logger, prefix): + """Initialize the PerftestNotebook. + + :param dict data: Standardized data, post-transformation. + """ + self.data = data + self.logger = logger + self.prefix = prefix + self.const = Constant() + + def get_notebook_section(self, func): + """Fetch notebook content based on analysis name. + + :param str func: analysis or notebook section name + """ + template_path = self.const.here / "notebook-sections" / func + if not template_path.exists(): + self.logger.warning( + f"Could not find the notebook-section called {func}", self.prefix + ) + return "" + with template_path.open() as f: + return f.read() + + def post_to_iodide(self, analysis=None, start_local_server=True): + """Build notebook and post it to iodide. + + :param list analysis: notebook section names, analysis to perform in iodide + """ + data = self.data + notebook_sections = "" + + template_header_path = self.const.here / "notebook-sections" / "header" + with template_header_path.open() as f: + notebook_sections += f.read() + + if analysis: + for func in analysis: + notebook_sections += self.get_notebook_section(func) + + template_upload_file_path = self.const.here / "template_upload_file.html" + with template_upload_file_path.open() as f: + html = f.read().replace("replace_me", repr(notebook_sections)) + + upload_file_path = self.const.here / "upload_file.html" + with upload_file_path.open("w") as f: + f.write(html) + + # set up local server. Iodide will fetch data from localhost:5000/data + class DataRequestHandler(BaseHTTPRequestHandler): + def do_GET(self): + if self.path == "/data": + self.send_response(200) + self.send_header("Content-type", "application/json") + self.send_header("Access-Control-Allow-Origin", "*") + self.end_headers() + self.wfile.write(bytes(json.dumps(data).encode("utf-8"))) + + PORT_NUMBER = 5000 + server = HTTPServer(("", PORT_NUMBER), DataRequestHandler) + if start_local_server: + webbrowser.open_new_tab(str(upload_file_path)) + try: + server.serve_forever() + finally: + server.server_close() diff --git a/python/mozperftest/mozperftest/metrics/notebook/template_upload_file.html b/python/mozperftest/mozperftest/metrics/notebook/template_upload_file.html new file mode 100644 index 0000000000..2400be4e87 --- /dev/null +++ b/python/mozperftest/mozperftest/metrics/notebook/template_upload_file.html @@ -0,0 +1,39 @@ +<!DOCTYPE html> +<!-- This Source Code Form is subject to the terms of the Mozilla Public + - License, v. 2.0. If a copy of the MPL was not distributed with this + - file, You can obtain one at http://mozilla.org/MPL/2.0/. --> +<html> + <body> + Redirecting to Iodide... + <script> + function post(path, params, method='post') { + const form = document.createElement('form'); + form.method = method; + form.action = path; + form.id = 'uploadform'; + + for (const key in params) { + if (params.hasOwnProperty(key)) { + const textarea = document.createElement('textarea'); + textarea.name = key; + textarea.value = params[key]; + textarea.style.display = "none"; + form.appendChild(textarea); + } + } + + + document.body.appendChild(form); + form.submit(); + } + + // TODO Need to escape all `'`, + // Otherwsie, this will result in javascript failures. + var template = replace_me + + // Create a form object, and send it + // after release, change back to https://alpha.iodide.io/from-template/ + post("https://alpha.iodide.io/from-template/", {"iomd": template}) + </script> + </body> +</html> diff --git a/python/mozperftest/mozperftest/metrics/notebook/transformer.py b/python/mozperftest/mozperftest/metrics/notebook/transformer.py new file mode 100644 index 0000000000..b4596d7ca6 --- /dev/null +++ b/python/mozperftest/mozperftest/metrics/notebook/transformer.py @@ -0,0 +1,228 @@ +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at http://mozilla.org/MPL/2.0/. +import importlib.util +import inspect +import json +import pathlib + +from jsonschema import validate + +from mozperftest.metrics.exceptions import ( + NotebookDuplicateTransformsError, + NotebookInvalidPathError, + NotebookInvalidTransformError, +) +from mozperftest.runner import HERE +from mozperftest.utils import load_class + + +class Transformer(object): + """Abstract class for data transformers.""" + + def __init__(self, files=None, custom_transformer=None, logger=None, prefix=None): + """Initialize the transformer with files. + + :param list files: A list of files containing data to transform. + :param object custom_transformer: A custom transformer instance. + Must implement `transform` and `merge` methods. + """ + self._files = files + self.logger = logger + self.prefix = prefix + + if custom_transformer: + valid = ( + hasattr(custom_transformer, "transform") + and hasattr(custom_transformer, "merge") + and callable(custom_transformer.transform) + and callable(custom_transformer.merge) + ) + + if not valid: + raise NotebookInvalidTransformError( + "The custom transformer must contain `transform` and `merge` methods." + ) + + self._custom_transformer = custom_transformer + + with pathlib.Path(HERE, "schemas", "transformer_schema.json").open() as f: + self.schema = json.load(f) + + @property + def files(self): + return self._files + + @files.setter + def files(self, val): + if not isinstance(val, list): + self.logger.warning( + "`files` must be a list, got %s" % type(val), self.prefix + ) + return + self._files = val + + @property + def custom_transformer(self): + return self._custom_transformer + + def open_data(self, file): + """Opens a file of data. + + If it's not a JSON file, then the data + will be opened as a text file. + + :param str file: Path to the data file. + :return: Data contained in the file. + """ + with open(file) as f: + if file.endswith(".json"): + return json.load(f) + return f.readlines() + + def process(self, name, **kwargs): + """Process all the known data into a merged, and standardized data format. + + :param str name: Name of the merged data. + :return dict: Merged data. + """ + trfmdata = [] + + for file in self.files: + data = {} + + # Open data + try: + if hasattr(self._custom_transformer, "open_data"): + data = self._custom_transformer.open_data(file) + else: + data = self.open_data(file) + except Exception as e: + self.logger.warning( + "Failed to open file %s, skipping" % file, self.prefix + ) + self.logger.warning("%s %s" % (e.__class__.__name__, e), self.prefix) + + # Transform data + try: + data = self._custom_transformer.transform(data, **kwargs) + if not isinstance(data, list): + data = [data] + for entry in data: + for ele in entry["data"]: + if "file" not in ele: + ele.update({"file": file}) + trfmdata.extend(data) + except Exception as e: + self.logger.warning( + "Failed to transform file %s, skipping" % file, self.prefix + ) + self.logger.warning("%s %s" % (e.__class__.__name__, e), self.prefix) + + merged = self._custom_transformer.merge(trfmdata) + + if isinstance(merged, dict): + merged["name"] = name + else: + for e in merged: + e["name"] = name + + validate(instance=merged, schema=self.schema) + return merged + + +class SimplePerfherderTransformer: + """Transforms perfherder data into the standardized data format.""" + + entry_number = 0 + + def transform(self, data): + self.entry_number += 1 + return { + "data": [{"value": data["suites"][0]["value"], "xaxis": self.entry_number}] + } + + def merge(self, sde): + merged = {"data": []} + for entry in sde: + if isinstance(entry["data"], list): + merged["data"].extend(entry["data"]) + else: + merged["data"].append(entry["data"]) + + self.entry_number = 0 + return merged + + +def get_transformer(path, ret_members=False): + """This function returns a Transformer class with the given path. + + :param str path: The path points to the custom transformer. + :param bool ret_members: If true then return inspect.getmembers(). + :return Transformer if not ret_members else inspect.getmembers(). + """ + file = pathlib.Path(path) + + if file.suffix != ".py": + return load_class(path) + + if not file.exists(): + raise NotebookInvalidPathError(f"The path {path} does not exist.") + + # Importing a source file directly + spec = importlib.util.spec_from_file_location(name=file.name, location=path) + module = importlib.util.module_from_spec(spec) + spec.loader.exec_module(module) + + members = inspect.getmembers( + module, + lambda c: inspect.isclass(c) + and hasattr(c, "transform") + and hasattr(c, "merge") + and callable(c.transform) + and callable(c.merge), + ) + + if not members and not ret_members: + raise NotebookInvalidTransformError( + f"The path {path} was found but it was not a valid transformer." + ) + + return members if ret_members else members[0][-1] + + +def get_transformers(dirpath=None): + """This function returns a dict of transformers under the given path. + + If more than one transformers have the same class name, an exception will be raised. + + :param pathlib.Path dirpath: Path to a directory containing the transformers. + :return dict: {"Transformer class name": Transformer class}. + """ + + ret = {} + + if not dirpath.exists(): + raise NotebookInvalidPathError(f"The path {dirpath.as_posix()} does not exist.") + + if not dirpath.is_dir(): + raise NotebookInvalidPathError( + f"Path given is not a directory: {dirpath.as_posix()}" + ) + + tfm_files = list(dirpath.glob("*.py")) + importlib.machinery.SOURCE_SUFFIXES.append("") + + for file in tfm_files: + members = get_transformer(file.resolve().as_posix(), True) + + for name, tfm_class in members: + if name in ret: + raise NotebookDuplicateTransformsError( + f"Duplicated transformer {name} " + + f"is found in the directory {dirpath.as_posix()}." + + "Please define each transformer class with a unique class name.", + ) + ret.update({name: tfm_class}) + + return ret diff --git a/python/mozperftest/mozperftest/metrics/notebook/transforms/__init__.py b/python/mozperftest/mozperftest/metrics/notebook/transforms/__init__.py new file mode 100644 index 0000000000..e69de29bb2 --- /dev/null +++ b/python/mozperftest/mozperftest/metrics/notebook/transforms/__init__.py diff --git a/python/mozperftest/mozperftest/metrics/notebook/transforms/logcattime.py b/python/mozperftest/mozperftest/metrics/notebook/transforms/logcattime.py new file mode 100644 index 0000000000..184b327540 --- /dev/null +++ b/python/mozperftest/mozperftest/metrics/notebook/transforms/logcattime.py @@ -0,0 +1,121 @@ +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at http://mozilla.org/MPL/2.0/. +import re +from datetime import datetime, timedelta + +from mozperftest.metrics.exceptions import ( + NotebookTransformError, + NotebookTransformOptionsError, +) + +TIME_MATCHER = re.compile(r"(\s+[\d.:]+\s+)") + + +class LogCatTimeTransformer: + """Used for parsing times/durations from logcat logs.""" + + def open_data(self, file): + with open(file) as f: + return f.read() + + def _get_duration(self, startline, endline): + """Parse duration between two logcat lines. + + Expecting lines with a prefix like: + 05-26 11:45:41.226 ... + + We only parse the hours, minutes, seconds, and milliseconds here + because we have no use for the days and other times. + """ + match = TIME_MATCHER.search(startline) + if not match: + return None + start = match.group(1).strip() + + match = TIME_MATCHER.search(endline) + if not match: + return None + end = match.group(1).strip() + + sdt = datetime.strptime(start, "%H:%M:%S.%f") + edt = datetime.strptime(end, "%H:%M:%S.%f") + + # If the ending is less than the start, we rolled into a new + # day, so we add 1 day to the end time to handle this + if sdt > edt: + edt += timedelta(1) + + return (edt - sdt).total_seconds() * 1000 + + def _parse_logcat(self, logcat, first_ts, second_ts=None, processor=None): + """Parse data from logcat lines. + + If two regexes are provided (first_ts, and second_ts), then the elapsed + time between those lines will be measured. Otherwise, if only `first_ts` + is defined then, we expect a number as the first group from the + match. Optionally, a `processor` function can be provided to process + all the groups that were obtained from the match, allowing users to + customize what the result is. + + :param list logcat: The logcat lines to parse. + :param str first_ts: Regular expression for the first matching line. + :param str second_ts: Regular expression for the second matching line. + :param func processor: Function to process the groups from the first_ts + regular expression. + :return list: Returns a list of durations/times parsed. + """ + full_re = r"(" + first_ts + r"\n)" + if second_ts: + full_re += r".+(?:\n.+)+?(\n" + second_ts + r"\n)" + + durations = [] + for match in re.findall(full_re, logcat, re.MULTILINE): + if isinstance(match, str): + raise NotebookTransformOptionsError( + "Only one regex was provided, and it has no groups to process." + ) + + if second_ts is not None: + if len(match) != 2: + raise NotebookTransformError( + "More than 2 groups found. It's unclear which " + "to use for calculating the durations." + ) + val = self._get_duration(match[0], match[1]) + elif processor is not None: + # Ignore the first match (that is the full line) + val = processor(match[1:]) + else: + val = match[1] + + if val is not None: + durations.append(float(val)) + + return durations + + def transform(self, data, **kwargs): + alltimes = self._parse_logcat( + data, + kwargs.get("first-timestamp"), + second_ts=kwargs.get("second-timestamp"), + processor=kwargs.get("processor"), + ) + subtest = kwargs.get("transform-subtest-name") + return [ + { + "data": [{"value": val, "xaxis": c} for c, val in enumerate(alltimes)], + "subtest": subtest if subtest else "logcat-metric", + } + ] + + def merge(self, sde): + grouped_data = {} + + for entry in sde: + subtest = entry["subtest"] + data = grouped_data.get(subtest, []) + data.extend(entry["data"]) + grouped_data.update({subtest: data}) + + return [{"data": v, "subtest": k} for k, v in grouped_data.items()] diff --git a/python/mozperftest/mozperftest/metrics/notebook/transforms/single_json.py b/python/mozperftest/mozperftest/metrics/notebook/transforms/single_json.py new file mode 100644 index 0000000000..375615fb23 --- /dev/null +++ b/python/mozperftest/mozperftest/metrics/notebook/transforms/single_json.py @@ -0,0 +1,56 @@ +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at http://mozilla.org/MPL/2.0/. +from mozperftest.metrics.notebook.utilities import flat + + +class SingleJsonRetriever: + """Transforms perfherder data into the standardized data format.""" + + entry_number = 0 + + def transform(self, data): + self.entry_number += 1 + + # flat(data, ()) returns a dict that have one key per dictionary path + # in the original data. + return [ + { + "data": [{"value": i, "xaxis": self.entry_number} for i in v], + "subtest": k, + } + for k, v in flat(data, ()).items() + ] + + def merge(self, sde): + grouped_data = {} + for entry in sde: + subtest = entry["subtest"] + data = grouped_data.get(subtest, []) + data.extend(entry["data"]) + grouped_data.update({subtest: data}) + + merged_data = [{"data": v, "subtest": k} for k, v in grouped_data.items()] + + self.entry_number = 0 + return merged_data + + def summary(self, suite): + """Summarize a suite of perfherder data into a single value. + + Returning None means that there's no summary. Otherwise, an integer + or float must be returned. + + Only available in the Perfherder layer. + """ + return None + + def subtest_summary(self, subtest): + """Summarize a set of replicates for a given subtest. + + By default, it returns a None so we fall back to using the + average of the replicates which is the default. + + Only available in the Perfherder layer. + """ + return None diff --git a/python/mozperftest/mozperftest/metrics/notebook/utilities.py b/python/mozperftest/mozperftest/metrics/notebook/utilities.py new file mode 100644 index 0000000000..7fd97fa3fa --- /dev/null +++ b/python/mozperftest/mozperftest/metrics/notebook/utilities.py @@ -0,0 +1,63 @@ +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at http://mozilla.org/MPL/2.0/. +from collections.abc import Iterable + + +def flat(data, parent_dir): + """ + Converts a dictionary with nested entries like this + { + "dict1": { + "dict2": { + "key1": value1, + "key2": value2, + ... + }, + ... + }, + ... + "dict3": { + "key3": value3, + "key4": value4, + ... + } + ... + } + + to a "flattened" dictionary like this that has no nested entries: + { + "dict1.dict2.key1": value1, + "dict1.dict2.key2": value2, + ... + "dict3.key3": value3, + "dict3.key4": value4, + ... + } + + :param Iterable data : json data. + :param tuple parent_dir: json fields. + + :return dict: {subtest: value} + """ + result = {} + + if not data: + return result + + if isinstance(data, list): + for item in data: + for k, v in flat(item, parent_dir).items(): + result.setdefault(k, []).extend(v) + + if isinstance(data, dict): + for k, v in data.items(): + current_dir = parent_dir + (k,) + subtest = ".".join(current_dir) + if isinstance(v, Iterable) and not isinstance(v, str): + for x, y in flat(v, current_dir).items(): + result.setdefault(x, []).extend(y) + elif v or v == 0: + result.setdefault(subtest, []).append(v) + + return result diff --git a/python/mozperftest/mozperftest/metrics/notebookupload.py b/python/mozperftest/mozperftest/metrics/notebookupload.py new file mode 100644 index 0000000000..ec53af2b7f --- /dev/null +++ b/python/mozperftest/mozperftest/metrics/notebookupload.py @@ -0,0 +1,115 @@ +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at http://mozilla.org/MPL/2.0/. +import pathlib + +from mozperftest.layers import Layer +from mozperftest.metrics.common import COMMON_ARGS, filtered_metrics +from mozperftest.metrics.notebook import PerftestNotebook +from mozperftest.metrics.utils import is_number + + +class Notebook(Layer): + """Post standarized data to iodide and run analysis.""" + + name = "notebook" + activated = False + + arguments = COMMON_ARGS + arguments.update( + { + "analysis": { + "nargs": "*", + "default": [], + "help": "List of analyses to run in Iodide.", + }, + "analyze-strings": { + "action": "store_true", + "default": False, + "help": ( + "If set, strings won't be filtered out of the results to analyze in Iodide." + ), + }, + "no-server": { + "action": "store_true", + "default": False, + "help": "If set, the data won't be opened in Iodide.", + }, + "compare-to": { + "nargs": "*", + "default": [], + "help": ( + "Compare the results from this test to the historical data in the folder(s) " + "specified through this option. Only JSON data can be processed for the " + "moment. Each folder containing those JSONs is considered as a distinct " + "data point to compare with the newest run." + ), + }, + "stats": { + "action": "store_true", + "default": False, + "help": "If set, browsertime statistics will be reported.", + }, + } + ) + + def run(self, metadata): + exclusions = None + if not self.get_arg("stats"): + exclusions = ["statistics."] + + for result in metadata.get_results(): + result["name"] += "- newest run" + + analysis = self.get_arg("analysis") + dir_list = self.get_arg("compare-to") + if dir_list: + analysis.append("compare") + for directory in dir_list: + dirpath = pathlib.Path(directory) + if not dirpath.exists(): + raise Exception(f"{dirpath} does not exist.") + if not dirpath.is_dir(): + raise Exception(f"{dirpath} is not a directory") + # TODO: Handle more than just JSON data. + for jsonfile in dirpath.rglob("*.json"): + metadata.add_result( + { + "results": str(jsonfile.resolve()), + "name": jsonfile.parent.name, + } + ) + + results = filtered_metrics( + metadata, + self.get_arg("output"), + self.get_arg("prefix"), + metrics=self.get_arg("metrics"), + transformer=self.get_arg("transformer"), + exclude=exclusions, + split_by=self.get_arg("split-by"), + simplify_names=self.get_arg("simplify-names"), + simplify_exclude=self.get_arg("simplify-exclude"), + ) + + if not results: + self.warning("No results left after filtering") + return metadata + + data_to_post = [] + for name, res in results.items(): + for r in res: + val = r["data"][0]["value"] + if is_number(val): + data_to_post.append(r) + elif self.get_arg("analyze-strings"): + data_to_post.append(r) + + self.ptnb = PerftestNotebook( + data=data_to_post, logger=metadata, prefix=self.get_arg("prefix") + ) + self.ptnb.post_to_iodide( + analysis, start_local_server=not self.get_arg("no-server") + ) + + return metadata diff --git a/python/mozperftest/mozperftest/metrics/perfboard/__init__.py b/python/mozperftest/mozperftest/metrics/perfboard/__init__.py new file mode 100644 index 0000000000..6fbe8159b2 --- /dev/null +++ b/python/mozperftest/mozperftest/metrics/perfboard/__init__.py @@ -0,0 +1,3 @@ +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at http://mozilla.org/MPL/2.0/. diff --git a/python/mozperftest/mozperftest/metrics/perfboard/dashboard.json b/python/mozperftest/mozperftest/metrics/perfboard/dashboard.json new file mode 100644 index 0000000000..804b880b55 --- /dev/null +++ b/python/mozperftest/mozperftest/metrics/perfboard/dashboard.json @@ -0,0 +1,56 @@ +{ + "annotations": { + "list": [ + { + "builtIn": 1, + "datasource": "-- Grafana --", + "enable": true, + "hide": true, + "iconColor": "rgba(0, 211, 255, 1)", + "name": "Annotations & Alerts", + "type": "dashboard" + } + ] + }, + "editable": true, + "gnetId": null, + "graphTooltip": 0, + "id": 1, + "links": [], + "panels": [], + "refresh": false, + "schemaVersion": 22, + "style": "dark", + "tags": [ + "component" + ], + "templating": { + "list": [] + }, + "time": { + "from": "now-30d", + "to": "now" + }, + "timepicker": { + "refresh_intervals": [ + "5s", + "10s", + "30s", + "1m", + "5m", + "15m", + "30m", + "1h", + "2h", + "1d" + ] + }, + "timezone": "", + "title": "?", + "uid": null, + "id": null, + "variables": { + "list": [] + }, + "version": 13 +} diff --git a/python/mozperftest/mozperftest/metrics/perfboard/grafana.py b/python/mozperftest/mozperftest/metrics/perfboard/grafana.py new file mode 100644 index 0000000000..1fa76ea991 --- /dev/null +++ b/python/mozperftest/mozperftest/metrics/perfboard/grafana.py @@ -0,0 +1,87 @@ +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at http://mozilla.org/MPL/2.0/. +import json +import os + +from grafana_api.grafana_face import GrafanaFace + +HERE = os.path.dirname(__file__) + + +with open(os.path.join(HERE, "dashboard.json")) as f: + template = json.loads(f.read()) + +with open(os.path.join(HERE, "panel.json")) as f: + panel_template = json.loads(f.read()) + +with open(os.path.join(HERE, "target.json")) as f: + target_template = json.loads(f.read()) + + +class Grafana: + def __init__(self, layer, key, host="perfboard.dev.mozaws.net", port=3000): + self.client = GrafanaFace(host=host, port=port, auth=key) + self.layer = layer + + def get_dashboard(self, title): + existing = self.client.search.search_dashboards(tag="component") + existing = dict( + [(dashboard["title"].lower(), dashboard["uid"]) for dashboard in existing] + ) + if title in existing: + return self.client.dashboard.get_dashboard(existing[title]) + self.layer.debug(f"Creating dashboard {title}") + d = dict(template) + d["title"] = title.capitalize() + res = self.client.dashboard.update_dashboard( + dashboard={"dashboard": d, "folderId": 0, "overwrite": False} + ) + + return self.client.dashboard.get_dashboard(res["uid"]) + + def _add_panel(self, dashboard, panel_title, metrics): + found = None + ids = [] + for panel in dashboard["dashboard"]["panels"]: + ids.append(panel["id"]) + + if panel["title"] == panel_title: + found = panel + + ids.sort() + + need_update = False + if found is None: + # create the panel + panel = panel_template + panel["title"] = panel_title + if ids != []: + panel["id"] = ids[-1] + 1 + else: + panel["id"] = 1 + self.layer.debug("Creating panel") + dashboard["dashboard"]["panels"].append(panel) + need_update = True + else: + self.layer.debug("Panel exists") + panel = found + + # check the metrics + existing = [target["measurement"] for target in panel["targets"]] + + for metric in metrics: + if metric in existing: + continue + m = dict(target_template) + m["measurement"] = metric + panel["targets"].append(m) + need_update = True + + if need_update: + self.layer.debug("Updating dashboard") + self.client.dashboard.update_dashboard(dashboard=dashboard) + + def add_panel(self, dashboard, panel, metrics): + dashboard = self.get_dashboard(dashboard) + self._add_panel(dashboard, panel, metrics) diff --git a/python/mozperftest/mozperftest/metrics/perfboard/influx.py b/python/mozperftest/mozperftest/metrics/perfboard/influx.py new file mode 100644 index 0000000000..4f7e27072c --- /dev/null +++ b/python/mozperftest/mozperftest/metrics/perfboard/influx.py @@ -0,0 +1,188 @@ +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at http://mozilla.org/MPL/2.0/. +import datetime +import statistics +from collections import defaultdict + +from mozperftest import utils +from mozperftest.layers import Layer +from mozperftest.metrics.common import COMMON_ARGS, filtered_metrics +from mozperftest.utils import get_tc_secret, install_package + + +class Influx(Layer): + """Sends the metrics to an InfluxDB server""" + + name = "perfboard" + activated = False + arguments = COMMON_ARGS + arguments.update( + { + "dashboard": { + "type": str, + "default": None, + "help": "Name of the dashboard - defaults to the script" + " `component` metadata. When not set, falls back to" + " `perftest`", + }, + "influx-host": { + "type": str, + "default": "perfboard.dev.mozaws.net", + }, + "influx-user": { + "type": str, + "default": "admin", + }, + "influx-port": { + "type": int, + "default": 8086, + }, + "influx-password": { + "type": str, + "default": None, + }, + "influx-db": { + "type": str, + "default": "perf", + }, + "grafana-host": { + "type": str, + "default": "perfboard.dev.mozaws.net", + }, + "grafana-key": { + "type": str, + "default": None, + }, + "grafana-port": { + "type": int, + "default": 3000, + }, + } + ) + + def _setup(self): + venv = self.mach_cmd.virtualenv_manager + try: + from influxdb import InfluxDBClient + except ImportError: + install_package(venv, "influxdb", ignore_failure=False) + from influxdb import InfluxDBClient + + try: + from mozperftest.metrics.perfboard.grafana import Grafana + except ImportError: + install_package(venv, "grafana_api", ignore_failure=False) + from mozperftest.metrics.perfboard.grafana import Grafana + + if utils.ON_TRY: + secret = get_tc_secret() + i_host = secret["influx_host"] + i_port = secret["influx_port"] + i_user = secret["influx_user"] + i_password = secret["influx_password"] + i_dbname = secret["influx_db"] + g_key = secret["grafana_key"] + g_host = secret["grafana_host"] + g_port = secret["grafana_port"] + else: + i_host = self.get_arg("influx-host") + i_port = self.get_arg("influx-port") + i_user = self.get_arg("influx-user") + i_password = self.get_arg("influx-password") + if i_password is None: + raise Exception("You need to set --perfboard-influx-password") + i_dbname = self.get_arg("influx-db") + g_key = self.get_arg("grafana-key") + if g_key is None: + raise Exception("You need to set --perfboard-grafana-key") + g_host = self.get_arg("grafana-host") + g_port = self.get_arg("grafana-port") + + self.client = InfluxDBClient(i_host, i_port, i_user, i_password, i_dbname) + # this will error out if the server is unreachable + self.client.ping() + self.grafana = Grafana(self, g_key, g_host, g_port) + + def _build_point(self, name, component, values, date): + value = statistics.mean(values) + return { + "measurement": name, + "tags": { + "component": component, + }, + "time": date, + "fields": {"Float_value": float(value)}, + } + + def run(self, metadata): + when = datetime.datetime.utcnow() + date = when.isoformat() + metrics = self.get_arg("metrics") + + # Get filtered metrics + results = filtered_metrics( + metadata, + self.get_arg("output"), + self.get_arg("prefix"), + metrics=metrics, + transformer=self.get_arg("transformer"), + split_by=self.get_arg("split-by"), + simplify_names=self.get_arg("simplify-names"), + simplify_exclude=self.get_arg("simplify-exclude"), + ) + + if not results: + self.warning("No results left after filtering") + return metadata + + # there's one thing we don't do yet is getting a timestamp + # for each measure that is happening in browsertime or xpcshell + # if we had it, we could send all 13/25 samples, each one with + # their timestamp, to InfluxDB, and let Grafana handle the + # mean() or median() part. + # + # Until we have this, here we convert the series to + # a single value and timestamp + self._setup() + component = self.get_arg("dashboard") + if component is None: + component = metadata.script.get("component", "perftest") + + data = defaultdict(list) + for name, res in results.items(): + for line in res: + if "subtest" not in line: + continue + metric_name = line["subtest"] + short_name = metric_name.split(".")[-1] + short_name = short_name.lower() + if metrics and not any( + [m.lower().startswith(short_name.lower()) for m in metrics] + ): + continue + values = [v["value"] for v in line["data"]] + data[short_name].extend(values) + + if not data: + self.warning("No results left after filtering") + return data + + points = [] + for metric_name, values in data.items(): + try: + point = self._build_point(metric_name, component, values, date) + except TypeError: + continue + points.append(point) + + self.info("Sending data to InfluxDB") + self.client.write_points(points) + + # making sure we expose it in Grafana + test_name = self.get_arg("tests")[0] + test_name = test_name.split("/")[-1] + for metric_name in data: + self.grafana.add_panel(component, test_name, metric_name) + + return metadata diff --git a/python/mozperftest/mozperftest/metrics/perfboard/panel.json b/python/mozperftest/mozperftest/metrics/perfboard/panel.json new file mode 100644 index 0000000000..61deeaad8f --- /dev/null +++ b/python/mozperftest/mozperftest/metrics/perfboard/panel.json @@ -0,0 +1,81 @@ + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": null, + "fill": 1, + "fillGradient": 0, + "gridPos": { + "h": 10, + "w": 11, + "x": 0, + "y": 0 + }, + "hiddenSeries": false, + "legend": { + "avg": false, + "current": false, + "max": false, + "min": false, + "show": true, + "total": false, + "values": false + }, + "lines": true, + "linewidth": 1, + "nullPointMode": "null", + "options": { + "dataLinks": [] + }, + "percentage": false, + "pointradius": 2, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + ], + "thresholds": [], + "timeFrom": null, + "timeRegions": [], + "timeShift": null, + "title": "BBC Link perftest", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "buckets": null, + "mode": "time", + "name": null, + "show": true, + "values": [] + }, + "yaxes": [ + { + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": true + }, + { + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": true + } + ], + "yaxis": { + "align": false, + "alignLevel": null + } + } diff --git a/python/mozperftest/mozperftest/metrics/perfboard/target.json b/python/mozperftest/mozperftest/metrics/perfboard/target.json new file mode 100644 index 0000000000..ad96488840 --- /dev/null +++ b/python/mozperftest/mozperftest/metrics/perfboard/target.json @@ -0,0 +1,20 @@ + +{ + "groupBy": [], + "measurement": "rumSpeedIndex", + "orderByTime": "ASC", + "policy": "default", + "refId": "A", + "resultFormat": "time_series", + "select": [ + [ + { + "params": [ + "Float_value" + ], + "type": "field" + } + ] + ], + "tags": [] + } diff --git a/python/mozperftest/mozperftest/metrics/perfherder.py b/python/mozperftest/mozperftest/metrics/perfherder.py new file mode 100644 index 0000000000..0521e2a205 --- /dev/null +++ b/python/mozperftest/mozperftest/metrics/perfherder.py @@ -0,0 +1,374 @@ +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at http://mozilla.org/MPL/2.0/. +import json +import os +import pathlib +import statistics +import sys + +import jsonschema + +from mozperftest.layers import Layer +from mozperftest.metrics.common import COMMON_ARGS, filtered_metrics +from mozperftest.metrics.exceptions import PerfherderValidDataError +from mozperftest.metrics.notebook.constant import Constant +from mozperftest.metrics.notebook.transformer import get_transformer +from mozperftest.metrics.utils import has_callable_method, is_number, write_json +from mozperftest.utils import strtobool + +PERFHERDER_SCHEMA = pathlib.Path( + "testing", "mozharness", "external_tools", "performance-artifact-schema.json" +) + + +class Perfherder(Layer): + """Output data in the perfherder format.""" + + name = "perfherder" + activated = False + + arguments = COMMON_ARGS + arguments.update( + { + "app": { + "type": str, + "default": "firefox", + "choices": [ + "firefox", + "chrome-m", + "chrome", + "chromium", + "fennec", + "geckoview", + "fenix", + "refbrow", + ], + "help": ( + "Shorthand name of application that is " + "being tested (used in perfherder data)." + ), + }, + "stats": { + "action": "store_true", + "default": False, + "help": "If set, browsertime statistics will be reported.", + }, + "timestamp": { + "type": float, + "default": None, + "help": ( + "Timestamp to use for the perfherder data. Can be the " + "current date or a past date if needed." + ), + }, + } + ) + + def run(self, metadata): + """Processes the given results into a perfherder-formatted data blob. + + If the `--perfherder` flag isn't provided, then the + results won't be processed into a perfherder-data blob. If the + flavor is unknown to us, then we assume that it comes from + browsertime. + + XXX If needed, make a way to do flavor-specific processing + + :param results list/dict/str: Results to process. + :param perfherder bool: True if results should be processed + into a perfherder-data blob. + :param flavor str: The flavor that is being processed. + """ + prefix = self.get_arg("prefix") + output = self.get_arg("output") + + # XXX Make an arugment for exclusions from metrics + # (or go directly to regex's for metrics) + exclusions = None + if not self.get_arg("stats"): + exclusions = ["statistics."] + + # Get filtered metrics + metrics = self.get_arg("metrics") + results, fullsettings = filtered_metrics( + metadata, + output, + prefix, + metrics=metrics, + transformer=self.get_arg("transformer"), + settings=True, + exclude=exclusions, + split_by=self.get_arg("split-by"), + simplify_names=self.get_arg("simplify-names"), + simplify_exclude=self.get_arg("simplify-exclude"), + ) + + if not any([results[name] for name in results]): + self.warning("No results left after filtering") + return metadata + + # XXX Add version info into this data + app_info = {"name": self.get_arg("app", default="firefox")} + + # converting the metrics list into a mapping where + # keys are the metrics nane + if metrics is not None: + metrics = dict([(m["name"], m) for m in metrics]) + else: + metrics = {} + + all_perfherder_data = None + for name, res in results.items(): + settings = dict(fullsettings[name]) + # updating the settings with values provided in metrics, if any + if name in metrics: + settings.update(metrics[name]) + + # XXX Instead of just passing replicates here, we should build + # up a partial perfherder data blob (with options) and subtest + # overall values. + subtests = {} + for r in res: + vals = [v["value"] for v in r["data"] if is_number(v["value"])] + if vals: + subtests[r["subtest"]] = vals + + perfherder_data = self._build_blob( + subtests, + name=name, + extra_options=settings.get("extraOptions"), + should_alert=strtobool(settings.get("shouldAlert", False)), + application=app_info, + alert_threshold=float(settings.get("alertThreshold", 2.0)), + lower_is_better=strtobool(settings.get("lowerIsBetter", True)), + unit=settings.get("unit", "ms"), + summary=settings.get("value"), + framework=settings.get("framework"), + metrics_info=metrics, + transformer=res[0].get("transformer", None), + ) + + if all_perfherder_data is None: + all_perfherder_data = perfherder_data + else: + all_perfherder_data["suites"].extend(perfherder_data["suites"]) + + if prefix: + # If a prefix was given, store it in the perfherder data as well + all_perfherder_data["prefix"] = prefix + + timestamp = self.get_arg("timestamp") + if timestamp is not None: + all_perfherder_data["pushTimestamp"] = timestamp + + # Validate the final perfherder data blob + with pathlib.Path(metadata._mach_cmd.topsrcdir, PERFHERDER_SCHEMA).open() as f: + schema = json.load(f) + jsonschema.validate(all_perfherder_data, schema) + + file = "perfherder-data.json" + if prefix: + file = "{}-{}".format(prefix, file) + self.info("Writing perfherder results to {}".format(os.path.join(output, file))) + + # XXX "suites" key error occurs when using self.info so a print + # is being done for now. + + # print() will produce a BlockingIOError on large outputs, so we use + # sys.stdout + sys.stdout.write("PERFHERDER_DATA: ") + json.dump(all_perfherder_data, sys.stdout) + sys.stdout.write("\n") + sys.stdout.flush() + + metadata.set_output(write_json(all_perfherder_data, output, file)) + return metadata + + def _build_blob( + self, + subtests, + name="browsertime", + test_type="pageload", + extra_options=None, + should_alert=False, + subtest_should_alert=None, + suiteshould_alert=False, + framework=None, + application=None, + alert_threshold=2.0, + lower_is_better=True, + unit="ms", + summary=None, + metrics_info=None, + transformer=None, + ): + """Build a PerfHerder data blob from the given subtests. + + NOTE: This is a WIP, see the many TODOs across this file. + + Given a dictionary of subtests, and the values. Build up a + perfherder data blob. Note that the naming convention for + these arguments is different then the rest of the scripts + to make it easier to see where they are going to in the perfherder + data. + + For the `should_alert` field, if should_alert is True but `subtest_should_alert` + is empty, then all subtests along with the suite will generate alerts. + Otherwise, if the subtest_should_alert contains subtests to alert on, then + only those will alert and nothing else (including the suite). If the + suite value should alert, then set `suiteshould_alert` to True. + + :param subtests dict: A dictionary of subtests and the values. + XXX TODO items for subtests: + (1) Allow it to contain replicates and individual settings + for each of the subtests. + (2) The geomean of the replicates will be taken for now, + but it should be made more flexible in some way. + (3) We need some way to handle making multiple suites. + :param name str: Name to give to the suite. + :param test_type str: The type of test that was run. + :param extra_options list: A list of extra options to store. + :param should_alert bool: Whether all values in the suite should + generate alerts or not. + :param subtest_should_alert list: A list of subtests to alert on. If this + is not empty, then it will disable the suite-level alerts. + :param suiteshould_alert bool: Used if `subtest_should_alert` is not + empty, and if True, then the suite-level value will generate + alerts. + :param framework dict: Information about the framework that + is being tested. + :param application dict: Information about the application that + is being tested. Must include name, and optionally a version. + :param alert_threshold float: The change in percentage this + metric must undergo to to generate an alert. + :param lower_is_better bool: If True, then lower values are better + than higher ones. + :param unit str: The unit of the data. + :param summary float: The summary value to use in the perfherder + data blob. By default, the mean of all the subtests will be + used. + :param metrics_info dict: Contains a mapping of metric names to the + options that are used on the metric. + :param transformer str: The name of a predefined tranformer, a module + path to a transform, or a path to the file containing the transformer. + + :return dict: The PerfHerder data blob. + """ + if extra_options is None: + extra_options = [] + if subtest_should_alert is None: + subtest_should_alert = [] + if framework is None: + framework = {"name": "mozperftest"} + if application is None: + application = {"name": "firefox", "version": "9000"} + if metrics_info is None: + metrics_info = {} + + # Use the transform to produce a suite value + const = Constant() + tfm_cls = None + transformer_obj = None + if transformer and transformer in const.predefined_transformers: + # A pre-built transformer name was given + tfm_cls = const.predefined_transformers[transformer] + transformer_obj = tfm_cls() + elif transformer is not None: + tfm_cls = get_transformer(transformer) + transformer_obj = tfm_cls() + else: + self.warning( + "No transformer found for this suite. Cannot produce a summary value." + ) + + perf_subtests = [] + suite = { + "name": name, + "type": test_type, + "unit": unit, + "extraOptions": extra_options, + "lowerIsBetter": lower_is_better, + "alertThreshold": alert_threshold, + "shouldAlert": (should_alert and not subtest_should_alert) + or suiteshould_alert, + "subtests": perf_subtests, + } + + perfherder = { + "suites": [suite], + "framework": framework, + "application": application, + } + + allvals = [] + alert_thresholds = [] + for measurement in subtests: + reps = subtests[measurement] + allvals.extend(reps) + + if len(reps) == 0: + self.warning("No replicates found for {}, skipping".format(measurement)) + continue + + # Gather extra settings specified from within a metric specification + subtest_lower_is_better = lower_is_better + subtest_unit = unit + for met in metrics_info: + if met not in measurement: + continue + + extra_options.extend(metrics_info[met].get("extraOptions", [])) + alert_thresholds.append( + metrics_info[met].get("alertThreshold", alert_threshold) + ) + + subtest_unit = metrics_info[met].get("unit", unit) + subtest_lower_is_better = metrics_info[met].get( + "lowerIsBetter", lower_is_better + ) + + if metrics_info[met].get("shouldAlert", should_alert): + subtest_should_alert.append(measurement) + + break + + subtest = { + "name": measurement, + "replicates": reps, + "lowerIsBetter": subtest_lower_is_better, + "value": None, + "unit": subtest_unit, + "shouldAlert": should_alert or measurement in subtest_should_alert, + } + + if has_callable_method(transformer_obj, "subtest_summary"): + subtest["value"] = transformer_obj.subtest_summary(subtest) + if subtest["value"] is None: + subtest["value"] = statistics.mean(reps) + + perf_subtests.append(subtest) + + if len(allvals) == 0: + raise PerfherderValidDataError( + "Could not build perfherder data blob because no valid data was provided, " + + "only int/float data is accepted." + ) + + alert_thresholds = list(set(alert_thresholds)) + if len(alert_thresholds) > 1: + raise PerfherderValidDataError( + "Too many alertThreshold's were specified, expecting 1 but found " + + f"{len(alert_thresholds)}" + ) + elif len(alert_thresholds) == 1: + suite["alertThreshold"] = alert_thresholds[0] + + suite["extraOptions"] = list(set(suite["extraOptions"])) + + if has_callable_method(transformer_obj, "summary"): + val = transformer_obj.summary(suite) + if val is not None: + suite["value"] = val + + return perfherder diff --git a/python/mozperftest/mozperftest/metrics/utils.py b/python/mozperftest/mozperftest/metrics/utils.py new file mode 100644 index 0000000000..a947434684 --- /dev/null +++ b/python/mozperftest/mozperftest/metrics/utils.py @@ -0,0 +1,149 @@ +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at http://mozilla.org/MPL/2.0/. +import ast +import json +import os +import pathlib +import re + +from jsonschema import validate +from jsonschema.exceptions import ValidationError + +# Get the jsonschema for intermediate results +PARENT = pathlib.Path(__file__).parent.parent +with pathlib.Path(PARENT, "schemas", "intermediate-results-schema.json").open() as f: + IR_SCHEMA = json.load(f) + + +# These are the properties we know about in the schema. +# If anything other than these is present, then we will +# fail validation. +KNOWN_PERFHERDER_PROPS = set( + ["name", "value", "unit", "lowerIsBetter", "shouldAlert", "alertThreshold"] +) +KNOWN_SUITE_PROPS = set( + set(["results", "transformer", "transformer-options", "extraOptions", "framework"]) + | KNOWN_PERFHERDER_PROPS +) +KNOWN_SINGLE_MEASURE_PROPS = set(set(["values"]) | KNOWN_PERFHERDER_PROPS) + + +# Regex splitter for the metric fields - used to handle +# the case when `,` is found within the options values. +METRIC_SPLITTER = re.compile(r",\s*(?![^\[\]]*\])") + + +def is_number(value): + """Determines if the value is an int/float.""" + return isinstance(value, (int, float)) and not isinstance(value, bool) + + +def has_callable_method(obj, method_name): + """Determines if an object/class has a callable method.""" + if obj and hasattr(obj, method_name) and callable(getattr(obj, method_name)): + return True + return False + + +def open_file(path): + """Opens a file and returns its contents. + + :param path str: Path to the file, if it's a + JSON, then a dict will be returned, otherwise, + the raw contents (not split by line) will be + returned. + :return dict/str: Returns a dict for JSON data, and + a str for any other type. + """ + print("Reading %s" % path) + with open(path) as f: + if os.path.splitext(path)[-1] == ".json": + return json.load(f) + return f.read() + + +def write_json(data, path, file): + """Writes data to a JSON file. + + :param data dict: Data to write. + :param path str: Directory of where the data will be stored. + :param file str: Name of the JSON file. + :return str: Path to the output. + """ + path = os.path.join(path, file) + with open(path, "w+") as f: + json.dump(data, f) + return path + + +def validate_intermediate_results(results): + """Validates intermediate results coming from the browser layer. + + This method exists because there is no reasonable method to implement + inheritance with `jsonschema` until the `unevaluatedProperties` field + is implemented in the validation module. Until then, this method + checks to make sure that only known properties are available in the + results. If any property found is unknown, then we raise a + jsonschema.ValidationError. + + :param results dict: The intermediate results to validate. + :raises ValidationError: Raised when validation fails. + """ + # Start with the standard validation + validate(results, IR_SCHEMA) + + # Now ensure that we have no extra keys + suite_keys = set(list(results.keys())) + unknown_keys = suite_keys - KNOWN_SUITE_PROPS + if unknown_keys: + raise ValidationError(f"Found unknown suite-level keys: {list(unknown_keys)}") + if isinstance(results["results"], str): + # Nothing left to verify + return + + # The results are split by measurement so we need to + # check that each of those entries have no extra keys + for entry in results["results"]: + measurement_keys = set(list(entry.keys())) + unknown_keys = measurement_keys - KNOWN_SINGLE_MEASURE_PROPS + if unknown_keys: + raise ValidationError( + "Found unknown single-measure-level keys for " + f"{entry['name']}: {list(unknown_keys)}" + ) + + +def metric_fields(value): + # old form: just the name + if "," not in value and ":" not in value: + return {"name": value} + + def _check(field): + sfield = field.strip().partition(":") + if len(sfield) != 3 or not (sfield[1] and sfield[2]): + raise ValueError(f"Unexpected metrics definition {field}") + if sfield[0] not in KNOWN_SUITE_PROPS: + raise ValueError( + f"Unknown field '{sfield[0]}', should be in " f"{KNOWN_SUITE_PROPS}" + ) + + sfield = [sfield[0], sfield[2]] + + try: + # This handles dealing with parsing lists + # from a string + sfield[1] = ast.literal_eval(sfield[1]) + except (ValueError, SyntaxError): + # Ignore failures, those are from instances + # which don't need to be converted from a python + # representation + pass + + return sfield + + fields = [field.strip() for field in METRIC_SPLITTER.split(value)] + res = dict([_check(field) for field in fields]) + if "name" not in res: + raise ValueError(f"{value} misses the 'name' field") + return res diff --git a/python/mozperftest/mozperftest/metrics/visualmetrics.py b/python/mozperftest/mozperftest/metrics/visualmetrics.py new file mode 100644 index 0000000000..068440d6f2 --- /dev/null +++ b/python/mozperftest/mozperftest/metrics/visualmetrics.py @@ -0,0 +1,221 @@ +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at http://mozilla.org/MPL/2.0/. +import errno +import json +import os +import sys +from pathlib import Path + +from mozfile import which + +from mozperftest.layers import Layer +from mozperftest.utils import run_script, silence + +METRICS_FIELDS = ( + "SpeedIndex", + "FirstVisualChange", + "LastVisualChange", + "VisualProgress", + "videoRecordingStart", +) + + +class VisualData: + def open_data(self, data): + res = { + "name": "visualmetrics", + "subtest": data["name"], + "data": [ + {"file": "visualmetrics", "value": value, "xaxis": xaxis} + for xaxis, value in enumerate(data["values"]) + ], + } + return res + + def transform(self, data): + return data + + def merge(self, data): + return data + + +class VisualMetrics(Layer): + """Wrapper around Browsertime's visualmetrics.py script""" + + name = "visualmetrics" + activated = False + arguments = {} + + def setup(self): + self.metrics = {} + self.metrics_fields = [] + + # making sure we have ffmpeg and imagemagick available + for tool in ("ffmpeg", "convert"): + if sys.platform in ("win32", "msys"): + tool += ".exe" + path = which(tool) + if not path: + raise OSError(errno.ENOENT, f"Could not find {tool}") + + def run(self, metadata): + if "VISUALMETRICS_PY" not in os.environ: + raise OSError( + "The VISUALMETRICS_PY environment variable is not set." + "Make sure you run the browsertime layer" + ) + path = Path(os.environ["VISUALMETRICS_PY"]) + if not path.exists(): + raise FileNotFoundError(str(path)) + + self.visualmetrics = path + treated = 0 + + for result in metadata.get_results(): + result_dir = result.get("results") + if result_dir is None: + continue + result_dir = Path(result_dir) + if not result_dir.is_dir(): + continue + browsertime_json = Path(result_dir, "browsertime.json") + if not browsertime_json.exists(): + continue + treated += self.run_visual_metrics(browsertime_json) + + self.info(f"Treated {treated} videos.") + + if len(self.metrics) > 0: + metadata.add_result( + { + "name": metadata.script["name"] + "-vm", + "framework": {"name": "mozperftest"}, + "transformer": "mozperftest.metrics.visualmetrics:VisualData", + "results": list(self.metrics.values()), + } + ) + + # we also extend --perfherder-metrics and --console-metrics if they + # are activated + def add_to_option(name): + existing = self.get_arg(name, []) + for field in self.metrics_fields: + existing.append({"name": field, "unit": "ms"}) + self.env.set_arg(name, existing) + + if self.get_arg("perfherder"): + add_to_option("perfherder-metrics") + + if self.get_arg("console"): + add_to_option("console-metrics") + + else: + self.warning("No video was treated.") + return metadata + + def run_visual_metrics(self, browsertime_json): + verbose = self.get_arg("verbose") + self.info(f"Looking at {browsertime_json}") + venv = self.mach_cmd.virtualenv_manager + + class _display: + def __enter__(self, *args, **kw): + return self + + __exit__ = __enter__ + + may_silence = not verbose and silence or _display + + with browsertime_json.open() as f: + browsertime_json_data = json.loads(f.read()) + + videos = 0 + global_options = [ + str(self.visualmetrics), + "--orange", + "--perceptual", + "--contentful", + "--force", + "--renderignore", + "5", + "--viewport", + ] + if verbose: + global_options += ["-vvv"] + + for site in browsertime_json_data: + # collecting metrics from browserScripts + # because it can be used in splitting + for index, bs in enumerate(site["browserScripts"]): + for name, val in bs.items(): + if not isinstance(val, (str, int)): + continue + self.append_metrics(index, name, val) + + extra = {"lowerIsBetter": True, "unit": "ms"} + + for index, video in enumerate(site["files"]["video"]): + videos += 1 + video_path = browsertime_json.parent / video + output = "[]" + with may_silence(): + res, output = run_script( + venv.python_path, + global_options + ["--video", str(video_path), "--json"], + verbose=verbose, + label="visual metrics", + display=False, + ) + if not res: + self.error(f"Failed {res}") + continue + + output = output.strip() + if verbose: + self.info(str(output)) + try: + output = json.loads(output) + except json.JSONDecodeError: + self.error("Could not read the json output from visualmetrics.py") + continue + + for name, value in output.items(): + if name.endswith( + "Progress", + ): + self._expand_visual_progress(index, name, value, **extra) + else: + self.append_metrics(index, name, value, **extra) + + return videos + + def _expand_visual_progress(self, index, name, value, **fields): + def _split_percent(val): + # value is of the form "567=94%" + val = val.split("=") + value, percent = val[0].strip(), val[1].strip() + if percent.endswith("%"): + percent = percent[:-1] + return int(percent), int(value) + + percents = [_split_percent(elmt) for elmt in value.split(",")] + + # we want to keep the first added value for each percent + # so the trick here is to create a dict() with the reversed list + percents = dict(reversed(percents)) + + # we are keeping the last 5 percents + percents = list(percents.items()) + percents.sort() + for percent, value in percents[:5]: + self.append_metrics(index, f"{name}{percent}", value, **fields) + + def append_metrics(self, index, name, value, **fields): + if name not in self.metrics_fields: + self.metrics_fields.append(name) + if name not in self.metrics: + self.metrics[name] = {"name": name, "values": []} + + self.metrics[name]["values"].append(value) + self.metrics[name].update(**fields) diff --git a/python/mozperftest/mozperftest/runner.py b/python/mozperftest/mozperftest/runner.py new file mode 100644 index 0000000000..5ef5e90200 --- /dev/null +++ b/python/mozperftest/mozperftest/runner.py @@ -0,0 +1,299 @@ +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at http://mozilla.org/MPL/2.0/. +""" +Pure Python runner so we can execute perftest in the CI without +depending on a full mach toolchain, that is not fully available in +all worker environments. + +This runner can be executed in two different ways: + +- by calling run_tests() from the mach command +- by executing this module directly + +When the module is executed directly, if the --on-try option is used, +it will fetch arguments from Tascluster's parameters, that were +populated via a local --push-to-try call. + +The --push-to-try flow is: + +- a user calls ./mach perftest --push-to-try --option1 --option2 +- a new push to try commit is made and includes all options in its parameters +- a generic TC job triggers the perftest by calling this module with --on-try +- run_test() grabs the parameters artifact and converts them into args for + perftest +""" +import json +import logging +import os +import shutil +import sys +from pathlib import Path + +TASKCLUSTER = "TASK_ID" in os.environ.keys() +RUNNING_TESTS = "RUNNING_TESTS" in os.environ.keys() +HERE = Path(__file__).parent +SRC_ROOT = Path(HERE, "..", "..", "..").resolve() + + +# XXX need to make that for all systems flavors +if "SHELL" not in os.environ: + os.environ["SHELL"] = "/bin/bash" + + +def _activate_virtualenvs(flavor): + """Adds all available dependencies in the path. + + This is done so the runner can be used with no prior + install in all execution environments. + """ + + # We need the "mach" module to access the logic to parse virtualenv + # requirements. Since that depends on "packaging", we add that to the path too. + sys.path[0:0] = [ + os.path.join(SRC_ROOT, module) + for module in ( + os.path.join("python", "mach"), + os.path.join("third_party", "python", "packaging"), + ) + ] + + from mach.site import ( + CommandSiteManager, + ExternalPythonSite, + MachSiteManager, + SitePackagesSource, + resolve_requirements, + ) + from mach.util import get_state_dir, get_virtualenv_base_dir + + mach_site = MachSiteManager( + str(SRC_ROOT), + None, + resolve_requirements(str(SRC_ROOT), "mach"), + ExternalPythonSite(sys.executable), + SitePackagesSource.NONE, + ) + mach_site.activate() + + command_site_manager = CommandSiteManager.from_environment( + str(SRC_ROOT), + lambda: os.path.normpath(get_state_dir(True, topsrcdir=str(SRC_ROOT))), + "common", + get_virtualenv_base_dir(str(SRC_ROOT)), + ) + + command_site_manager.activate() + + if TASKCLUSTER: + # In CI, the directory structure is different: xpcshell code is in + # "$topsrcdir/xpcshell/" rather than "$topsrcdir/testing/xpcshell". The + # same is true for mochitest. It also needs additional settings for some + # dependencies. + if flavor == "xpcshell": + print("Setting up xpcshell python paths...") + sys.path.append("xpcshell") + elif flavor == "mochitest": + print("Setting up mochitest python paths...") + sys.path.append("mochitest") + sys.path.append(str(Path("tools", "geckoprocesstypes_generator"))) + + +def _create_artifacts_dir(kwargs, artifacts): + from mozperftest.utils import create_path + + results_dir = kwargs.get("test_name") + if results_dir is None: + results_dir = "results" + + return create_path(artifacts / "artifacts" / kwargs["tool"] / results_dir) + + +def _save_params(kwargs, artifacts): + with open(os.path.join(str(artifacts), "side-by-side-params.json"), "w") as file: + json.dump(kwargs, file, indent=4) + + +def run_tests(mach_cmd, kwargs, client_args): + """This tests runner can be used directly via main or via Mach. + + When the --on-try option is used, the test runner looks at the + `PERFTEST_OPTIONS` environment variable that contains all options passed by + the user via a ./mach perftest --push-to-try call. + """ + on_try = kwargs.pop("on_try", False) + + # trying to get the arguments from the task params + if on_try: + try_options = json.loads(os.environ["PERFTEST_OPTIONS"]) + print("Loading options from $PERFTEST_OPTIONS") + print(json.dumps(try_options, indent=4, sort_keys=True)) + kwargs.update(try_options) + + from mozperftest import MachEnvironment, Metadata + from mozperftest.hooks import Hooks + from mozperftest.script import ScriptInfo + from mozperftest.utils import build_test_list + + hooks_file = kwargs.pop("hooks", None) + hooks = Hooks(mach_cmd, hooks_file) + verbose = kwargs.get("verbose", False) + log_level = logging.DEBUG if verbose else logging.INFO + + # If we run through mach, we just want to set the level + # of the existing termminal handler. + # Otherwise, we're adding it. + if mach_cmd.log_manager.terminal_handler is not None: + mach_cmd.log_manager.terminal_handler.level = log_level + else: + mach_cmd.log_manager.add_terminal_logging(level=log_level) + mach_cmd.log_manager.enable_all_structured_loggers() + mach_cmd.log_manager.enable_unstructured() + + try: + # Only pass the virtualenv to the before_iterations hook + # so that users can install test-specific packages if needed. + mach_cmd.activate_virtualenv() + kwargs["virtualenv"] = mach_cmd.virtualenv_manager + hooks.run("before_iterations", kwargs) + del kwargs["virtualenv"] + + tests, tmp_dir = build_test_list(kwargs["tests"]) + + for test in tests: + script = ScriptInfo(test) + + # update the arguments with options found in the script, if any + args = script.update_args(**client_args) + # XXX this should be the default pool for update_args + for key, value in kwargs.items(): + if key not in args: + args[key] = value + + # update the hooks, or use a copy of the general one + script_hooks = Hooks(mach_cmd, args.pop("hooks", hooks_file)) + + flavor = args["flavor"] + if flavor == "doc": + print(script) + continue + + for iteration in range(args.get("test_iterations", 1)): + try: + env = MachEnvironment(mach_cmd, hooks=script_hooks, **args) + metadata = Metadata(mach_cmd, env, flavor, script) + script_hooks.run("before_runs", env) + try: + with env.frozen() as e: + e.run(metadata) + finally: + script_hooks.run("after_runs", env) + finally: + if tmp_dir is not None: + shutil.rmtree(tmp_dir) + finally: + hooks.cleanup() + + +def run_tools(mach_cmd, kwargs): + """This tools runner can be used directly via main or via Mach. + + **TODO**: Before adding any more tools, we need to split this logic out + into a separate file that runs the tools and sets them up dynamically + in a similar way to how we use layers. + """ + from mozperftest.utils import ON_TRY, install_package + + mach_cmd.activate_virtualenv() + install_package( + mach_cmd.virtualenv_manager, + "mozperftest-tools==0.3.2", + ) + + log_level = logging.INFO + if mach_cmd.log_manager.terminal_handler is not None: + mach_cmd.log_manager.terminal_handler.level = log_level + else: + mach_cmd.log_manager.add_terminal_logging(level=log_level) + mach_cmd.log_manager.enable_all_structured_loggers() + mach_cmd.log_manager.enable_unstructured() + + if ON_TRY: + artifacts = Path(os.environ.get("MOZ_FETCHES_DIR"), "..").resolve() + artifacts = _create_artifacts_dir(kwargs, artifacts) + else: + artifacts = _create_artifacts_dir(kwargs, SRC_ROOT) + + _save_params(kwargs, artifacts) + + # Run the requested tool + from mozperftest.tools import TOOL_RUNNERS + + tool = kwargs.pop("tool") + print(f"Running {tool} tool") + + TOOL_RUNNERS[tool](artifacts, kwargs) + + +def main(argv=sys.argv[1:]): + """Used when the runner is directly called from the shell""" + flavor = "desktop-browser" + if "--flavor" in argv: + flavor = argv[argv.index("--flavor") + 1] + _activate_virtualenvs(flavor) + + from mach.logging import LoggingManager + from mach.util import get_state_dir + from mozbuild.base import MachCommandBase, MozbuildObject + from mozbuild.mozconfig import MozconfigLoader + + from mozperftest import PerftestArgumentParser, PerftestToolsArgumentParser + + mozconfig = SRC_ROOT / "browser" / "config" / "mozconfig" + if mozconfig.exists(): + os.environ["MOZCONFIG"] = str(mozconfig) + + if "--xpcshell-mozinfo" in argv: + mozinfo = argv[argv.index("--xpcshell-mozinfo") + 1] + topobjdir = Path(mozinfo).parent + else: + topobjdir = None + + config = MozbuildObject( + str(SRC_ROOT), + None, + LoggingManager(), + topobjdir=topobjdir, + mozconfig=MozconfigLoader.AUTODETECT, + ) + config.topdir = config.topsrcdir + config.cwd = os.getcwd() + config.state_dir = get_state_dir() + + # This monkey patch forces mozbuild to reuse + # our configuration when it tries to re-create + # it from the environment. + def _here(*args, **kw): + return config + + MozbuildObject.from_environment = _here + + mach_cmd = MachCommandBase(config) + + if "tools" in argv[0]: + if len(argv) == 1: + raise SystemExit("No tool specified, cannot continue parsing") + PerftestToolsArgumentParser.tool = argv[1] + perftools_parser = PerftestToolsArgumentParser() + args = dict(vars(perftools_parser.parse_args(args=argv[2:]))) + args["tool"] = argv[1] + run_tools(mach_cmd, args) + else: + perftest_parser = PerftestArgumentParser(description="vanilla perftest") + args = dict(vars(perftest_parser.parse_args(args=argv))) + user_args = perftest_parser.get_user_args(args) + run_tests(mach_cmd, args, user_args) + + +if __name__ == "__main__": + sys.exit(main()) diff --git a/python/mozperftest/mozperftest/schemas/intermediate-results-schema.json b/python/mozperftest/mozperftest/schemas/intermediate-results-schema.json new file mode 100644 index 0000000000..70c7468b31 --- /dev/null +++ b/python/mozperftest/mozperftest/schemas/intermediate-results-schema.json @@ -0,0 +1,113 @@ +{ + "definitions": { + "perfherder-options-schema": { + "title": "Perfherder-specific Options", + "description": "Set these to have more control over the perfherder blob that will be created", + "properties": { + "name": { + "title": "Name of the metric or suite", + "type": "string" + }, + "value": { + "title": "Summary value", + "type": "number", + "minimum": -1000000000000.0, + "maximum": 1000000000000.0 + }, + "unit": { + "title": "Measurement unit", + "type": "string", + "minLength": 1, + "maxLength": 20 + }, + "lowerIsBetter": { + "description": "Whether lower values are better", + "title": "Lower is better", + "type": "boolean" + }, + "shouldAlert": { + "description": "Whether we should alert", + "title": "Should alert", + "type": "boolean" + }, + "alertThreshold": { + "description": "% change threshold before alerting", + "title": "Alert threshold", + "type": "number", + "minimum": 0.0, + "maximum": 1000.0 + } + } + }, + "single-metric-schema": { + "allOf": [ + {"$ref": "#/definitions/perfherder-options-schema"}, + { + "properties": { + "values": { + "description": "Contains all the measurements taken", + "title": "Measured values", + "type": "array", + "items": { + "type": "number" + } + } + } + } + ], + "required": [ + "name", + "values" + ], + "type": "object" + }, + "results-schema": { + "anyOf": [ + {"type": "string"}, + { + "type": "array", + "items": { + "$ref": "#/definitions/single-metric-schema" + } + } + ], + "title": "Holds the data to be processed by the metrics modules", + "description": "The data can be defined within an object, or through a path to where the data can be found" + } + }, + "id": "https://searchfox.org/mozilla-central/source/python/mozperftest/mozperftest/schemas/intermediate-results-schema.json", + "allOf": [ + {"$ref": "#/definitions/perfherder-options-schema"}, + { + "properties": { + "results": {"$ref": "#/definitions/results-schema"}, + "transformer": { + "title": "Transformer to use on the data", + "type": "string" + }, + "transformer-options": { + "type": "object", + "title": "Options used in the transformer" + }, + "framework": { + "title": "Framework that produced the data", + "type": "object" + }, + "extraOptions": { + "type": "array", + "title": "Extra options used in the running suite", + "items": { + "type": "string", + "maxLength": 100 + }, + "uniqueItems": true, + "maxItems": 8 + } + } + } + ], + "required": ["results", "name"], + "description": "Intermediate results for a single type of metric or suite (i.e. browsertime, and adb results shouldn't be mixed in the same entry)", + "title": "MozPerftest Intermediate Results Schema", + "type": "object" +} diff --git a/python/mozperftest/mozperftest/schemas/transformer_schema.json b/python/mozperftest/mozperftest/schemas/transformer_schema.json new file mode 100644 index 0000000000..ab156f5386 --- /dev/null +++ b/python/mozperftest/mozperftest/schemas/transformer_schema.json @@ -0,0 +1,55 @@ +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "definitions": { + "data": { + "type": "array", + "items": { + "type": "object", + "properties": { + "file": { + "type": "string" + }, + "value": {}, + "xaxis": { + "type": "number" + } + }, + "required": [ + "file", + "value", + "xaxis" + ] + } + }, + "dict": { + "type": "object", + "properties": { + "data": { + "$ref": "#/definitions/data" + }, + "name": { + "type": "string" + }, + "subtest": { + "type": "string" + } + }, + "required": [ + "data", + "name", + "subtest" + ] + } + }, + "oneOf": [ + { + "$ref": "#/definitions/dict" + }, + { + "type": "array", + "items": { + "$ref": "#/definitions/dict" + } + } + ] +} diff --git a/python/mozperftest/mozperftest/script.py b/python/mozperftest/mozperftest/script.py new file mode 100644 index 0000000000..3620a526d1 --- /dev/null +++ b/python/mozperftest/mozperftest/script.py @@ -0,0 +1,334 @@ +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at http://mozilla.org/MPL/2.0/. +import io +import re +import textwrap +import traceback +from collections import defaultdict +from enum import Enum +from html.parser import HTMLParser +from pathlib import Path + +import esprima + +# list of metadata, each item is the name and if the field is mandatory +METADATA = [ + ("setUp", False), + ("tearDown", False), + ("test", True), + ("owner", True), + ("author", False), + ("name", True), + ("description", True), + ("longDescription", False), + ("options", False), + ("supportedBrowsers", False), + ("supportedPlatforms", False), + ("filename", True), + ("tags", False), +] + + +_INFO = """\ +%(filename)s +%(filename_underline)s + +:owner: %(owner)s +:name: %(name)s +""" + + +XPCSHELL_FUNCS = "add_task", "run_test", "run_next_test" + + +class BadOptionTypeError(Exception): + """Raised when an option defined in a test has an incorrect type.""" + + pass + + +class MissingFieldError(Exception): + def __init__(self, script, field): + super().__init__(f"Missing metadata {field}") + self.script = script + self.field = field + + +class MissingPerfMetadataError(Exception): + def __init__(self, script): + super().__init__("Missing `perfMetadata` variable") + self.script = script + + +class ParseError(Exception): + def __init__(self, script, exception): + super().__init__(f"Cannot parse {script}") + self.script = script + self.exception = exception + + def __str__(self): + output = io.StringIO() + traceback.print_exception( + type(self.exception), + self.exception, + self.exception.__traceback__, + file=output, + ) + return f"{self.args[0]}\n{output.getvalue()}" + + +class ScriptType(Enum): + xpcshell = 1 + browsertime = 2 + mochitest = 3 + + +class HTMLScriptParser(HTMLParser): + def handle_data(self, data): + if self.script_content is None: + self.script_content = [] + if "perfMetadata" in data: + self.script_content.append(data) + if any(func_name in data for func_name in XPCSHELL_FUNCS): + self.script_content.append(data) + + +class ScriptInfo(defaultdict): + """Loads and parses a Browsertime test script.""" + + def __init__(self, path): + super(ScriptInfo, self).__init__() + try: + self.script = Path(path).resolve() + if self.script.suffix == ".html": + self._parse_html_file() + else: + self._parse_js_file() + except Exception as e: + raise ParseError(path, e) + + # If the fields found, don't match our known ones, then an error is raised + for field, required in METADATA: + if not required: + continue + if field not in self: + raise MissingFieldError(path, field) + + def _set_script_content(self): + self["filename"] = str(self.script) + self.script_content = self.script.read_text() + + def _parse_js_file(self): + self.script_type = ScriptType.browsertime + self._set_script_content() + self._parse_script_content() + + def _parse_script_content(self): + self.parsed = esprima.parseScript(self.script_content) + + # looking for the exports statement + found_perfmetadata = False + for stmt in self.parsed.body: + # detecting if the script has add_task() + if ( + stmt.type == "ExpressionStatement" + and stmt.expression is not None + and stmt.expression.callee is not None + and stmt.expression.callee.type == "Identifier" + and stmt.expression.callee.name in XPCSHELL_FUNCS + ): + self["test"] = "xpcshell" + self.script_type = ScriptType.xpcshell + continue + + # plain xpcshell tests functions markers + if stmt.type == "FunctionDeclaration" and stmt.id.name in XPCSHELL_FUNCS: + self["test"] = "xpcshell" + self.script_type = ScriptType.xpcshell + continue + + # is this the perfMetdatata plain var ? + if stmt.type == "VariableDeclaration": + for decl in stmt.declarations: + if ( + decl.type != "VariableDeclarator" + or decl.id.type != "Identifier" + or decl.id.name != "perfMetadata" + or decl.init is None + ): + continue + found_perfmetadata = True + self.scan_properties(decl.init.properties) + continue + + # or the module.exports map ? + if ( + stmt.type != "ExpressionStatement" + or stmt.expression.left is None + or stmt.expression.left.property is None + or stmt.expression.left.property.name != "exports" + or stmt.expression.right is None + or stmt.expression.right.properties is None + ): + continue + + # now scanning the properties + found_perfmetadata = True + self.scan_properties(stmt.expression.right.properties) + + if not found_perfmetadata: + raise MissingPerfMetadataError(self.script) + + def _parse_html_file(self): + self._set_script_content() + + html_parser = HTMLScriptParser() + html_parser.script_content = None + html_parser.feed(self.script_content) + + if not html_parser.script_content: + raise MissingPerfMetadataError(self.script) + + # Pass through all the scripts and gather up the data such as + # the test itself, and the perfMetadata. These can be in separate + # scripts, but later scripts override earlier ones if there + # are redefinitions. + found_perfmetadata = False + for script_content in html_parser.script_content: + self.script_content = script_content + try: + self._parse_script_content() + found_perfmetadata = True + except MissingPerfMetadataError: + pass + if not found_perfmetadata: + raise MissingPerfMetadataError() + + # Mochitest gets detected as xpcshell during parsing + # since they use similar methods to run tests + self.script_type = ScriptType.mochitest + + def parse_value(self, value): + if value.type == "Identifier": + return value.name + + if value.type == "Literal": + return value.value + + if value.type == "TemplateLiteral": + # ugly + value = value.quasis[0].value.cooked.replace("\n", " ") + return re.sub(r"\s+", " ", value).strip() + + if value.type == "ArrayExpression": + return [self.parse_value(e) for e in value.elements] + + if value.type == "ObjectExpression": + elements = {} + for prop in value.properties: + sub_name, sub_value = self.parse_property(prop) + elements[sub_name] = sub_value + return elements + + raise ValueError(value.type) + + def parse_property(self, property): + return property.key.name, self.parse_value(property.value) + + def scan_properties(self, properties): + for prop in properties: + name, value = self.parse_property(prop) + self[name] = value + + def __str__(self): + """Used to generate docs.""" + + def _render(value, level=0): + if not isinstance(value, (list, tuple, dict)): + if not isinstance(value, str): + value = str(value) + # line wrapping + return "\n".join(textwrap.wrap(value, break_on_hyphens=False)) + + # options + if isinstance(value, dict): + if level > 0: + return ",".join([f"{k}:{v}" for k, v in value.items()]) + + res = [] + for key, val in value.items(): + if isinstance(val, bool): + res.append(f" --{key.replace('_', '-')}") + else: + val = _render(val, level + 1) # noqa + res.append(f" --{key.replace('_', '-')} {val}") + + return "\n".join(res) + + # simple flat list + return ", ".join([_render(v, level + 1) for v in value]) + + options = "" + d = defaultdict(lambda: "N/A") + for field, value in self.items(): + if field == "longDescription": + continue + if field == "filename": + d[field] = self.script.name + continue + if field == "options": + for plat in "default", "linux", "mac", "win": + if plat not in value: + continue + options += f":{plat.capitalize()} options:\n\n::\n\n{_render(value[plat])}\n" + else: + d[field] = _render(value) + + d["filename_underline"] = "=" * len(d["filename"]) + info = _INFO % d + if "tags" in self: + info += f":tags: {','.join(self['tags'])}\n" + info += options + info += f"\n**{self['description']}**\n" + if "longDescription" in self: + info += f"\n{self['longDescription']}\n" + + return info + + def __missing__(self, key): + return "N/A" + + @classmethod + def detect_type(cls, path): + return cls(path).script_type + + def update_args(self, **args): + """Updates arguments with options from the script.""" + from mozperftest.utils import simple_platform + + # Order of precedence: + # cli options > platform options > default options + options = self.get("options", {}) + result = options.get("default", {}) + result.update(options.get(simple_platform(), {})) + result.update(args) + + # XXX this is going away, see https://bugzilla.mozilla.org/show_bug.cgi?id=1675102 + for opt, val in result.items(): + if opt.startswith("visualmetrics") or "metrics" not in opt: + continue + if not isinstance(val, list): + raise BadOptionTypeError("Metrics should be defined within a list") + for metric in val: + if not isinstance(metric, dict): + raise BadOptionTypeError( + "Each individual metrics must be defined within a JSON-like object" + ) + + if self.script_type == ScriptType.xpcshell: + result["flavor"] = "xpcshell" + if self.script_type == ScriptType.mochitest: + result["flavor"] = "mochitest" + + return result diff --git a/python/mozperftest/mozperftest/system/__init__.py b/python/mozperftest/mozperftest/system/__init__.py new file mode 100644 index 0000000000..a5ad3df113 --- /dev/null +++ b/python/mozperftest/mozperftest/system/__init__.py @@ -0,0 +1,35 @@ +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at http://mozilla.org/MPL/2.0/. +from mozperftest.layers import Layers +from mozperftest.system.android import AndroidDevice +from mozperftest.system.android_startup import AndroidStartUp +from mozperftest.system.macos import MacosDevice +from mozperftest.system.pingserver import PingServer +from mozperftest.system.profile import Profile +from mozperftest.system.proxy import ProxyRunner + + +def get_layers(): + return PingServer, Profile, ProxyRunner, AndroidDevice, MacosDevice, AndroidStartUp + + +def pick_system(env, flavor, mach_cmd): + if flavor in ("desktop-browser", "xpcshell", "mochitest"): + return Layers( + env, + mach_cmd, + ( + PingServer, # needs to come before Profile + MacosDevice, + Profile, + ProxyRunner, + ), + ) + if flavor == "mobile-browser": + return Layers( + env, mach_cmd, (Profile, ProxyRunner, AndroidDevice, AndroidStartUp) + ) + if flavor == "webpagetest": + return Layers(env, mach_cmd, (Profile,)) + raise NotImplementedError(flavor) diff --git a/python/mozperftest/mozperftest/system/android.py b/python/mozperftest/mozperftest/system/android.py new file mode 100644 index 0000000000..650b0fb29d --- /dev/null +++ b/python/mozperftest/mozperftest/system/android.py @@ -0,0 +1,238 @@ +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at http://mozilla.org/MPL/2.0/. +import sys +import tempfile +from pathlib import Path + +import mozlog +from mozdevice import ADBDevice, ADBError + +from mozperftest.layers import Layer +from mozperftest.system.android_perf_tuner import tune_performance +from mozperftest.utils import download_file + +HERE = Path(__file__).parent + +_ROOT_URL = "https://firefox-ci-tc.services.mozilla.com/api/index/v1/task/" +_FENIX_NIGHTLY_BUILDS = ( + "mobile.v3.firefox-android.apks.fenix-nightly.latest.{architecture}" + "/artifacts/public/build/fenix/{architecture}/target.apk" +) +_GV_BUILDS = "gecko.v2.mozilla-central.shippable.latest.mobile.android-" +_REFBROW_BUILDS = ( + "mobile.v2.reference-browser.nightly.latest.{architecture}" + "/artifacts/public/target.{architecture}.apk" +) + +_PERMALINKS = { + "fenix_nightly_armeabi_v7a": _ROOT_URL + + _FENIX_NIGHTLY_BUILDS.format(architecture="armeabi-v7a"), + "fenix_nightly_arm64_v8a": _ROOT_URL + + _FENIX_NIGHTLY_BUILDS.format(architecture="arm64-v8a"), + # The two following aliases are used for Fenix multi-commit testing in CI + "fenix_nightlysim_multicommit_arm64_v8a": None, + "fenix_nightlysim_multicommit_armeabi_v7a": None, + "gve_nightly_aarch64": _ROOT_URL + + _GV_BUILDS + + "aarch64-opt/artifacts/public/build/geckoview_example.apk", + "gve_nightly_api16": _ROOT_URL + + _GV_BUILDS + + "arm-opt/artifacts/public/build/geckoview_example.apk", + "refbrow_nightly_aarch64": _ROOT_URL + + _REFBROW_BUILDS.format(architecture="arm64-v8a"), + "refbrow_nightly_api16": _ROOT_URL + + _REFBROW_BUILDS.format(architecture="armeabi-v7a"), +} + + +class DeviceError(Exception): + pass + + +class ADBLoggedDevice(ADBDevice): + def __init__(self, *args, **kw): + self._provided_logger = kw.pop("logger") + super(ADBLoggedDevice, self).__init__(*args, **kw) + + def _get_logger(self, logger_name, verbose): + return self._provided_logger + + +class AndroidDevice(Layer): + """Use an android device via ADB""" + + name = "android" + activated = False + + arguments = { + "app-name": { + "type": str, + "default": "org.mozilla.firefox", + "help": "Android app name", + }, + "timeout": { + "type": int, + "default": 60, + "help": "Timeout in seconds for adb operations", + }, + "clear-logcat": { + "action": "store_true", + "default": False, + "help": "Clear the logcat when starting", + }, + "capture-adb": { + "type": str, + "default": "stdout", + "help": ( + "Captures adb calls to the provided path. " + "To capture to stdout, use 'stdout'." + ), + }, + "capture-logcat": { + "type": str, + "default": None, + "help": "Captures the logcat to the provided path.", + }, + "perf-tuning": { + "action": "store_true", + "default": False, + "help": ( + "If set, device will be tuned for performance. " + "This helps with decreasing the noise." + ), + }, + "intent": {"type": str, "default": None, "help": "Intent to use"}, + "activity": {"type": str, "default": None, "help": "Activity to use"}, + "install-apk": { + "nargs": "*", + "default": [], + "help": ( + "APK to install to the device " + "Can be a file, an url or an alias url from " + " %s" % ", ".join(_PERMALINKS.keys()) + ), + }, + } + + def __init__(self, env, mach_cmd): + super(AndroidDevice, self).__init__(env, mach_cmd) + self.android_activity = self.app_name = self.device = None + self.capture_logcat = self.capture_file = None + self._custom_apk_path = None + + @property + def custom_apk_path(self): + if self._custom_apk_path is None: + custom_apk_path = Path(HERE, "..", "user_upload.apk") + if custom_apk_path.exists(): + self._custom_apk_path = custom_apk_path + return self._custom_apk_path + + def custom_apk_exists(self): + return self.custom_apk_path is not None + + def setup(self): + if self.custom_apk_exists(): + self.info( + f"Replacing --android-install-apk with custom APK found at " + f"{self.custom_apk_path}" + ) + self.set_arg("android-install-apk", [self.custom_apk_path]) + + def teardown(self): + if self.capture_file is not None: + self.capture_file.close() + if self.capture_logcat is not None and self.device is not None: + self.info("Dumping logcat into %r" % str(self.capture_logcat)) + with self.capture_logcat.open("wb") as f: + for line in self.device.get_logcat(): + f.write(line.encode("utf8", errors="replace") + b"\n") + + def _set_output_path(self, path): + if path in (None, "stdout"): + return path + # check if the path is absolute or relative to output + path = Path(path) + if not path.is_absolute(): + return Path(self.get_arg("output"), path) + return path + + def run(self, metadata): + self.app_name = self.get_arg("android-app-name") + self.android_activity = self.get_arg("android-activity") + self.clear_logcat = self.get_arg("clear-logcat") + self.metadata = metadata + self.verbose = self.get_arg("verbose") + self.capture_adb = self._set_output_path(self.get_arg("capture-adb")) + self.capture_logcat = self._set_output_path(self.get_arg("capture-logcat")) + + # capture the logs produced by ADBDevice + logger_name = "mozperftest-adb" + logger = mozlog.structuredlog.StructuredLogger(logger_name) + if self.capture_adb == "stdout": + stream = sys.stdout + disable_colors = False + else: + stream = self.capture_file = self.capture_adb.open("w") + disable_colors = True + + handler = mozlog.handlers.StreamHandler( + stream=stream, + formatter=mozlog.formatters.MachFormatter( + verbose=self.verbose, disable_colors=disable_colors + ), + ) + logger.add_handler(handler) + try: + self.device = ADBLoggedDevice( + verbose=self.verbose, timeout=self.get_arg("timeout"), logger=logger + ) + except (ADBError, AttributeError) as e: + self.error("Could not connect to the phone. Is it connected?") + raise DeviceError(str(e)) + + if self.clear_logcat: + self.device.clear_logcat() + + # Install APKs + for apk in self.get_arg("android-install-apk"): + self.info("Uninstalling old version") + self.device.uninstall_app(self.get_arg("android-app-name")) + self.info("Installing %s" % apk) + if str(apk) in _PERMALINKS: + apk = _PERMALINKS[apk] + if str(apk).startswith("http"): + with tempfile.TemporaryDirectory() as tmpdirname: + target = Path(tmpdirname, "target.apk") + self.info("Downloading %s" % apk) + download_file(apk, target) + self.info("Installing downloaded APK") + self.device.install_app(str(target)) + else: + self.device.install_app(apk, replace=True) + self.info("Done.") + + # checking that the app is installed + if not self.device.is_app_installed(self.app_name): + raise Exception("%s is not installed" % self.app_name) + + if self.get_arg("android-perf-tuning", False): + tune_performance(self.device) + + # set up default activity with the app name if none given + if self.android_activity is None: + # guess the activity, given the app + if "fenix" in self.app_name: + self.android_activity = "org.mozilla.fenix.IntentReceiverActivity" + elif "geckoview_example" in self.app_name: + self.android_activity = ( + "org.mozilla.geckoview_example.GeckoViewActivity" + ) + self.set_arg("android_activity", self.android_activity) + + self.info("Android environment:") + self.info("- Application name: %s" % self.app_name) + self.info("- Activity: %s" % self.android_activity) + self.info("- Intent: %s" % self.get_arg("android_intent")) + return metadata diff --git a/python/mozperftest/mozperftest/system/android_perf_tuner.py b/python/mozperftest/mozperftest/system/android_perf_tuner.py new file mode 100644 index 0000000000..e33d98b5d0 --- /dev/null +++ b/python/mozperftest/mozperftest/system/android_perf_tuner.py @@ -0,0 +1,144 @@ +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this file, +# You can obtain one at http://mozilla.org/MPL/2.0/. + + +def tune_performance(device, log=None, timeout=None): + """Set various performance-oriented parameters, to reduce jitter. + + This includes some device-specific kernel tweaks. + + For more information, see https://bugzilla.mozilla.org/show_bug.cgi?id=1547135. + """ + PerformanceTuner(device, log=log, timeout=timeout).tune_performance() + + +class PerformanceTuner: + def __init__(self, device, log=None, timeout=None): + self.device = device + self.log = log is not None and log or self.device._logger + self.timeout = timeout + + def tune_performance(self): + self.log.info("tuning android device performance") + self.set_svc_power_stayon() + if self.device.is_rooted: + device_name = self.device.shell_output( + "getprop ro.product.model", timeout=self.timeout + ) + # all commands require root shell from here on + self.set_scheduler() + self.set_virtual_memory_parameters() + self.turn_off_services() + self.set_cpu_performance_parameters(device_name) + self.set_gpu_performance_parameters(device_name) + self.set_kernel_performance_parameters() + self.device.clear_logcat(timeout=self.timeout) + self.log.info("android device performance tuning complete") + + def _set_value_and_check_exitcode(self, file_name, value): + self.log.info("setting {} to {}".format(file_name, value)) + if self.device.shell_bool( + " ".join(["echo", str(value), ">", str(file_name)]), + timeout=self.timeout, + ): + self.log.info("successfully set {} to {}".format(file_name, value)) + else: + self.log.warning("command failed") + + def set_svc_power_stayon(self): + self.log.info("set device to stay awake on usb") + self.device.shell_bool("svc power stayon usb", timeout=self.timeout) + + def set_scheduler(self): + self.log.info("setting scheduler to noop") + scheduler_location = "/sys/block/sda/queue/scheduler" + + self._set_value_and_check_exitcode(scheduler_location, "noop") + + def turn_off_services(self): + services = [ + "mpdecision", + "thermal-engine", + "thermald", + ] + for service in services: + self.log.info(" ".join(["turning off service:", service])) + self.device.shell_bool(" ".join(["stop", service]), timeout=self.timeout) + + services_list_output = self.device.shell_output( + "service list", timeout=self.timeout + ) + for service in services: + if service not in services_list_output: + self.log.info(" ".join(["successfully terminated:", service])) + else: + self.log.warning(" ".join(["failed to terminate:", service])) + + def set_virtual_memory_parameters(self): + self.log.info("setting virtual memory parameters") + commands = { + "/proc/sys/vm/swappiness": 0, + "/proc/sys/vm/dirty_ratio": 85, + "/proc/sys/vm/dirty_background_ratio": 70, + } + + for key, value in commands.items(): + self._set_value_and_check_exitcode(key, value) + + def set_cpu_performance_parameters(self, device_name=None): + self.log.info("setting cpu performance parameters") + commands = {} + + # Samsung A51 perf tuning: Bug 1876543 + # Pixel 6 perf tuning: Bug 1876545 + # Samsung S21 perf tuning: Bug 1876546 + if device_name is not None: + device_name = self.device.shell_output( + "getprop ro.product.model", timeout=self.timeout + ) + + self.log.info( + "CPU for device with ro.product.model '{}' unknown, not scaling_governor".format( + device_name + ) + ) + + for key, value in commands.items(): + self._set_value_and_check_exitcode(key, value) + + def set_gpu_performance_parameters(self, device_name=None): + self.log.info("setting gpu performance parameters") + commands = { + "/sys/class/kgsl/kgsl-3d0/bus_split": "0", + "/sys/class/kgsl/kgsl-3d0/force_bus_on": "1", + "/sys/class/kgsl/kgsl-3d0/force_rail_on": "1", + "/sys/class/kgsl/kgsl-3d0/force_clk_on": "1", + "/sys/class/kgsl/kgsl-3d0/force_no_nap": "1", + "/sys/class/kgsl/kgsl-3d0/idle_timer": "1000000", + } + + if not device_name: + device_name = self.device.shell_output( + "getprop ro.product.model", timeout=self.timeout + ) + + self.log.info( + "GPU for device with ro.product.model '{}' unknown, not setting devfreq".format( + device_name + ) + ) + + for key, value in commands.items(): + self._set_value_and_check_exitcode(key, value) + + def set_kernel_performance_parameters(self): + self.log.info("setting kernel performance parameters") + commands = { + "/sys/kernel/debug/msm-bus-dbg/shell-client/update_request": "1", + "/sys/kernel/debug/msm-bus-dbg/shell-client/mas": "1", + "/sys/kernel/debug/msm-bus-dbg/shell-client/ab": "0", + "/sys/kernel/debug/msm-bus-dbg/shell-client/slv": "512", + } + for key, value in commands.items(): + self._set_value_and_check_exitcode(key, value) diff --git a/python/mozperftest/mozperftest/system/android_startup.py b/python/mozperftest/mozperftest/system/android_startup.py new file mode 100644 index 0000000000..abf5b04d55 --- /dev/null +++ b/python/mozperftest/mozperftest/system/android_startup.py @@ -0,0 +1,414 @@ +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at http://mozilla.org/MPL/2.0/. +import re +import statistics +import time +from datetime import datetime, timedelta + +import mozdevice + +from .android import AndroidDevice + +DATETIME_FORMAT = "%Y.%m.%d" +PAGE_START = re.compile("GeckoSession: handleMessage GeckoView:PageStart uri=") + +PROD_FENIX = "fenix" +PROD_FOCUS = "focus" +PROC_GVEX = "geckoview_example" + +KEY_NAME = "name" +KEY_PRODUCT = "product" +KEY_DATETIME = "date" +KEY_COMMIT = "commit" +KEY_ARCHITECTURE = "architecture" +KEY_TEST_NAME = "test_name" + +MEASUREMENT_DATA = ["mean", "median", "standard_deviation"] +OLD_VERSION_FOCUS_PAGE_START_LINE_COUNT = 3 +NEW_VERSION_FOCUS_PAGE_START_LINE_COUNT = 2 +STDOUT_LINE_COUNT = 2 + +TEST_COLD_MAIN_FF = "cold_main_first_frame" +TEST_COLD_MAIN_RESTORE = "cold_main_session_restore" +TEST_COLD_VIEW_FF = "cold_view_first_frame" +TEST_COLD_VIEW_NAV_START = "cold_view_nav_start" +TEST_URI = "https://example.com" + +BASE_URL_DICT = { + PROD_FENIX: ( + "https://firefox-ci-tc.services.mozilla.com/api/index/v1/task/" + "mobile.v3.firefox-android.apks.fenix-nightly.{date}.latest.{architecture}/artifacts/" + "public%2Fbuild%2Ftarget.{architecture}.apk" + ), + PROD_FENIX + + "-latest": ( + "https://firefox-ci-tc.services.mozilla.com/api/index/v1/task/" + "mobile.v3.firefox-android.apks.fenix-nightly.latest.{architecture}/artifacts/" + "public%2Fbuild%2Ftarget.{architecture}.apk" + ), + PROD_FOCUS: ( + "https://firefox-ci-tc.services.mozilla.com/api/index/v1/task/" + "mobile.v3.firefox-android.apks.focus-nightly.{date}.latest.{architecture}" + "/artifacts/public%2Fbuild%2Ftarget.{architecture}.apk" + ), + PROD_FOCUS + + "-latest": ( + "https://firefox-ci-tc.services.mozilla.com/api/index/v1/task/" + "mobile.v3.firefox-android.apks.focus-nightly.latest.{architecture}" + "/artifacts/public%2Fbuild%2Ftarget.{architecture}.apk" + ), + PROC_GVEX: ( + "https://firefox-ci-tc.services.mozilla.com/api/index/v1/task/" + "gecko.v2.mozilla-central.pushdate.{date}.latest.mobile.android-" + "{architecture}-debug/artifacts/public%2Fbuild%2Fgeckoview_example.apk" + ), + PROC_GVEX + + "-latest": ( + "https://firefox-ci-tc.services.mozilla.com/api/index/v1/task/" + "gecko.v2.mozilla-central.shippable.latest.mobile.android-" + "{architecture}-opt/artifacts/public/build/geckoview_example.apk" + ), +} +PROD_TO_CHANNEL_TO_PKGID = { + PROD_FENIX: { + "nightly": "org.mozilla.fenix", + "beta": "org.mozilla.firefox.beta", + "release": "org.mozilla.firefox", + "debug": "org.mozilla.fenix.debug", + }, + PROD_FOCUS: { + "nightly": "org.mozilla.focus.nightly", + "beta": "org.mozilla.focus.beta", # only present since post-fenix update. + "release": "org.mozilla.focus", + "debug": "org.mozilla.focus.debug", + }, + PROC_GVEX: { + "nightly": "org.mozilla.geckoview_example", + }, +} +TEST_LIST = [ + "cold_main_first_frame", + "cold_view_nav_start", + "cold_view_first_frame", + "cold_main_session_restore", +] +# "cold_view_first_frame", "cold_main_session_restore" are 2 disabled tests(broken) + + +class AndroidStartUpDownloadError(Exception): + """Failure downloading Firefox Nightly APK""" + + pass + + +class AndroidStartUpInstallError(Exception): + """Failure installing Firefox on the android device""" + + pass + + +class AndroidStartUpUnknownTestError(Exception): + """ + Test name provided is not one avaiable to test, this is either because + the test is currently not being tested or a typo in the spelling + """ + + pass + + +class AndroidStartUpMatchingError(Exception): + """ + We expected a certain number of matches but did not get them + """ + + pass + + +class AndroidStartUpData: + def open_data(self, data): + return { + "name": "AndroidStartUp", + "subtest": data["name"], + "data": [ + {"file": "android_startup", "value": value, "xaxis": xaxis} + for xaxis, value in enumerate(data["values"]) + ], + "shouldAlert": True, + } + + def transform(self, data): + return data + + merge = transform + + +class AndroidStartUp(AndroidDevice): + name = "AndroidStartUp" + activated = False + arguments = { + "test-name": { + "type": str, + "default": "", + "help": "This is the startup android test that will be run on the a51", + }, + "apk_metadata": { + "type": str, + "default": "", + "help": "This is the startup android test that will be run on the a51", + }, + "product": { + "type": str, + "default": "", + "help": "This is the startup android test that will be run on the a51", + }, + "release-channel": { + "type": str, + "default": "", + "help": "This is the startup android test that will be run on the a51", + }, + } + + def __init__(self, env, mach_cmd): + super(AndroidStartUp, self).__init__(env, mach_cmd) + self.android_activity = None + self.capture_logcat = self.capture_file = self.app_name = None + self.device = mozdevice.ADBDevice(use_root=False) + + def run(self, metadata): + options = metadata.script["options"] + self.test_name = self.get_arg("test-name") + self.apk_metadata = self.get_arg("apk-metadata") + self.product = self.get_arg("product") + self.release_channel = self.get_arg("release_channel") + self.single_date = options["test_parameters"]["single_date"] + self.date_range = options["test_parameters"]["date_range"] + self.startup_cache = options["test_parameters"]["startup_cache"] + self.test_cycles = options["test_parameters"]["test_cycles"] + self.package_id = PROD_TO_CHANNEL_TO_PKGID[self.product][self.release_channel] + self.proc_start = re.compile( + rf"ActivityManager: Start proc \d+:{self.package_id}/" + ) + + apk_metadata = self.apk_metadata + self.get_measurements(apk_metadata, metadata) + + # Cleanup + self.device.shell(f"rm {apk_metadata[KEY_NAME]}") + + return metadata + + def get_measurements(self, apk_metadata, metadata): + measurements = self.run_performance_analysis(apk_metadata) + self.add_to_metadata(measurements, metadata) + + def get_date_array_for_range(self, start, end): + startdate = datetime.strptime(start, DATETIME_FORMAT) + enddate = datetime.strptime(end, DATETIME_FORMAT) + delta_dates = (enddate - startdate).days + 1 + return [ + (startdate + timedelta(days=i)).strftime("%Y.%m.%d") + for i in range(delta_dates) + ] + + def add_to_metadata(self, measurements, metadata): + if measurements is not None: + for key, value in measurements.items(): + metadata.add_result( + { + "name": f"AndroidStartup:{self.product}", + "framework": {"name": "mozperftest"}, + "transformer": "mozperftest.system.android_startup:AndroidStartUpData", + "shouldAlert": True, + "results": [ + { + "values": [value], + "name": key, + "shouldAlert": True, + } + ], + } + ) + + def run_performance_analysis(self, apk_metadata): + # Installing the application on the device and getting ready to run the tests + install_path = apk_metadata[KEY_NAME] + if self.custom_apk_exists(): + install_path = self.custom_apk_path + + self.device.uninstall_app(self.package_id) + self.info(f"Installing {install_path}...") + app_name = self.device.install_app(install_path) + if self.device.is_app_installed(app_name): + self.info(f"Successfully installed {app_name}") + else: + raise AndroidStartUpInstallError("The android app was not installed") + self.apk_name = apk_metadata[KEY_NAME].split(".")[0] + + return self.run_tests() + + def run_tests(self): + measurements = {} + # Iterate through the tests in the test list + self.info(f"Running {self.test_name} on {self.apk_name}...") + self.skip_onboarding(self.test_name) + time.sleep(self.get_warmup_delay_seconds()) + test_measurements = [] + + for i in range(self.test_cycles): + start_cmd_args = self.get_start_cmd(self.test_name) + self.info(start_cmd_args) + self.device.stop_application(self.package_id) + time.sleep(1) + self.info(f"iteration {i + 1}") + self.device.shell("logcat -c") + process = self.device.shell_output(start_cmd_args).splitlines() + test_measurements.append(self.get_measurement(self.test_name, process)) + + self.info(f"{self.test_name}: {str(test_measurements)}") + measurements[f"{self.test_name}.{MEASUREMENT_DATA[0]}"] = statistics.mean( + test_measurements + ) + self.info(f"Mean: {statistics.mean(test_measurements)}") + measurements[f"{self.test_name}.{MEASUREMENT_DATA[1]}"] = statistics.median( + test_measurements + ) + self.info(f"Median: {statistics.median(test_measurements)}") + if self.test_cycles > 1: + measurements[f"{self.test_name}.{MEASUREMENT_DATA[2]}"] = statistics.stdev( + test_measurements + ) + self.info(f"Standard Deviation: {statistics.stdev(test_measurements)}") + + return measurements + + def get_measurement(self, test_name, stdout): + if test_name in [TEST_COLD_MAIN_FF, TEST_COLD_VIEW_FF]: + return self.get_measurement_from_am_start_log(stdout) + elif test_name in [TEST_COLD_VIEW_NAV_START, TEST_COLD_MAIN_RESTORE]: + # We must sleep until the Navigation::Start event occurs. If we don't + # the script will fail. This can take up to 14s on the G5 + time.sleep(17) + proc = self.device.shell_output("logcat -d") + return self.get_measurement_from_nav_start_logcat(proc) + + def get_measurement_from_am_start_log(self, stdout): + total_time_prefix = "TotalTime: " + matching_lines = [line for line in stdout if line.startswith(total_time_prefix)] + if len(matching_lines) != 1: + raise AndroidStartUpMatchingError( + f"Each run should only have 1 {total_time_prefix}." + f"However, this run unexpectedly had {matching_lines} matching lines" + ) + duration = int(matching_lines[0][len(total_time_prefix) :]) + return duration + + def get_measurement_from_nav_start_logcat(self, process_output): + def __line_to_datetime(line): + date_str = " ".join(line.split(" ")[:2]) # e.g. "05-18 14:32:47.366" + # strptime needs microseconds. logcat outputs millis so we append zeroes + date_str_with_micros = date_str + "000" + return datetime.strptime(date_str_with_micros, "%m-%d %H:%M:%S.%f") + + def __get_proc_start_datetime(): + # This regex may not work on older versions of Android: we don't care + # yet because supporting older versions isn't in our requirements. + proc_start_lines = [line for line in lines if self.proc_start.search(line)] + if len(proc_start_lines) != 1: + raise AndroidStartUpMatchingError( + f"Expected to match 1 process start string but matched {len(proc_start_lines)}" + ) + return __line_to_datetime(proc_start_lines[0]) + + def __get_page_start_datetime(): + page_start_lines = [line for line in lines if PAGE_START.search(line)] + page_start_line_count = len(page_start_lines) + page_start_assert_msg = "found len=" + str(page_start_line_count) + + # In focus versions <= v8.8.2, it logs 3 PageStart lines and these include actual uris. + # We need to handle our assertion differently due to the different line count. In focus + # versions >= v8.8.3, this measurement is broken because the logcat were removed. + is_old_version_of_focus = ( + "about:blank" in page_start_lines[0] and self.product == PROD_FOCUS + ) + if is_old_version_of_focus: + assert ( + page_start_line_count + == OLD_VERSION_FOCUS_PAGE_START_LINE_COUNT # should be 3 + ), page_start_assert_msg # Lines: about:blank, target URL, target URL. + else: + assert ( + page_start_line_count + == NEW_VERSION_FOCUS_PAGE_START_LINE_COUNT # Should be 2 + ), page_start_assert_msg # Lines: about:blank, target URL. + return __line_to_datetime( + page_start_lines[1] + ) # 2nd PageStart is for target URL. + + lines = process_output.split("\n") + elapsed_seconds = ( + __get_page_start_datetime() - __get_proc_start_datetime() + ).total_seconds() + elapsed_millis = round(elapsed_seconds * 1000) + return elapsed_millis + + def get_warmup_delay_seconds(self): + """ + We've been told the start up cache is populated ~60s after first start up. As such, + we should measure start up with the start up cache populated. If the + args say we shouldn't wait, we only wait a short duration ~= visual completeness. + """ + return 60 if self.startup_cache else 5 + + def get_start_cmd(self, test_name): + intent_action_prefix = "android.intent.action.{}" + if test_name in [TEST_COLD_MAIN_FF, TEST_COLD_MAIN_RESTORE]: + intent = ( + f"-a {intent_action_prefix.format('MAIN')} " + f"-c android.intent.category.LAUNCHER" + ) + elif test_name in [TEST_COLD_VIEW_FF, TEST_COLD_VIEW_NAV_START]: + intent = f"-a {intent_action_prefix.format('VIEW')} -d {TEST_URI}" + else: + raise AndroidStartUpUnknownTestError( + "Unknown test provided please double check the test name and spelling" + ) + + # You can't launch an app without an pkg_id/activity pair + component_name = self.get_component_name_for_intent(intent) + cmd = f"am start-activity -W -n {component_name} {intent} " + + # If focus skip onboarding: it is not stateful so must be sent for every cold start intent + if self.product == PROD_FOCUS: + cmd += "--ez performancetest true" + + return cmd + + def get_component_name_for_intent(self, intent): + resolve_component_args = ( + f"cmd package resolve-activity --brief {intent} {self.package_id}" + ) + result_output = self.device.shell_output(resolve_component_args) + stdout = result_output.splitlines() + if len(stdout) != STDOUT_LINE_COUNT: # Should be 2 + raise AndroidStartUpMatchingError(f"expected 2 lines. Got: {stdout}") + return stdout[1] + + def skip_onboarding(self, test_name): + """ + We skip onboarding for focus in measure_start_up.py because it's stateful + and needs to be called for every cold start intent. + Onboarding only visibly gets in the way of our MAIN test results. + """ + if self.product == PROD_FOCUS or test_name not in { + TEST_COLD_MAIN_FF, + TEST_COLD_MAIN_RESTORE, + }: + return + + # This sets mutable state so we only need to pass this flag once, before we start the test + self.device.shell( + f"am start-activity -W -a android.intent.action.MAIN --ez " + f"performancetest true -n{self.package_id}/org.mozilla.fenix.App" + ) + time.sleep(4) # ensure skip onboarding call has time to propagate. diff --git a/python/mozperftest/mozperftest/system/example.zip b/python/mozperftest/mozperftest/system/example.zip Binary files differnew file mode 100644 index 0000000000..8c724762d3 --- /dev/null +++ b/python/mozperftest/mozperftest/system/example.zip diff --git a/python/mozperftest/mozperftest/system/macos.py b/python/mozperftest/mozperftest/system/macos.py new file mode 100644 index 0000000000..ac778ae982 --- /dev/null +++ b/python/mozperftest/mozperftest/system/macos.py @@ -0,0 +1,121 @@ +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at http://mozilla.org/MPL/2.0/. +import os +import platform +import shutil +import subprocess +import tempfile +from pathlib import Path + +from mozperftest.layers import Layer + +# Add here any option that might point to a DMG file we want to extract. The key +# is name of the option and the value, the file in the DMG we want to use for +# the option. +POTENTIAL_DMGS = { + "browsertime-binary": "Contents/MacOS/firefox", + "xpcshell-xre-path": "Contents/MacOS", + "mochitest-binary": "Contents/MacOS/firefox", +} + + +class MacosDevice(Layer): + """Runs on macOS to mount DMGs if we see one.""" + + name = "macos" + activated = platform.system() == "Darwin" + + def __init__(self, env, mach_cmd): + super(MacosDevice, self).__init__(env, mach_cmd) + self._tmp_dirs = [] + + def _run_process(self, args): + p = subprocess.Popen( + args, + stdout=subprocess.PIPE, + stderr=subprocess.PIPE, + universal_newlines=True, + ) + + stdout, stderr = p.communicate(timeout=45) + if p.returncode != 0: + raise subprocess.CalledProcessError( + stdout=stdout, stderr=stderr, returncode=p.returncode + ) + + return stdout + + def extract_app(self, dmg, target): + mount = Path(tempfile.mkdtemp()) + + if not Path(dmg).exists(): + raise FileNotFoundError(dmg) + + # mounting the DMG with hdiutil + cmd = f"hdiutil attach -nobrowse -mountpoint {str(mount)} {dmg}" + try: + self._run_process(cmd.split()) + except subprocess.CalledProcessError: + self.error(f"Can't mount {dmg}") + if mount.exists(): + shutil.rmtree(str(mount)) + raise + + # browse the mounted volume, to look for the app. + found = False + try: + for f in os.listdir(str(mount)): + if not f.endswith(".app"): + continue + app = mount / f + shutil.copytree(str(app), str(target)) + found = True + break + finally: + try: + self._run_process(f"hdiutil detach {str(mount)}".split()) + except subprocess.CalledProcessError as e: # noqa + self.warning("Detach failed {e.stdout}") + finally: + if mount.exists(): + shutil.rmtree(str(mount)) + if not found: + self.error(f"No app file found in {dmg}") + raise IOError(dmg) + + def run(self, metadata): + # Each DMG is mounted, then we look for the .app + # directory in it, which is copied in a directory + # alongside the .dmg file. That directory + # is removed during teardown. + for option, path_in_dmg in POTENTIAL_DMGS.items(): + value = self.get_arg(option) + + if value is None or not value.endswith(".dmg"): + continue + + self.info(f"Mounting {value}") + dmg_file = Path(value) + if not dmg_file.exists(): + raise FileNotFoundError(str(dmg_file)) + + # let's unpack the DMG in place... + target = dmg_file.parent / dmg_file.name.split(".")[0] + self._tmp_dirs.append(target) + self.extract_app(dmg_file, target) + + # ... find a specific file or directory if needed ... + path = target / path_in_dmg + if not path.exists(): + raise FileNotFoundError(str(path)) + + # ... and swap the browsertime argument + self.info(f"Using {path} for {option}") + self.env.set_arg(option, str(path)) + return metadata + + def teardown(self): + for dir in self._tmp_dirs: + if dir.exists(): + shutil.rmtree(str(dir)) diff --git a/python/mozperftest/mozperftest/system/pingserver.py b/python/mozperftest/mozperftest/system/pingserver.py new file mode 100644 index 0000000000..4ae6b9a113 --- /dev/null +++ b/python/mozperftest/mozperftest/system/pingserver.py @@ -0,0 +1,94 @@ +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at http://mozilla.org/MPL/2.0/. +import json +import os +import socketserver +import threading +import time +from pathlib import Path + +from mozlog import get_proxy_logger + +from mozperftest.layers import Layer +from mozperftest.utils import install_package + +LOG = get_proxy_logger(component="proxy") +HERE = os.path.dirname(__file__) + + +class PingServer(Layer): + """Runs the edgeping layer""" + + name = "pingserver" + activated = False + + arguments = {} + + def setup(self): + # Install edgeping and requests + deps = ["edgeping==0.1", "requests==2.9.1"] + for dep in deps: + install_package(self.mach_cmd.virtualenv_manager, dep) + + def _wait_for_server(self, endpoint): + import requests + + start = time.monotonic() + while True: + try: + requests.get(endpoint, timeout=0.1) + return + except Exception: + # we want to wait at most 5sec. + if time.monotonic() - start > 5.0: + raise + time.sleep(0.01) + + def run(self, metadata): + from edgeping.server import PingHandling + + self.verbose = self.get_arg("verbose") + self.metadata = metadata + self.debug("Starting the Edgeping server") + self.httpd = socketserver.TCPServer(("localhost", 0), PingHandling) + self.server_thread = threading.Thread(target=self.httpd.serve_forever) + # the chosen socket gets picked in the constructor so we can grab it here + address = self.httpd.server_address + self.endpoint = f"http://{address[0]}:{address[1]}" + self.server_thread.start() + self._wait_for_server(self.endpoint + "/status") + + self.debug(f"Edgeping coserver running at {self.endpoint}") + prefs = { + "toolkit.telemetry.server": self.endpoint, + "telemetry.fog.test.localhost_port": address[1], + "datareporting.healthreport.uploadEnabled": True, + "datareporting.policy.dataSubmissionEnabled": True, + "toolkit.telemetry.enabled": True, + "toolkit.telemetry.unified": True, + "toolkit.telemetry.shutdownPingSender.enabled": True, + "datareporting.policy.dataSubmissionPolicyBypassNotification": True, + "toolkit.telemetry.send.overrideOfficialCheck": True, + } + if self.verbose: + prefs["toolkit.telemetry.log.level"] = "Trace" + prefs["toolkit.telemetry.log.dump"] = True + + browser_prefs = metadata.get_options("browser_prefs") + browser_prefs.update(prefs) + return metadata + + def teardown(self): + import requests + + self.info("Grabbing the pings") + pings = requests.get(f"{self.endpoint}/pings").json() + output = Path(self.get_arg("output"), "telemetry.json") + self.info(f"Writing in {output}") + with output.open("w") as f: + f.write(json.dumps(pings)) + + self.debug("Stopping the Edgeping coserver") + self.httpd.shutdown() + self.server_thread.join() diff --git a/python/mozperftest/mozperftest/system/profile.py b/python/mozperftest/mozperftest/system/profile.py new file mode 100644 index 0000000000..d29744a818 --- /dev/null +++ b/python/mozperftest/mozperftest/system/profile.py @@ -0,0 +1,122 @@ +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at http://mozilla.org/MPL/2.0/. +import os +import shutil +import tempfile +from pathlib import Path + +from condprof.client import ProfileNotFoundError, get_profile +from condprof.util import get_current_platform +from mozprofile import create_profile +from mozprofile.prefs import Preferences + +from mozperftest.layers import Layer + +HERE = os.path.dirname(__file__) + + +class Profile(Layer): + name = "profile" + activated = True + arguments = { + "directory": {"type": str, "default": None, "help": "Profile to use"}, + "user-js": {"type": str, "default": None, "help": "Custom user.js"}, + "conditioned": { + "action": "store_true", + "default": False, + "help": "Use a conditioned profile.", + }, + "conditioned-scenario": { + "type": str, + "default": "settled", + "help": "Conditioned scenario to use", + }, + "conditioned-platform": { + "type": str, + "default": None, + "help": "Conditioned platform to use (use local by default)", + }, + "conditioned-project": { + "type": str, + "default": "mozilla-central", + "help": "Conditioned project", + "choices": ["try", "mozilla-central"], + }, + } + + def __init__(self, env, mach_cmd): + super(Profile, self).__init__(env, mach_cmd) + self._created_dirs = [] + + def setup(self): + pass + + def _cleanup(self): + pass + + def _get_conditioned_profile(self): + platform = self.get_arg("conditioned-platform") + if platform is None: + platform = get_current_platform() + scenario = self.get_arg("conditioned-scenario") + project = self.get_arg("conditioned-project") + alternate_project = "mozilla-central" if project != "mozilla-central" else "try" + + temp_dir = tempfile.mkdtemp() + try: + condprof = get_profile(temp_dir, platform, scenario, repo=project) + except ProfileNotFoundError: + condprof = get_profile(temp_dir, platform, scenario, repo=alternate_project) + except Exception: + raise + + # now get the full directory path to our fetched conditioned profile + condprof = Path(temp_dir, condprof) + if not condprof.exists(): + raise OSError(str(condprof)) + + return condprof + + def run(self, metadata): + # using a conditioned profile + if self.get_arg("conditioned"): + profile_dir = self._get_conditioned_profile() + self.set_arg("profile-directory", str(profile_dir)) + self._created_dirs.append(str(profile_dir)) + return metadata + + if self.get_arg("directory") is not None: + # no need to create one or load a conditioned one + return metadata + + # fresh profile + profile = create_profile(app="firefox") + + # mozprofile.Profile.__del__ silently deletes the profile + # it creates in a non-deterministic time (garbage collected) by + # calling cleanup. We override this silly behavior here. + profile.cleanup = self._cleanup + + prefs = metadata.get_options("browser_prefs") + + if prefs == {}: + prefs["mozperftest"] = "true" + + # apply custom user prefs if any + user_js = self.get_arg("user-js") + if user_js is not None: + self.info("Applying use prefs from %s" % user_js) + default_prefs = dict(Preferences.read_prefs(user_js)) + prefs.update(default_prefs) + + profile.set_preferences(prefs) + self.info("Created profile at %s" % profile.profile) + self._created_dirs.append(profile.profile) + self.set_arg("profile-directory", profile.profile) + return metadata + + def teardown(self): + for dir in self._created_dirs: + if os.path.exists(dir): + shutil.rmtree(dir) diff --git a/python/mozperftest/mozperftest/system/proxy.py b/python/mozperftest/mozperftest/system/proxy.py new file mode 100644 index 0000000000..d0a8c7ff97 --- /dev/null +++ b/python/mozperftest/mozperftest/system/proxy.py @@ -0,0 +1,246 @@ +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at http://mozilla.org/MPL/2.0/. +import json +import os +import pathlib +import re +import signal +import tempfile +import threading + +from mozdevice import ADBDevice +from mozlog import get_proxy_logger +from mozprocess import ProcessHandler + +from mozperftest.layers import Layer +from mozperftest.utils import ( + ON_TRY, + download_file, + get_output_dir, + get_pretty_app_name, + install_package, +) + +LOG = get_proxy_logger(component="proxy") +HERE = os.path.dirname(__file__) + + +class OutputHandler(object): + def __init__(self): + self.proc = None + self.port = None + self.port_event = threading.Event() + + def __call__(self, line): + line = line.strip() + if not line: + return + line = line.decode("utf-8", errors="replace") + try: + data = json.loads(line) + except ValueError: + self.process_output(line) + return + + if isinstance(data, dict) and "action" in data: + # Retrieve the port number for the proxy server from the logs of + # our subprocess. + m = re.match(r"Proxy running on port (\d+)", data.get("message", "")) + if m: + self.port = int(m.group(1)) + self.port_event.set() + LOG.log_raw(data) + else: + self.process_output(json.dumps(data)) + + def finished(self): + self.port_event.set() + + def process_output(self, line): + if self.proc is None: + LOG.process_output(line) + else: + LOG.process_output(self.proc.pid, line) + + def wait_for_port(self): + self.port_event.wait() + return self.port + + +class ProxyRunner(Layer): + """Use a proxy""" + + name = "proxy" + activated = False + + arguments = { + "mode": { + "type": str, + "choices": ["record", "playback"], + "help": "Proxy server mode. Use `playback` to replay from the provided file(s). " + "Use `record` to generate a new recording at the path specified by `--file`. " + "playback - replay from provided file. " + "record - generate a new recording at the specified path.", + }, + "file": { + "type": str, + "nargs": "+", + "help": "The playback files to replay, or the file that a recording will be saved to. " + "For playback, it can be any combination of the following: zip file, manifest file, " + "or a URL to zip/manifest file. " + "For recording, it's a zip fle.", + }, + "perftest-page": { + "type": str, + "default": None, + "help": "This option can be used to specify a single test to record rather than " + "having to continuously modify the pageload_sites.json. This flag should only be " + "used by the perftest team and selects items from " + "`testing/performance/pageload_sites.json` based on the name field. Note that " + "the login fields won't be checked with a request such as this (i.e. it overrides " + "those settings).", + }, + "deterministic": { + "action": "store_true", + "default": False, + "help": "If set, the deterministic JS script will be injected into the pages.", + }, + } + + def __init__(self, env, mach_cmd): + super(ProxyRunner, self).__init__(env, mach_cmd) + self.proxy = None + self.tmpdir = None + + def setup(self): + try: + import mozproxy # noqa: F401 + except ImportError: + # Install mozproxy and its vendored deps. + mozbase = pathlib.Path(self.mach_cmd.topsrcdir, "testing", "mozbase") + mozproxy_deps = ["mozinfo", "mozlog", "mozproxy"] + for i in mozproxy_deps: + install_package( + self.mach_cmd.virtualenv_manager, pathlib.Path(mozbase, i) + ) + + # set MOZ_HOST_BIN to find cerutil. Required to set certifcates on android + os.environ["MOZ_HOST_BIN"] = self.mach_cmd.bindir + + def run(self, metadata): + self.metadata = metadata + replay_file = self.get_arg("file") + + # Check if we have a replay file + if replay_file is None: + raise ValueError("Proxy file not provided!!") + + if replay_file is not None and replay_file.startswith("http"): + self.tmpdir = tempfile.TemporaryDirectory() + target = pathlib.Path(self.tmpdir.name, "recording.zip") + self.info("Downloading %s" % replay_file) + download_file(replay_file, target) + replay_file = target + + self.info("Setting up the proxy") + + command = [ + self.mach_cmd.virtualenv_manager.python_path, + "-m", + "mozproxy.driver", + "--topsrcdir=" + self.mach_cmd.topsrcdir, + "--objdir=" + self.mach_cmd.topobjdir, + "--profiledir=" + self.get_arg("profile-directory"), + ] + + if not ON_TRY: + command.extend(["--local"]) + + if metadata.flavor == "mobile-browser": + command.extend(["--tool=%s" % "mitmproxy-android"]) + command.extend(["--binary=android"]) + command.extend( + [f"--app={get_pretty_app_name(self.get_arg('android-app-name'))}"] + ) + else: + command.extend(["--tool=%s" % "mitmproxy"]) + # XXX See bug 1712337, we need a single point where we can get the binary used from + # this is required to make it work localy + binary = self.get_arg("browsertime-binary") + if binary is None: + binary = self.mach_cmd.get_binary_path() + command.extend(["--binary=%s" % binary]) + + if self.get_arg("mode") == "record": + output = self.get_arg("output") + if output is None: + output = pathlib.Path(self.mach_cmd.topsrcdir, "artifacts") + results_dir = get_output_dir(output) + + command.extend(["--mode", "record"]) + command.append(str(pathlib.Path(results_dir, replay_file))) + elif self.get_arg("mode") == "playback": + command.extend(["--mode", "playback"]) + command.append(str(replay_file)) + else: + raise ValueError("Proxy mode not provided please provide proxy mode") + + inject_deterministic = self.get_arg("deterministic") + if inject_deterministic: + command.extend(["--deterministic"]) + + print(" ".join(command)) + self.output_handler = OutputHandler() + self.proxy = ProcessHandler( + command, + processOutputLine=self.output_handler, + onFinish=self.output_handler.finished, + ) + self.output_handler.proc = self.proxy + self.proxy.run() + + # Wait until we've retrieved the proxy server's port number so we can + # configure the browser properly. + port = self.output_handler.wait_for_port() + if port is None: + raise ValueError("Unable to retrieve the port number from mozproxy") + self.info("Received port number %s from mozproxy" % port) + + prefs = { + "network.proxy.type": 1, + "network.proxy.http": "127.0.0.1", + "network.proxy.http_port": port, + "network.proxy.ssl": "127.0.0.1", + "network.proxy.ssl_port": port, + "network.proxy.no_proxies_on": "127.0.0.1", + } + browser_prefs = metadata.get_options("browser_prefs") + browser_prefs.update(prefs) + + if metadata.flavor == "mobile-browser": + self.info("Setting reverse port fw for android device") + device = ADBDevice() + device.create_socket_connection("reverse", "tcp:%s" % port, "tcp:%s" % port) + + return metadata + + def teardown(self): + err = None + if self.proxy is not None: + returncode = self.proxy.wait(0) + if returncode is not None: + err = ValueError( + "mozproxy terminated early with return code %d" % returncode + ) + else: + kill_signal = getattr(signal, "CTRL_BREAK_EVENT", signal.SIGINT) + os.kill(self.proxy.pid, kill_signal) + self.proxy.wait() + self.proxy = None + if self.tmpdir is not None: + self.tmpdir.cleanup() + self.tmpdir = None + + if err: + raise err diff --git a/python/mozperftest/mozperftest/test/__init__.py b/python/mozperftest/mozperftest/test/__init__.py new file mode 100644 index 0000000000..a7f9133fb6 --- /dev/null +++ b/python/mozperftest/mozperftest/test/__init__.py @@ -0,0 +1,28 @@ +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at http://mozilla.org/MPL/2.0/. +from mozperftest.layers import Layers +from mozperftest.test.androidlog import AndroidLog +from mozperftest.test.browsertime import BrowsertimeRunner +from mozperftest.test.mochitest import Mochitest +from mozperftest.test.webpagetest import WebPageTest +from mozperftest.test.xpcshell import XPCShell + + +def get_layers(): + return BrowsertimeRunner, AndroidLog, XPCShell, WebPageTest, Mochitest + + +def pick_test(env, flavor, mach_cmd): + if flavor == "xpcshell": + return Layers(env, mach_cmd, (XPCShell,)) + if flavor == "desktop-browser": + return Layers(env, mach_cmd, (BrowsertimeRunner,)) + if flavor == "mobile-browser": + return Layers(env, mach_cmd, (BrowsertimeRunner, AndroidLog)) + if flavor == "webpagetest": + return Layers(env, mach_cmd, (WebPageTest,)) + if flavor == "mochitest": + return Layers(env, mach_cmd, (Mochitest,)) + + raise NotImplementedError(flavor) diff --git a/python/mozperftest/mozperftest/test/androidlog.py b/python/mozperftest/mozperftest/test/androidlog.py new file mode 100644 index 0000000000..88bf01f2fe --- /dev/null +++ b/python/mozperftest/mozperftest/test/androidlog.py @@ -0,0 +1,62 @@ +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at http://mozilla.org/MPL/2.0/. +from pathlib import Path + +from mozperftest.layers import Layer + + +class AndroidLog(Layer): + """Runs an android log test.""" + + name = "androidlog" + activated = False + arguments = { + "first-timestamp": { + "type": str, + "default": None, + "help": "First timestamp regexp", + }, + "second-timestamp": { + "type": str, + "default": None, + "help": "Second timestamp regexp", + }, + "subtest-name": { + "type": str, + "default": "TimeToDisplayed", + "help": "Name of the metric that is produced", + }, + } + + def _get_logcat(self): + logcat = self.get_arg("android-capture-logcat") + if logcat is None: + raise NotImplementedError() + # check if the path is absolute or relative to output + path = Path(logcat) + if not path.is_absolute(): + return Path(self.get_arg("output"), path).resolve() + return path.resolve() + + def __call__(self, metadata): + app_name = self.get_arg("android-app-name") + first_ts = r".*Start proc.*" + app_name.replace(".", r"\.") + ".*" + second_ts = r".*Fully drawn.*" + app_name.replace(".", r"\.") + ".*" + options = { + "first-timestamp": self.get_arg("first-timestamp", first_ts), + "second-timestamp": self.get_arg("second-timestamp", second_ts), + "processor": self.env.hooks.get("logcat_processor"), + "transform-subtest-name": self.get_arg("subtest-name"), + } + + metadata.add_result( + { + "results": str(self._get_logcat()), + "transformer": "LogCatTimeTransformer", + "transformer-options": options, + "name": "LogCat", + } + ) + + return metadata diff --git a/python/mozperftest/mozperftest/test/browsertime/__init__.py b/python/mozperftest/mozperftest/test/browsertime/__init__.py new file mode 100644 index 0000000000..f5e32101cc --- /dev/null +++ b/python/mozperftest/mozperftest/test/browsertime/__init__.py @@ -0,0 +1,19 @@ +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at http://mozilla.org/MPL/2.0/. + +from mozperftest.test.browsertime.runner import BrowsertimeRunner # noqa + + +def add_option(env, name, value, overwrite=False): + if not overwrite: + options = env.get_arg("browsertime-extra-options", "") + options += f",{name}={value}" + else: + options = f"{name}={value}" + env.set_arg("browsertime-extra-options", options) + + +def add_options(env, options, overwrite=False): + for i, (name, value) in enumerate(options): + add_option(env, name, value, overwrite=overwrite and i == 0) diff --git a/python/mozperftest/mozperftest/test/browsertime/package-lock.json b/python/mozperftest/mozperftest/test/browsertime/package-lock.json new file mode 100644 index 0000000000..af88126fcc --- /dev/null +++ b/python/mozperftest/mozperftest/test/browsertime/package-lock.json @@ -0,0 +1,1874 @@ +{ + "name": "mozilla-central-tools-browsertime", + "requires": true, + "lockfileVersion": 1, + "dependencies": { + "@babel/runtime": { + "version": "7.17.0", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.17.0.tgz", + "integrity": "sha512-etcO/ohMNaNA2UBdaXBBSX/3aEzFMRrVfaPv8Ptc0k+cWpWW0QFiGZ2XnVqQZI1Cf734LbPGmqBKWESfW4x/dQ==", + "dev": true, + "optional": true, + "requires": { + "regenerator-runtime": "^0.13.4" + } + }, + "@cypress/xvfb": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/@cypress/xvfb/-/xvfb-1.2.4.tgz", + "integrity": "sha512-skbBzPggOVYCbnGgV+0dmBdW/s77ZkAOXIC1knS8NagwDjBrNC1LuXtQJeiN6l+m7lzmHtaoUw/ctJKdqkG57Q==", + "dev": true, + "requires": { + "debug": "^3.1.0", + "lodash.once": "^4.1.1" + } + }, + "@devicefarmer/adbkit": { + "version": "2.11.3", + "resolved": "https://registry.npmjs.org/@devicefarmer/adbkit/-/adbkit-2.11.3.tgz", + "integrity": "sha512-rsgWREAvSRQjdP9/3GoAV6Tq+o97haywgbTfCgt5yUqiDpaaq3hlH9FTo9XsdG8x+Jd0VQ9nTC2IXsDu8JGRSA==", + "dev": true, + "requires": { + "@devicefarmer/adbkit-logcat": "^1.1.0", + "@devicefarmer/adbkit-monkey": "~1.0.1", + "bluebird": "~2.9.24", + "commander": "^2.3.0", + "debug": "~2.6.3", + "node-forge": "^0.10.0", + "split": "~0.3.3" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "dev": true + } + } + }, + "@devicefarmer/adbkit-logcat": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@devicefarmer/adbkit-logcat/-/adbkit-logcat-1.1.0.tgz", + "integrity": "sha512-K90P5gUXM/w+yzLvJIRQ+tJooNU6ipUPPQkljtPJ0laR66TGtpt4Gqsjm0n9dPHK1W5KGgU1R5wnCd6RTSlPNA==", + "dev": true + }, + "@devicefarmer/adbkit-monkey": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@devicefarmer/adbkit-monkey/-/adbkit-monkey-1.0.1.tgz", + "integrity": "sha512-HilPrVrCosYWqSyjfpDtaaN1kJwdlBpS+IAflP3z+e7nsEgk3JGJf1Vg0NgHJooTf5HDfXSyZqMVg+5jvXCK0g==", + "dev": true, + "requires": { + "async": "~0.2.9" + } + }, + "@jimp/bmp": { + "version": "0.16.1", + "resolved": "https://registry.npmjs.org/@jimp/bmp/-/bmp-0.16.1.tgz", + "integrity": "sha512-iwyNYQeBawrdg/f24x3pQ5rEx+/GwjZcCXd3Kgc+ZUd+Ivia7sIqBsOnDaMZdKCBPlfW364ekexnlOqyVa0NWg==", + "dev": true, + "optional": true, + "requires": { + "@babel/runtime": "^7.7.2", + "@jimp/utils": "^0.16.1", + "bmp-js": "^0.1.0" + } + }, + "@jimp/core": { + "version": "0.16.1", + "resolved": "https://registry.npmjs.org/@jimp/core/-/core-0.16.1.tgz", + "integrity": "sha512-la7kQia31V6kQ4q1kI/uLimu8FXx7imWVajDGtwUG8fzePLWDFJyZl0fdIXVCL1JW2nBcRHidUot6jvlRDi2+g==", + "dev": true, + "optional": true, + "requires": { + "@babel/runtime": "^7.7.2", + "@jimp/utils": "^0.16.1", + "any-base": "^1.1.0", + "buffer": "^5.2.0", + "exif-parser": "^0.1.12", + "file-type": "^9.0.0", + "load-bmfont": "^1.3.1", + "mkdirp": "^0.5.1", + "phin": "^2.9.1", + "pixelmatch": "^4.0.2", + "tinycolor2": "^1.4.1" + }, + "dependencies": { + "mkdirp": { + "version": "0.5.5", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.5.tgz", + "integrity": "sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ==", + "dev": true, + "optional": true, + "requires": { + "minimist": "^1.2.5" + } + } + } + }, + "@jimp/custom": { + "version": "0.16.1", + "resolved": "https://registry.npmjs.org/@jimp/custom/-/custom-0.16.1.tgz", + "integrity": "sha512-DNUAHNSiUI/j9hmbatD6WN/EBIyeq4AO0frl5ETtt51VN1SvE4t4v83ZA/V6ikxEf3hxLju4tQ5Pc3zmZkN/3A==", + "dev": true, + "optional": true, + "requires": { + "@babel/runtime": "^7.7.2", + "@jimp/core": "^0.16.1" + } + }, + "@jimp/gif": { + "version": "0.16.1", + "resolved": "https://registry.npmjs.org/@jimp/gif/-/gif-0.16.1.tgz", + "integrity": "sha512-r/1+GzIW1D5zrP4tNrfW+3y4vqD935WBXSc8X/wm23QTY9aJO9Lw6PEdzpYCEY+SOklIFKaJYUAq/Nvgm/9ryw==", + "dev": true, + "optional": true, + "requires": { + "@babel/runtime": "^7.7.2", + "@jimp/utils": "^0.16.1", + "gifwrap": "^0.9.2", + "omggif": "^1.0.9" + } + }, + "@jimp/jpeg": { + "version": "0.16.1", + "resolved": "https://registry.npmjs.org/@jimp/jpeg/-/jpeg-0.16.1.tgz", + "integrity": "sha512-8352zrdlCCLFdZ/J+JjBslDvml+fS3Z8gttdml0We759PnnZGqrnPRhkOEOJbNUlE+dD4ckLeIe6NPxlS/7U+w==", + "dev": true, + "optional": true, + "requires": { + "@babel/runtime": "^7.7.2", + "@jimp/utils": "^0.16.1", + "jpeg-js": "0.4.2" + } + }, + "@jimp/plugin-blit": { + "version": "0.16.1", + "resolved": "https://registry.npmjs.org/@jimp/plugin-blit/-/plugin-blit-0.16.1.tgz", + "integrity": "sha512-fKFNARm32RoLSokJ8WZXHHH2CGzz6ire2n1Jh6u+XQLhk9TweT1DcLHIXwQMh8oR12KgjbgsMGvrMVlVknmOAg==", + "dev": true, + "optional": true, + "requires": { + "@babel/runtime": "^7.7.2", + "@jimp/utils": "^0.16.1" + } + }, + "@jimp/plugin-blur": { + "version": "0.16.1", + "resolved": "https://registry.npmjs.org/@jimp/plugin-blur/-/plugin-blur-0.16.1.tgz", + "integrity": "sha512-1WhuLGGj9MypFKRcPvmW45ht7nXkOKu+lg3n2VBzIB7r4kKNVchuI59bXaCYQumOLEqVK7JdB4glaDAbCQCLyw==", + "dev": true, + "optional": true, + "requires": { + "@babel/runtime": "^7.7.2", + "@jimp/utils": "^0.16.1" + } + }, + "@jimp/plugin-circle": { + "version": "0.16.1", + "resolved": "https://registry.npmjs.org/@jimp/plugin-circle/-/plugin-circle-0.16.1.tgz", + "integrity": "sha512-JK7yi1CIU7/XL8hdahjcbGA3V7c+F+Iw+mhMQhLEi7Q0tCnZ69YJBTamMiNg3fWPVfMuvWJJKOBRVpwNTuaZRg==", + "dev": true, + "optional": true, + "requires": { + "@babel/runtime": "^7.7.2", + "@jimp/utils": "^0.16.1" + } + }, + "@jimp/plugin-color": { + "version": "0.16.1", + "resolved": "https://registry.npmjs.org/@jimp/plugin-color/-/plugin-color-0.16.1.tgz", + "integrity": "sha512-9yQttBAO5SEFj7S6nJK54f+1BnuBG4c28q+iyzm1JjtnehjqMg6Ljw4gCSDCvoCQ3jBSYHN66pmwTV74SU1B7A==", + "dev": true, + "optional": true, + "requires": { + "@babel/runtime": "^7.7.2", + "@jimp/utils": "^0.16.1", + "tinycolor2": "^1.4.1" + } + }, + "@jimp/plugin-contain": { + "version": "0.16.1", + "resolved": "https://registry.npmjs.org/@jimp/plugin-contain/-/plugin-contain-0.16.1.tgz", + "integrity": "sha512-44F3dUIjBDHN+Ym/vEfg+jtjMjAqd2uw9nssN67/n4FdpuZUVs7E7wadKY1RRNuJO+WgcD5aDQcsvurXMETQTg==", + "dev": true, + "optional": true, + "requires": { + "@babel/runtime": "^7.7.2", + "@jimp/utils": "^0.16.1" + } + }, + "@jimp/plugin-cover": { + "version": "0.16.1", + "resolved": "https://registry.npmjs.org/@jimp/plugin-cover/-/plugin-cover-0.16.1.tgz", + "integrity": "sha512-YztWCIldBAVo0zxcQXR+a/uk3/TtYnpKU2CanOPJ7baIuDlWPsG+YE4xTsswZZc12H9Kl7CiziEbDtvF9kwA/Q==", + "dev": true, + "optional": true, + "requires": { + "@babel/runtime": "^7.7.2", + "@jimp/utils": "^0.16.1" + } + }, + "@jimp/plugin-crop": { + "version": "0.16.1", + "resolved": "https://registry.npmjs.org/@jimp/plugin-crop/-/plugin-crop-0.16.1.tgz", + "integrity": "sha512-UQdva9oQzCVadkyo3T5Tv2CUZbf0klm2cD4cWMlASuTOYgaGaFHhT9st+kmfvXjKL8q3STkBu/zUPV6PbuV3ew==", + "dev": true, + "optional": true, + "requires": { + "@babel/runtime": "^7.7.2", + "@jimp/utils": "^0.16.1" + } + }, + "@jimp/plugin-displace": { + "version": "0.16.1", + "resolved": "https://registry.npmjs.org/@jimp/plugin-displace/-/plugin-displace-0.16.1.tgz", + "integrity": "sha512-iVAWuz2+G6Heu8gVZksUz+4hQYpR4R0R/RtBzpWEl8ItBe7O6QjORAkhxzg+WdYLL2A/Yd4ekTpvK0/qW8hTVw==", + "dev": true, + "optional": true, + "requires": { + "@babel/runtime": "^7.7.2", + "@jimp/utils": "^0.16.1" + } + }, + "@jimp/plugin-dither": { + "version": "0.16.1", + "resolved": "https://registry.npmjs.org/@jimp/plugin-dither/-/plugin-dither-0.16.1.tgz", + "integrity": "sha512-tADKVd+HDC9EhJRUDwMvzBXPz4GLoU6s5P7xkVq46tskExYSptgj5713J5Thj3NMgH9Rsqu22jNg1H/7tr3V9Q==", + "dev": true, + "optional": true, + "requires": { + "@babel/runtime": "^7.7.2", + "@jimp/utils": "^0.16.1" + } + }, + "@jimp/plugin-fisheye": { + "version": "0.16.1", + "resolved": "https://registry.npmjs.org/@jimp/plugin-fisheye/-/plugin-fisheye-0.16.1.tgz", + "integrity": "sha512-BWHnc5hVobviTyIRHhIy9VxI1ACf4CeSuCfURB6JZm87YuyvgQh5aX5UDKtOz/3haMHXBLP61ZBxlNpMD8CG4A==", + "dev": true, + "optional": true, + "requires": { + "@babel/runtime": "^7.7.2", + "@jimp/utils": "^0.16.1" + } + }, + "@jimp/plugin-flip": { + "version": "0.16.1", + "resolved": "https://registry.npmjs.org/@jimp/plugin-flip/-/plugin-flip-0.16.1.tgz", + "integrity": "sha512-KdxTf0zErfZ8DyHkImDTnQBuHby+a5YFdoKI/G3GpBl3qxLBvC+PWkS2F/iN3H7wszP7/TKxTEvWL927pypT0w==", + "dev": true, + "optional": true, + "requires": { + "@babel/runtime": "^7.7.2", + "@jimp/utils": "^0.16.1" + } + }, + "@jimp/plugin-gaussian": { + "version": "0.16.1", + "resolved": "https://registry.npmjs.org/@jimp/plugin-gaussian/-/plugin-gaussian-0.16.1.tgz", + "integrity": "sha512-u9n4wjskh3N1mSqketbL6tVcLU2S5TEaFPR40K6TDv4phPLZALi1Of7reUmYpVm8mBDHt1I6kGhuCJiWvzfGyg==", + "dev": true, + "optional": true, + "requires": { + "@babel/runtime": "^7.7.2", + "@jimp/utils": "^0.16.1" + } + }, + "@jimp/plugin-invert": { + "version": "0.16.1", + "resolved": "https://registry.npmjs.org/@jimp/plugin-invert/-/plugin-invert-0.16.1.tgz", + "integrity": "sha512-2DKuyVXANH8WDpW9NG+PYFbehzJfweZszFYyxcaewaPLN0GxvxVLOGOPP1NuUTcHkOdMFbE0nHDuB7f+sYF/2w==", + "dev": true, + "optional": true, + "requires": { + "@babel/runtime": "^7.7.2", + "@jimp/utils": "^0.16.1" + } + }, + "@jimp/plugin-mask": { + "version": "0.16.1", + "resolved": "https://registry.npmjs.org/@jimp/plugin-mask/-/plugin-mask-0.16.1.tgz", + "integrity": "sha512-snfiqHlVuj4bSFS0v96vo2PpqCDMe4JB+O++sMo5jF5mvGcGL6AIeLo8cYqPNpdO6BZpBJ8MY5El0Veckhr39Q==", + "dev": true, + "optional": true, + "requires": { + "@babel/runtime": "^7.7.2", + "@jimp/utils": "^0.16.1" + } + }, + "@jimp/plugin-normalize": { + "version": "0.16.1", + "resolved": "https://registry.npmjs.org/@jimp/plugin-normalize/-/plugin-normalize-0.16.1.tgz", + "integrity": "sha512-dOQfIOvGLKDKXPU8xXWzaUeB0nvkosHw6Xg1WhS1Z5Q0PazByhaxOQkSKgUryNN/H+X7UdbDvlyh/yHf3ITRaw==", + "dev": true, + "optional": true, + "requires": { + "@babel/runtime": "^7.7.2", + "@jimp/utils": "^0.16.1" + } + }, + "@jimp/plugin-print": { + "version": "0.16.1", + "resolved": "https://registry.npmjs.org/@jimp/plugin-print/-/plugin-print-0.16.1.tgz", + "integrity": "sha512-ceWgYN40jbN4cWRxixym+csyVymvrryuKBQ+zoIvN5iE6OyS+2d7Mn4zlNgumSczb9GGyZZESIgVcBDA1ezq0Q==", + "dev": true, + "optional": true, + "requires": { + "@babel/runtime": "^7.7.2", + "@jimp/utils": "^0.16.1", + "load-bmfont": "^1.4.0" + } + }, + "@jimp/plugin-resize": { + "version": "0.16.1", + "resolved": "https://registry.npmjs.org/@jimp/plugin-resize/-/plugin-resize-0.16.1.tgz", + "integrity": "sha512-u4JBLdRI7dargC04p2Ha24kofQBk3vhaf0q8FwSYgnCRwxfvh2RxvhJZk9H7Q91JZp6wgjz/SjvEAYjGCEgAwQ==", + "dev": true, + "optional": true, + "requires": { + "@babel/runtime": "^7.7.2", + "@jimp/utils": "^0.16.1" + } + }, + "@jimp/plugin-rotate": { + "version": "0.16.1", + "resolved": "https://registry.npmjs.org/@jimp/plugin-rotate/-/plugin-rotate-0.16.1.tgz", + "integrity": "sha512-ZUU415gDQ0VjYutmVgAYYxC9Og9ixu2jAGMCU54mSMfuIlmohYfwARQmI7h4QB84M76c9hVLdONWjuo+rip/zg==", + "dev": true, + "optional": true, + "requires": { + "@babel/runtime": "^7.7.2", + "@jimp/utils": "^0.16.1" + } + }, + "@jimp/plugin-scale": { + "version": "0.16.1", + "resolved": "https://registry.npmjs.org/@jimp/plugin-scale/-/plugin-scale-0.16.1.tgz", + "integrity": "sha512-jM2QlgThIDIc4rcyughD5O7sOYezxdafg/2Xtd1csfK3z6fba3asxDwthqPZAgitrLgiKBDp6XfzC07Y/CefUw==", + "dev": true, + "optional": true, + "requires": { + "@babel/runtime": "^7.7.2", + "@jimp/utils": "^0.16.1" + } + }, + "@jimp/plugin-shadow": { + "version": "0.16.1", + "resolved": "https://registry.npmjs.org/@jimp/plugin-shadow/-/plugin-shadow-0.16.1.tgz", + "integrity": "sha512-MeD2Is17oKzXLnsphAa1sDstTu6nxscugxAEk3ji0GV1FohCvpHBcec0nAq6/czg4WzqfDts+fcPfC79qWmqrA==", + "dev": true, + "optional": true, + "requires": { + "@babel/runtime": "^7.7.2", + "@jimp/utils": "^0.16.1" + } + }, + "@jimp/plugin-threshold": { + "version": "0.16.1", + "resolved": "https://registry.npmjs.org/@jimp/plugin-threshold/-/plugin-threshold-0.16.1.tgz", + "integrity": "sha512-iGW8U/wiCSR0+6syrPioVGoSzQFt4Z91SsCRbgNKTAk7D+XQv6OI78jvvYg4o0c2FOlwGhqz147HZV5utoSLxA==", + "dev": true, + "optional": true, + "requires": { + "@babel/runtime": "^7.7.2", + "@jimp/utils": "^0.16.1" + } + }, + "@jimp/plugins": { + "version": "0.16.1", + "resolved": "https://registry.npmjs.org/@jimp/plugins/-/plugins-0.16.1.tgz", + "integrity": "sha512-c+lCqa25b+4q6mJZSetlxhMoYuiltyS+ValLzdwK/47+aYsq+kcJNl+TuxIEKf59yr9+5rkbpsPkZHLF/V7FFA==", + "dev": true, + "optional": true, + "requires": { + "@babel/runtime": "^7.7.2", + "@jimp/plugin-blit": "^0.16.1", + "@jimp/plugin-blur": "^0.16.1", + "@jimp/plugin-circle": "^0.16.1", + "@jimp/plugin-color": "^0.16.1", + "@jimp/plugin-contain": "^0.16.1", + "@jimp/plugin-cover": "^0.16.1", + "@jimp/plugin-crop": "^0.16.1", + "@jimp/plugin-displace": "^0.16.1", + "@jimp/plugin-dither": "^0.16.1", + "@jimp/plugin-fisheye": "^0.16.1", + "@jimp/plugin-flip": "^0.16.1", + "@jimp/plugin-gaussian": "^0.16.1", + "@jimp/plugin-invert": "^0.16.1", + "@jimp/plugin-mask": "^0.16.1", + "@jimp/plugin-normalize": "^0.16.1", + "@jimp/plugin-print": "^0.16.1", + "@jimp/plugin-resize": "^0.16.1", + "@jimp/plugin-rotate": "^0.16.1", + "@jimp/plugin-scale": "^0.16.1", + "@jimp/plugin-shadow": "^0.16.1", + "@jimp/plugin-threshold": "^0.16.1", + "timm": "^1.6.1" + } + }, + "@jimp/png": { + "version": "0.16.1", + "resolved": "https://registry.npmjs.org/@jimp/png/-/png-0.16.1.tgz", + "integrity": "sha512-iyWoCxEBTW0OUWWn6SveD4LePW89kO7ZOy5sCfYeDM/oTPLpR8iMIGvZpZUz1b8kvzFr27vPst4E5rJhGjwsdw==", + "dev": true, + "optional": true, + "requires": { + "@babel/runtime": "^7.7.2", + "@jimp/utils": "^0.16.1", + "pngjs": "^3.3.3" + } + }, + "@jimp/tiff": { + "version": "0.16.1", + "resolved": "https://registry.npmjs.org/@jimp/tiff/-/tiff-0.16.1.tgz", + "integrity": "sha512-3K3+xpJS79RmSkAvFMgqY5dhSB+/sxhwTFA9f4AVHUK0oKW+u6r52Z1L0tMXHnpbAdR9EJ+xaAl2D4x19XShkQ==", + "dev": true, + "optional": true, + "requires": { + "@babel/runtime": "^7.7.2", + "utif": "^2.0.1" + } + }, + "@jimp/types": { + "version": "0.16.1", + "resolved": "https://registry.npmjs.org/@jimp/types/-/types-0.16.1.tgz", + "integrity": "sha512-g1w/+NfWqiVW4CaXSJyD28JQqZtm2eyKMWPhBBDCJN9nLCN12/Az0WFF3JUAktzdsEC2KRN2AqB1a2oMZBNgSQ==", + "dev": true, + "optional": true, + "requires": { + "@babel/runtime": "^7.7.2", + "@jimp/bmp": "^0.16.1", + "@jimp/gif": "^0.16.1", + "@jimp/jpeg": "^0.16.1", + "@jimp/png": "^0.16.1", + "@jimp/tiff": "^0.16.1", + "timm": "^1.6.1" + } + }, + "@jimp/utils": { + "version": "0.16.1", + "resolved": "https://registry.npmjs.org/@jimp/utils/-/utils-0.16.1.tgz", + "integrity": "sha512-8fULQjB0x4LzUSiSYG6ZtQl355sZjxbv8r9PPAuYHzS9sGiSHJQavNqK/nKnpDsVkU88/vRGcE7t3nMU0dEnVw==", + "dev": true, + "optional": true, + "requires": { + "@babel/runtime": "^7.7.2", + "regenerator-runtime": "^0.13.3" + } + }, + "@sitespeed.io/chromedriver": { + "version": "98.0.4758-48", + "resolved": "https://registry.npmjs.org/@sitespeed.io/chromedriver/-/chromedriver-98.0.4758-48.tgz", + "integrity": "sha512-kTFFaJD0K2j59+XG4o6olv28I1gaZ19qPlIRQLP7dfhaVZQDvxtzKyVIUHlU0q4m69XnCliOcO14008ZlxSW+g==", + "dev": true, + "requires": { + "node-downloader-helper": "1.0.19", + "node-stream-zip": "1.15.0" + } + }, + "@sitespeed.io/edgedriver": { + "version": "95.0.1020-30", + "resolved": "https://registry.npmjs.org/@sitespeed.io/edgedriver/-/edgedriver-95.0.1020-30.tgz", + "integrity": "sha512-5hXxNCtbX/SeG6nsyXg4QWIEKacxBJTO5T43rUXlTrUlecFfvHNhTVY5PE2bwpKcdPQ168Vp0S/+g55QJi9s/Q==", + "dev": true, + "requires": { + "node-downloader-helper": "1.0.18", + "node-stream-zip": "1.15.0" + }, + "dependencies": { + "node-downloader-helper": { + "version": "1.0.18", + "resolved": "https://registry.npmjs.org/node-downloader-helper/-/node-downloader-helper-1.0.18.tgz", + "integrity": "sha512-C7hxYz/yg4d8DFVC6c4fMIOI7jywbpQHOznkax/74F8NcC8wSOLO+UxNMcwds/5wEL8W+RPXT9C389w3bDOMxw==", + "dev": true + } + } + }, + "@sitespeed.io/geckodriver": { + "version": "0.29.1-3", + "resolved": "https://registry.npmjs.org/@sitespeed.io/geckodriver/-/geckodriver-0.29.1-3.tgz", + "integrity": "sha512-qHYtvH/81lPcgzFQB2qObp9M8bMIrc7O8TWm05SVfiGUKKy4Kku0huoa/IB9e0ksrrRFYtm9GQT6JF+bANZPKA==", + "dev": true, + "requires": { + "node-downloader-helper": "1.0.18", + "node-stream-zip": "1.14.0", + "tar": "6.1.11" + }, + "dependencies": { + "node-downloader-helper": { + "version": "1.0.18", + "resolved": "https://registry.npmjs.org/node-downloader-helper/-/node-downloader-helper-1.0.18.tgz", + "integrity": "sha512-C7hxYz/yg4d8DFVC6c4fMIOI7jywbpQHOznkax/74F8NcC8wSOLO+UxNMcwds/5wEL8W+RPXT9C389w3bDOMxw==", + "dev": true + }, + "node-stream-zip": { + "version": "1.14.0", + "resolved": "https://registry.npmjs.org/node-stream-zip/-/node-stream-zip-1.14.0.tgz", + "integrity": "sha512-SKXyiBy9DBemsPHf/piHT00Y+iPK+zwru1G6+8UdOBzITnmmPMHYBMV6M1znyzyhDhUFQW0HEmbGiPqtp51M6Q==", + "dev": true + } + } + }, + "@sitespeed.io/throttle": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@sitespeed.io/throttle/-/throttle-3.0.0.tgz", + "integrity": "sha512-tTAnBaoMwtdECY6SYno/OSRnzZsazg63zesRNBxQXkpDG+1FU1FTXLJQx6/2SkKJo6WvrELp8XhoUIV9SQvlCg==", + "dev": true, + "requires": { + "minimist": "1.2.5" + } + }, + "@sitespeed.io/tracium": { + "version": "0.3.3", + "resolved": "https://registry.npmjs.org/@sitespeed.io/tracium/-/tracium-0.3.3.tgz", + "integrity": "sha512-dNZafjM93Y+F+sfwTO5gTpsGXlnc/0Q+c2+62ViqP3gkMWvHEMSKkaEHgVJLcLg3i/g19GSIPziiKpgyne07Bw==", + "dev": true, + "requires": { + "debug": "^4.1.1" + }, + "dependencies": { + "debug": { + "version": "4.3.3", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.3.tgz", + "integrity": "sha512-/zxw5+vh1Tfv+4Qn7a5nsbcJKPaSvCDhojn6FEl9vupwK2VCSDtEiEtqr8DFtzYFOdz63LBkxec7DYuc2jon6Q==", + "dev": true, + "requires": { + "ms": "2.1.2" + } + }, + "ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true + } + } + }, + "@types/node": { + "version": "17.0.14", + "resolved": "https://registry.npmjs.org/@types/node/-/node-17.0.14.tgz", + "integrity": "sha512-SbjLmERksKOGzWzPNuW7fJM7fk3YXVTFiZWB/Hs99gwhk+/dnrQRPBQjPW9aO+fi1tAffi9PrwFvsmOKmDTyng==", + "dev": true + }, + "ansi-regex": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", + "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", + "dev": true + }, + "ansi-styles": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", + "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=", + "dev": true + }, + "any-base": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/any-base/-/any-base-1.1.0.tgz", + "integrity": "sha512-uMgjozySS8adZZYePpaWs8cxB9/kdzmpX6SgJZ+wbz1K5eYk5QMYDVJaZKhxyIHUdnnJkfR7SVgStgH7LkGUyg==", + "dev": true, + "optional": true + }, + "async": { + "version": "0.2.10", + "resolved": "https://registry.npmjs.org/async/-/async-0.2.10.tgz", + "integrity": "sha1-trvgsGdLnXGXCMo43owjfLUmw9E=", + "dev": true + }, + "balanced-match": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", + "dev": true + }, + "base64-js": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", + "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==", + "dev": true, + "optional": true + }, + "bluebird": { + "version": "2.9.34", + "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-2.9.34.tgz", + "integrity": "sha1-L3tOyAIWMoqf3evfacjUlC/v99g=", + "dev": true + }, + "bmp-js": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/bmp-js/-/bmp-js-0.1.0.tgz", + "integrity": "sha1-4Fpj95amwf8l9Hcex62twUjAcjM=", + "dev": true, + "optional": true + }, + "brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dev": true, + "requires": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "browsertime": { + "version": "https://github.com/sitespeedio/browsertime/tarball/eae18165d9d82b9a5ad38b0bd1507a2d86a70988", + "integrity": "sha512-UiQ2xHLHN9ISnVRfFXmWCncLn5+Huca3ykTBYPOmnLcOyx7U9+cfMwEYMioyTbgh1IdByZd2KZ1dKLs2CtoU/Q==", + "dev": true, + "requires": { + "@cypress/xvfb": "1.2.4", + "@devicefarmer/adbkit": "2.11.3", + "@sitespeed.io/chromedriver": "98.0.4758-48", + "@sitespeed.io/edgedriver": "95.0.1020-30", + "@sitespeed.io/geckodriver": "0.29.1-3", + "@sitespeed.io/throttle": "3.0.0", + "@sitespeed.io/tracium": "0.3.3", + "btoa": "1.2.1", + "chrome-har": "0.12.0", + "chrome-remote-interface": "0.31.0", + "dayjs": "1.10.7", + "execa": "5.1.1", + "fast-stats": "0.0.6", + "find-up": "5.0.0", + "get-port": "5.1.1", + "hasbin": "1.2.3", + "intel": "1.2.0", + "jimp": "0.16.1", + "lodash.get": "4.4.2", + "lodash.groupby": "4.6.0", + "lodash.isempty": "4.4.0", + "lodash.merge": "4.6.2", + "lodash.pick": "4.4.0", + "lodash.set": "4.3.2", + "selenium-webdriver": "4.1.0", + "speedline-core": "1.4.3", + "yargs": "17.2.1" + } + }, + "btoa": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/btoa/-/btoa-1.2.1.tgz", + "integrity": "sha512-SB4/MIGlsiVkMcHmT+pSmIPoNDoHg+7cMzmt3Uxt628MTz2487DKSqK/fuhFBrkuqrYv5UCEnACpF4dTFNKc/g==", + "dev": true + }, + "buffer": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz", + "integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==", + "dev": true, + "optional": true, + "requires": { + "base64-js": "^1.3.1", + "ieee754": "^1.1.13" + } + }, + "buffer-equal": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/buffer-equal/-/buffer-equal-0.0.1.tgz", + "integrity": "sha1-kbx0sR6kBbyRa8aqkI+q+ltKrEs=", + "dev": true, + "optional": true + }, + "chalk": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", + "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", + "dev": true, + "requires": { + "ansi-styles": "^2.2.1", + "escape-string-regexp": "^1.0.2", + "has-ansi": "^2.0.0", + "strip-ansi": "^3.0.0", + "supports-color": "^2.0.0" + } + }, + "chownr": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/chownr/-/chownr-2.0.0.tgz", + "integrity": "sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ==", + "dev": true + }, + "chrome-har": { + "version": "0.12.0", + "resolved": "https://registry.npmjs.org/chrome-har/-/chrome-har-0.12.0.tgz", + "integrity": "sha512-VRQOsN9omU6q5/8h6eU9tkHPV2VvOCAh1JL4Hpk8ZIyrTLFWdK0A7UOsKNplvr+9Ls/8Wr71G20cuX2OsRPbwA==", + "dev": true, + "requires": { + "dayjs": "1.8.31", + "debug": "4.1.1", + "tough-cookie": "4.0.0", + "uuid": "8.0.0" + }, + "dependencies": { + "dayjs": { + "version": "1.8.31", + "resolved": "https://registry.npmjs.org/dayjs/-/dayjs-1.8.31.tgz", + "integrity": "sha512-mPh1mslned+5PuIuiUfbw4CikHk6AEAf2Baxih+wP5fssv+wmlVhvgZ7mq+BhLt7Sr/Hc8leWDiwe6YnrpNt3g==", + "dev": true + }, + "debug": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz", + "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==", + "dev": true, + "requires": { + "ms": "^2.1.1" + } + } + } + }, + "chrome-remote-interface": { + "version": "0.31.0", + "resolved": "https://registry.npmjs.org/chrome-remote-interface/-/chrome-remote-interface-0.31.0.tgz", + "integrity": "sha512-DrD4ZACKAFT3lVldKVDRlYrI9bmZSk7kYcf+OKwFpBM9fZyCPvVKb+yGnmXBkHv7/BEkW8ouu+EHRugAOJ3pPg==", + "dev": true, + "requires": { + "commander": "2.11.x", + "ws": "^7.2.0" + }, + "dependencies": { + "commander": { + "version": "2.11.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.11.0.tgz", + "integrity": "sha512-b0553uYA5YAEGgyYIGYROzKQ7X5RAqedkfjiZxwi0kL1g3bOaBNNZfYkzt/CL0umgD5wc9Jec2FbB98CjkMRvQ==", + "dev": true + } + } + }, + "cliui": { + "version": "7.0.4", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz", + "integrity": "sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==", + "dev": true, + "requires": { + "string-width": "^4.2.0", + "strip-ansi": "^6.0.0", + "wrap-ansi": "^7.0.0" + }, + "dependencies": { + "ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "dev": true + }, + "strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "dev": true, + "requires": { + "ansi-regex": "^5.0.1" + } + } + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "commander": { + "version": "2.20.3", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", + "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", + "dev": true + }, + "concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=", + "dev": true + }, + "core-util-is": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz", + "integrity": "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==", + "dev": true + }, + "cross-spawn": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", + "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", + "dev": true, + "requires": { + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" + } + }, + "dayjs": { + "version": "1.10.7", + "resolved": "https://registry.npmjs.org/dayjs/-/dayjs-1.10.7.tgz", + "integrity": "sha512-P6twpd70BcPK34K26uJ1KT3wlhpuOAPoMwJzpsIWUxHZ7wpmbdZL/hQqBDfz7hGurYSa5PhzdhDHtt319hL3ig==", + "dev": true + }, + "dbug": { + "version": "0.4.2", + "resolved": "https://registry.npmjs.org/dbug/-/dbug-0.4.2.tgz", + "integrity": "sha1-MrSzEF6IYQQ6b5rHVdgOVC02WzE=", + "dev": true + }, + "debug": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", + "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", + "dev": true, + "requires": { + "ms": "^2.1.1" + } + }, + "dom-walk": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/dom-walk/-/dom-walk-0.1.2.tgz", + "integrity": "sha512-6QvTW9mrGeIegrFXdtQi9pk7O/nSK6lSdXW2eqUspN5LWD7UTji2Fqw5V2YLjBpHEoU9Xl/eUWNpDeZvoyOv2w==", + "dev": true, + "optional": true + }, + "emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "dev": true + }, + "escalade": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", + "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==", + "dev": true + }, + "escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", + "dev": true + }, + "execa": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz", + "integrity": "sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==", + "dev": true, + "requires": { + "cross-spawn": "^7.0.3", + "get-stream": "^6.0.0", + "human-signals": "^2.1.0", + "is-stream": "^2.0.0", + "merge-stream": "^2.0.0", + "npm-run-path": "^4.0.1", + "onetime": "^5.1.2", + "signal-exit": "^3.0.3", + "strip-final-newline": "^2.0.0" + } + }, + "exif-parser": { + "version": "0.1.12", + "resolved": "https://registry.npmjs.org/exif-parser/-/exif-parser-0.1.12.tgz", + "integrity": "sha1-WKnS1ywCwfbwKg70qRZicrd2CSI=", + "dev": true, + "optional": true + }, + "fast-stats": { + "version": "0.0.6", + "resolved": "https://registry.npmjs.org/fast-stats/-/fast-stats-0.0.6.tgz", + "integrity": "sha512-m0zkwa7Z07Wc4xm1YtcrCHmhzNxiYRrrfUyhkdhSZPzaAH/Ewbocdaq7EPVBFz19GWfIyyPcLfRHjHJYe83jlg==", + "dev": true + }, + "file-type": { + "version": "9.0.0", + "resolved": "https://registry.npmjs.org/file-type/-/file-type-9.0.0.tgz", + "integrity": "sha512-Qe/5NJrgIOlwijpq3B7BEpzPFcgzggOTagZmkXQY4LA6bsXKTUstK7Wp12lEJ/mLKTpvIZxmIuRcLYWT6ov9lw==", + "dev": true, + "optional": true + }, + "find-up": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", + "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", + "dev": true, + "requires": { + "locate-path": "^6.0.0", + "path-exists": "^4.0.0" + } + }, + "fs-minipass": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-2.1.0.tgz", + "integrity": "sha512-V/JgOLFCS+R6Vcq0slCuaeWEdNC3ouDlJMNIsacH2VtALiu9mV4LPrHc5cDl8k5aw6J8jwgWWpiTo5RYhmIzvg==", + "dev": true, + "requires": { + "minipass": "^3.0.0" + } + }, + "fs.realpath": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=", + "dev": true + }, + "get-caller-file": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", + "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", + "dev": true + }, + "get-port": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/get-port/-/get-port-5.1.1.tgz", + "integrity": "sha512-g/Q1aTSDOxFpchXC4i8ZWvxA1lnPqx/JHqcpIw0/LX9T8x/GBbi6YnlN5nhaKIFkT8oFsscUKgDJYxfwfS6QsQ==", + "dev": true + }, + "get-stream": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz", + "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==", + "dev": true + }, + "gifwrap": { + "version": "0.9.2", + "resolved": "https://registry.npmjs.org/gifwrap/-/gifwrap-0.9.2.tgz", + "integrity": "sha512-fcIswrPaiCDAyO8xnWvHSZdWChjKXUanKKpAiWWJ/UTkEi/aYKn5+90e7DE820zbEaVR9CE2y4z9bzhQijZ0BA==", + "dev": true, + "optional": true, + "requires": { + "image-q": "^1.1.1", + "omggif": "^1.0.10" + } + }, + "glob": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.0.tgz", + "integrity": "sha512-lmLf6gtyrPq8tTjSmrO94wBeQbFR3HbLHbuyD69wuyQkImp2hWqMGB47OX65FBkPffO641IP9jWa1z4ivqG26Q==", + "dev": true, + "requires": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.4", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + } + }, + "global": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/global/-/global-4.4.0.tgz", + "integrity": "sha512-wv/LAoHdRE3BeTGz53FAamhGlPLhlssK45usmGFThIi4XqnBmjKQ16u+RNbP7WvigRZDxUsM0J3gcQ5yicaL0w==", + "dev": true, + "optional": true, + "requires": { + "min-document": "^2.19.0", + "process": "^0.11.10" + } + }, + "has-ansi": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz", + "integrity": "sha1-NPUEnOHs3ysGSa8+8k5F7TVBbZE=", + "dev": true, + "requires": { + "ansi-regex": "^2.0.0" + } + }, + "hasbin": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/hasbin/-/hasbin-1.2.3.tgz", + "integrity": "sha1-eMWSaJPIAhXCtWiuH9P8q3omlrA=", + "dev": true, + "requires": { + "async": "~1.5" + }, + "dependencies": { + "async": { + "version": "1.5.2", + "resolved": "https://registry.npmjs.org/async/-/async-1.5.2.tgz", + "integrity": "sha1-7GphrlZIDAw8skHJVhjiCJL5Zyo=", + "dev": true + } + } + }, + "human-signals": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-2.1.0.tgz", + "integrity": "sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==", + "dev": true + }, + "ieee754": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", + "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==", + "dev": true, + "optional": true + }, + "image-q": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/image-q/-/image-q-1.1.1.tgz", + "integrity": "sha1-/IQJlmRGC5DKhi2TALa/u7+/gFY=", + "dev": true, + "optional": true + }, + "image-ssim": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/image-ssim/-/image-ssim-0.2.0.tgz", + "integrity": "sha1-g7Qsei5uS4VQVHf+aRf128VkIOU=", + "dev": true + }, + "immediate": { + "version": "3.0.6", + "resolved": "https://registry.npmjs.org/immediate/-/immediate-3.0.6.tgz", + "integrity": "sha1-nbHb0Pr43m++D13V5Wu2BigN5ps=", + "dev": true + }, + "inflight": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", + "dev": true, + "requires": { + "once": "^1.3.0", + "wrappy": "1" + } + }, + "inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", + "dev": true + }, + "intel": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/intel/-/intel-1.2.0.tgz", + "integrity": "sha1-EdEUfraz9Fgr31M3s31UFYTp5B4=", + "dev": true, + "requires": { + "chalk": "^1.1.0", + "dbug": "~0.4.2", + "stack-trace": "~0.0.9", + "strftime": "~0.10.0", + "symbol": "~0.3.1", + "utcstring": "~0.1.0" + } + }, + "is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "dev": true + }, + "is-function": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-function/-/is-function-1.0.2.tgz", + "integrity": "sha512-lw7DUp0aWXYg+CBCN+JKkcE0Q2RayZnSvnZBlwgxHBQhqt5pZNVy4Ri7H9GmmXkdu7LUthszM+Tor1u/2iBcpQ==", + "dev": true, + "optional": true + }, + "is-stream": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz", + "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==", + "dev": true + }, + "isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", + "dev": true + }, + "isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=", + "dev": true + }, + "jimp": { + "version": "0.16.1", + "resolved": "https://registry.npmjs.org/jimp/-/jimp-0.16.1.tgz", + "integrity": "sha512-+EKVxbR36Td7Hfd23wKGIeEyHbxShZDX6L8uJkgVW3ESA9GiTEPK08tG1XI2r/0w5Ch0HyJF5kPqF9K7EmGjaw==", + "dev": true, + "optional": true, + "requires": { + "@babel/runtime": "^7.7.2", + "@jimp/custom": "^0.16.1", + "@jimp/plugins": "^0.16.1", + "@jimp/types": "^0.16.1", + "regenerator-runtime": "^0.13.3" + } + }, + "jpeg-js": { + "version": "0.4.2", + "resolved": "https://registry.npmjs.org/jpeg-js/-/jpeg-js-0.4.2.tgz", + "integrity": "sha512-+az2gi/hvex7eLTMTlbRLOhH6P6WFdk2ITI8HJsaH2VqYO0I594zXSYEP+tf4FW+8Cy68ScDXoAsQdyQanv3sw==", + "dev": true + }, + "jszip": { + "version": "3.7.1", + "resolved": "https://registry.npmjs.org/jszip/-/jszip-3.7.1.tgz", + "integrity": "sha512-ghL0tz1XG9ZEmRMcEN2vt7xabrDdqHHeykgARpmZ0BiIctWxM47Vt63ZO2dnp4QYt/xJVLLy5Zv1l/xRdh2byg==", + "dev": true, + "requires": { + "lie": "~3.3.0", + "pako": "~1.0.2", + "readable-stream": "~2.3.6", + "set-immediate-shim": "~1.0.1" + } + }, + "lie": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/lie/-/lie-3.3.0.tgz", + "integrity": "sha512-UaiMJzeWRlEujzAuw5LokY1L5ecNQYZKfmyZ9L7wDHb/p5etKaxXhohBcrw0EYby+G/NA52vRSN4N39dxHAIwQ==", + "dev": true, + "requires": { + "immediate": "~3.0.5" + } + }, + "load-bmfont": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/load-bmfont/-/load-bmfont-1.4.1.tgz", + "integrity": "sha512-8UyQoYmdRDy81Brz6aLAUhfZLwr5zV0L3taTQ4hju7m6biuwiWiJXjPhBJxbUQJA8PrkvJ/7Enqmwk2sM14soA==", + "dev": true, + "optional": true, + "requires": { + "buffer-equal": "0.0.1", + "mime": "^1.3.4", + "parse-bmfont-ascii": "^1.0.3", + "parse-bmfont-binary": "^1.0.5", + "parse-bmfont-xml": "^1.1.4", + "phin": "^2.9.1", + "xhr": "^2.0.1", + "xtend": "^4.0.0" + } + }, + "locate-path": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", + "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", + "dev": true, + "requires": { + "p-locate": "^5.0.0" + } + }, + "lodash.get": { + "version": "4.4.2", + "resolved": "https://registry.npmjs.org/lodash.get/-/lodash.get-4.4.2.tgz", + "integrity": "sha1-LRd/ZS+jHpObRDjVNBSZ36OCXpk=", + "dev": true + }, + "lodash.groupby": { + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/lodash.groupby/-/lodash.groupby-4.6.0.tgz", + "integrity": "sha1-Cwih3PaDl8OXhVwyOXg4Mt90A9E=", + "dev": true + }, + "lodash.isempty": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/lodash.isempty/-/lodash.isempty-4.4.0.tgz", + "integrity": "sha1-b4bL7di+TsmHvpqvM8loTbGzHn4=", + "dev": true + }, + "lodash.merge": { + "version": "4.6.2", + "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz", + "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==", + "dev": true + }, + "lodash.once": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/lodash.once/-/lodash.once-4.1.1.tgz", + "integrity": "sha1-DdOXEhPHxW34gJd9UEyI+0cal6w=", + "dev": true + }, + "lodash.pick": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/lodash.pick/-/lodash.pick-4.4.0.tgz", + "integrity": "sha1-UvBWEP/53tQiYRRB7R/BI6AwAbM=", + "dev": true + }, + "lodash.set": { + "version": "4.3.2", + "resolved": "https://registry.npmjs.org/lodash.set/-/lodash.set-4.3.2.tgz", + "integrity": "sha1-2HV7HagH3eJIFrDWqEvqGnYjCyM=", + "dev": true + }, + "merge-stream": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz", + "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==", + "dev": true + }, + "mime": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", + "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==", + "dev": true, + "optional": true + }, + "mimic-fn": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", + "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", + "dev": true + }, + "min-document": { + "version": "2.19.0", + "resolved": "https://registry.npmjs.org/min-document/-/min-document-2.19.0.tgz", + "integrity": "sha1-e9KC4/WELtKVu3SM3Z8f+iyCRoU=", + "dev": true, + "optional": true, + "requires": { + "dom-walk": "^0.1.0" + } + }, + "minimatch": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", + "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", + "dev": true, + "requires": { + "brace-expansion": "^1.1.7" + } + }, + "minimist": { + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz", + "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==", + "dev": true + }, + "minipass": { + "version": "3.1.6", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.1.6.tgz", + "integrity": "sha512-rty5kpw9/z8SX9dmxblFA6edItUmwJgMeYDZRrwlIVN27i8gysGbznJwUggw2V/FVqFSDdWy040ZPS811DYAqQ==", + "dev": true, + "requires": { + "yallist": "^4.0.0" + } + }, + "minizlib": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/minizlib/-/minizlib-2.1.2.tgz", + "integrity": "sha512-bAxsR8BVfj60DWXHE3u30oHzfl4G7khkSuPW+qvpd7jFRHm7dLxOjUk1EHACJ/hxLY8phGJ0YhYHZo7jil7Qdg==", + "dev": true, + "requires": { + "minipass": "^3.0.0", + "yallist": "^4.0.0" + } + }, + "mkdirp": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", + "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==", + "dev": true + }, + "ms": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", + "dev": true + }, + "node-downloader-helper": { + "version": "1.0.19", + "resolved": "https://registry.npmjs.org/node-downloader-helper/-/node-downloader-helper-1.0.19.tgz", + "integrity": "sha512-Bwp8WWDDP5ftg+FmAKU08a9+oiUTPoYzMvXgUqZZPQ7VMo1qKBzW3XdTXHeYnqjGLfkTZ2GPibgAWpApfpeS2g==", + "dev": true + }, + "node-forge": { + "version": "0.10.0", + "resolved": "https://registry.npmjs.org/node-forge/-/node-forge-0.10.0.tgz", + "integrity": "sha512-PPmu8eEeG9saEUvI97fm4OYxXVB6bFvyNTyiUOBichBpFG8A1Ljw3bY62+5oOjDEMHRnd0Y7HQ+x7uzxOzC6JA==", + "dev": true + }, + "node-stream-zip": { + "version": "1.15.0", + "resolved": "https://registry.npmjs.org/node-stream-zip/-/node-stream-zip-1.15.0.tgz", + "integrity": "sha512-LN4fydt9TqhZhThkZIVQnF9cwjU3qmUH9h78Mx/K7d3VvfRqqwthLwJEUOEL0QPZ0XQmNN7be5Ggit5+4dq3Bw==", + "dev": true + }, + "npm-run-path": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz", + "integrity": "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==", + "dev": true, + "requires": { + "path-key": "^3.0.0" + } + }, + "omggif": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/omggif/-/omggif-1.0.10.tgz", + "integrity": "sha512-LMJTtvgc/nugXj0Vcrrs68Mn2D1r0zf630VNtqtpI1FEO7e+O9FP4gqs9AcnBaSEeoHIPm28u6qgPR0oyEpGSw==", + "dev": true, + "optional": true + }, + "once": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", + "dev": true, + "requires": { + "wrappy": "1" + } + }, + "onetime": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz", + "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", + "dev": true, + "requires": { + "mimic-fn": "^2.1.0" + } + }, + "p-limit": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", + "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", + "dev": true, + "requires": { + "yocto-queue": "^0.1.0" + } + }, + "p-locate": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", + "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", + "dev": true, + "requires": { + "p-limit": "^3.0.2" + } + }, + "pako": { + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/pako/-/pako-1.0.11.tgz", + "integrity": "sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw==", + "dev": true + }, + "parse-bmfont-ascii": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/parse-bmfont-ascii/-/parse-bmfont-ascii-1.0.6.tgz", + "integrity": "sha1-Eaw8P/WPfCAgqyJ2kHkQjU36AoU=", + "dev": true, + "optional": true + }, + "parse-bmfont-binary": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/parse-bmfont-binary/-/parse-bmfont-binary-1.0.6.tgz", + "integrity": "sha1-0Di0dtPp3Z2x4RoLDlOiJ5K2kAY=", + "dev": true, + "optional": true + }, + "parse-bmfont-xml": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/parse-bmfont-xml/-/parse-bmfont-xml-1.1.4.tgz", + "integrity": "sha512-bjnliEOmGv3y1aMEfREMBJ9tfL3WR0i0CKPj61DnSLaoxWR3nLrsQrEbCId/8rF4NyRF0cCqisSVXyQYWM+mCQ==", + "dev": true, + "optional": true, + "requires": { + "xml-parse-from-string": "^1.0.0", + "xml2js": "^0.4.5" + } + }, + "parse-headers": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/parse-headers/-/parse-headers-2.0.4.tgz", + "integrity": "sha512-psZ9iZoCNFLrgRjZ1d8mn0h9WRqJwFxM9q3x7iUjN/YT2OksthDJ5TiPCu2F38kS4zutqfW+YdVVkBZZx3/1aw==", + "dev": true, + "optional": true + }, + "path-exists": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", + "dev": true + }, + "path-is-absolute": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", + "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=", + "dev": true + }, + "path-key": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", + "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", + "dev": true + }, + "phin": { + "version": "2.9.3", + "resolved": "https://registry.npmjs.org/phin/-/phin-2.9.3.tgz", + "integrity": "sha512-CzFr90qM24ju5f88quFC/6qohjC144rehe5n6DH900lgXmUe86+xCKc10ev56gRKC4/BkHUoG4uSiQgBiIXwDA==", + "dev": true, + "optional": true + }, + "pixelmatch": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/pixelmatch/-/pixelmatch-4.0.2.tgz", + "integrity": "sha1-j0fc7FARtHe2fbA8JDvB8wheiFQ=", + "dev": true, + "optional": true, + "requires": { + "pngjs": "^3.0.0" + } + }, + "pngjs": { + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/pngjs/-/pngjs-3.4.0.tgz", + "integrity": "sha512-NCrCHhWmnQklfH4MtJMRjZ2a8c80qXeMlQMv2uVp9ISJMTt562SbGd6n2oq0PaPgKm7Z6pL9E2UlLIhC+SHL3w==", + "dev": true, + "optional": true + }, + "process": { + "version": "0.11.10", + "resolved": "https://registry.npmjs.org/process/-/process-0.11.10.tgz", + "integrity": "sha1-czIwDoQBYb2j5podHZGn1LwW8YI=", + "dev": true, + "optional": true + }, + "process-nextick-args": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", + "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==", + "dev": true + }, + "psl": { + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/psl/-/psl-1.8.0.tgz", + "integrity": "sha512-RIdOzyoavK+hA18OGGWDqUTsCLhtA7IcZ/6NCs4fFJaHBDab+pDDmDIByWFRQJq2Cd7r1OoQxBGKOaztq+hjIQ==", + "dev": true + }, + "punycode": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", + "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==", + "dev": true + }, + "readable-stream": { + "version": "2.3.7", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", + "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", + "dev": true, + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "regenerator-runtime": { + "version": "0.13.9", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.9.tgz", + "integrity": "sha512-p3VT+cOEgxFsRRA9X4lkI1E+k2/CtnKtU4gcxyaCUreilL/vqI6CdZ3wxVUx3UOUg+gnUOQQcRI7BmSI656MYA==", + "dev": true, + "optional": true + }, + "require-directory": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", + "integrity": "sha1-jGStX9MNqxyXbiNE/+f3kqam30I=", + "dev": true + }, + "rimraf": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", + "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", + "dev": true, + "requires": { + "glob": "^7.1.3" + } + }, + "safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "dev": true + }, + "sax": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/sax/-/sax-1.2.4.tgz", + "integrity": "sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==", + "dev": true, + "optional": true + }, + "selenium-webdriver": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/selenium-webdriver/-/selenium-webdriver-4.1.0.tgz", + "integrity": "sha512-kUDH4N8WruYprTzvug4Pl73Th+WKb5YiLz8z/anOpHyUNUdM3UzrdTOxmSNaf9AczzBeY+qXihzku8D1lMaKOg==", + "dev": true, + "requires": { + "jszip": "^3.6.0", + "tmp": "^0.2.1", + "ws": ">=7.4.6" + } + }, + "set-immediate-shim": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/set-immediate-shim/-/set-immediate-shim-1.0.1.tgz", + "integrity": "sha1-SysbJ+uAip+NzEgaWOXlb1mfP2E=", + "dev": true + }, + "shebang-command": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", + "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", + "dev": true, + "requires": { + "shebang-regex": "^3.0.0" + } + }, + "shebang-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", + "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", + "dev": true + }, + "signal-exit": { + "version": "3.0.6", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.6.tgz", + "integrity": "sha512-sDl4qMFpijcGw22U5w63KmD3cZJfBuFlVNbVMKje2keoKML7X2UzWbc4XrmEbDwg0NXJc3yv4/ox7b+JWb57kQ==", + "dev": true + }, + "speedline-core": { + "version": "1.4.3", + "resolved": "https://registry.npmjs.org/speedline-core/-/speedline-core-1.4.3.tgz", + "integrity": "sha512-DI7/OuAUD+GMpR6dmu8lliO2Wg5zfeh+/xsdyJZCzd8o5JgFUjCeLsBDuZjIQJdwXS3J0L/uZYrELKYqx+PXog==", + "dev": true, + "requires": { + "@types/node": "*", + "image-ssim": "^0.2.0", + "jpeg-js": "^0.4.1" + } + }, + "split": { + "version": "0.3.3", + "resolved": "https://registry.npmjs.org/split/-/split-0.3.3.tgz", + "integrity": "sha1-zQ7qXmOiEd//frDwkcQTPi0N0o8=", + "dev": true, + "requires": { + "through": "2" + } + }, + "stack-trace": { + "version": "0.0.10", + "resolved": "https://registry.npmjs.org/stack-trace/-/stack-trace-0.0.10.tgz", + "integrity": "sha1-VHxws0fo0ytOEI6hoqFZ5f3eGcA=", + "dev": true + }, + "strftime": { + "version": "0.10.1", + "resolved": "https://registry.npmjs.org/strftime/-/strftime-0.10.1.tgz", + "integrity": "sha512-nVvH6JG8KlXFPC0f8lojLgEsPA18lRpLZ+RrJh/NkQV2tqOgZfbas8gcU8SFgnnqR3rWzZPYu6N2A3xzs/8rQg==", + "dev": true + }, + "string-width": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "dev": true, + "requires": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "dependencies": { + "ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "dev": true + }, + "strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "dev": true, + "requires": { + "ansi-regex": "^5.0.1" + } + } + } + }, + "string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "dev": true, + "requires": { + "safe-buffer": "~5.1.0" + } + }, + "strip-ansi": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", + "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", + "dev": true, + "requires": { + "ansi-regex": "^2.0.0" + } + }, + "strip-final-newline": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-2.0.0.tgz", + "integrity": "sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==", + "dev": true + }, + "supports-color": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", + "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", + "dev": true + }, + "symbol": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/symbol/-/symbol-0.3.1.tgz", + "integrity": "sha1-tvmpANSWpX8CQI8iGYwQndoGMEE=", + "dev": true + }, + "tar": { + "version": "6.1.11", + "resolved": "https://registry.npmjs.org/tar/-/tar-6.1.11.tgz", + "integrity": "sha512-an/KZQzQUkZCkuoAA64hM92X0Urb6VpRhAFllDzz44U2mcD5scmT3zBc4VgVpkugF580+DQn8eAFSyoQt0tznA==", + "dev": true, + "requires": { + "chownr": "^2.0.0", + "fs-minipass": "^2.0.0", + "minipass": "^3.0.0", + "minizlib": "^2.1.1", + "mkdirp": "^1.0.3", + "yallist": "^4.0.0" + } + }, + "through": { + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", + "integrity": "sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU=", + "dev": true + }, + "timm": { + "version": "1.7.1", + "resolved": "https://registry.npmjs.org/timm/-/timm-1.7.1.tgz", + "integrity": "sha512-IjZc9KIotudix8bMaBW6QvMuq64BrJWFs1+4V0lXwWGQZwH+LnX87doAYhem4caOEusRP9/g6jVDQmZ8XOk1nw==", + "dev": true, + "optional": true + }, + "tinycolor2": { + "version": "1.4.2", + "resolved": "https://registry.npmjs.org/tinycolor2/-/tinycolor2-1.4.2.tgz", + "integrity": "sha512-vJhccZPs965sV/L2sU4oRQVAos0pQXwsvTLkWYdqJ+a8Q5kPFzJTuOFwy7UniPli44NKQGAglksjvOcpo95aZA==", + "dev": true, + "optional": true + }, + "tmp": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.2.1.tgz", + "integrity": "sha512-76SUhtfqR2Ijn+xllcI5P1oyannHNHByD80W1q447gU3mp9G9PSpGdWmjUOHRDPiHYacIk66W7ubDTuPF3BEtQ==", + "dev": true, + "requires": { + "rimraf": "^3.0.0" + } + }, + "tough-cookie": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-4.0.0.tgz", + "integrity": "sha512-tHdtEpQCMrc1YLrMaqXXcj6AxhYi/xgit6mZu1+EDWUn+qhUf8wMQoFIy9NXuq23zAwtcB0t/MjACGR18pcRbg==", + "dev": true, + "requires": { + "psl": "^1.1.33", + "punycode": "^2.1.1", + "universalify": "^0.1.2" + } + }, + "universalify": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz", + "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==", + "dev": true + }, + "utcstring": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/utcstring/-/utcstring-0.1.0.tgz", + "integrity": "sha1-Qw/VEKt/yVtdWRDJAteYgMIIQ2s=", + "dev": true + }, + "utif": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/utif/-/utif-2.0.1.tgz", + "integrity": "sha512-Z/S1fNKCicQTf375lIP9G8Sa1H/phcysstNrrSdZKj1f9g58J4NMgb5IgiEZN9/nLMPDwF0W7hdOe9Qq2IYoLg==", + "dev": true, + "optional": true, + "requires": { + "pako": "^1.0.5" + } + }, + "util-deprecate": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", + "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=", + "dev": true + }, + "uuid": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.0.0.tgz", + "integrity": "sha512-jOXGuXZAWdsTH7eZLtyXMqUb9EcWMGZNbL9YcGBJl4MH4nrxHmZJhEHvyLFrkxo+28uLb/NYRcStH48fnD0Vzw==", + "dev": true + }, + "which": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "dev": true, + "requires": { + "isexe": "^2.0.0" + } + }, + "wrap-ansi": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", + "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", + "dev": true, + "requires": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + }, + "dependencies": { + "ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "dev": true + }, + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "requires": { + "color-convert": "^2.0.1" + } + }, + "strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "dev": true, + "requires": { + "ansi-regex": "^5.0.1" + } + } + } + }, + "wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=", + "dev": true + }, + "ws": { + "version": "7.5.6", + "resolved": "https://registry.npmjs.org/ws/-/ws-7.5.6.tgz", + "integrity": "sha512-6GLgCqo2cy2A2rjCNFlxQS6ZljG/coZfZXclldI8FB/1G3CCI36Zd8xy2HrFVACi8tfk5XrgLQEk+P0Tnz9UcA==", + "dev": true + }, + "xhr": { + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/xhr/-/xhr-2.6.0.tgz", + "integrity": "sha512-/eCGLb5rxjx5e3mF1A7s+pLlR6CGyqWN91fv1JgER5mVWg1MZmlhBvy9kjcsOdRk8RrIujotWyJamfyrp+WIcA==", + "dev": true, + "optional": true, + "requires": { + "global": "~4.4.0", + "is-function": "^1.0.1", + "parse-headers": "^2.0.0", + "xtend": "^4.0.0" + } + }, + "xml-parse-from-string": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/xml-parse-from-string/-/xml-parse-from-string-1.0.1.tgz", + "integrity": "sha1-qQKekp09vN7RafPG4oI42VpdWig=", + "dev": true, + "optional": true + }, + "xml2js": { + "version": "0.4.23", + "resolved": "https://registry.npmjs.org/xml2js/-/xml2js-0.4.23.tgz", + "integrity": "sha512-ySPiMjM0+pLDftHgXY4By0uswI3SPKLDw/i3UXbnO8M/p28zqexCUoPmQFrYD+/1BzhGJSs2i1ERWKJAtiLrug==", + "dev": true, + "optional": true, + "requires": { + "sax": ">=0.6.0", + "xmlbuilder": "~11.0.0" + } + }, + "xmlbuilder": { + "version": "11.0.1", + "resolved": "https://registry.npmjs.org/xmlbuilder/-/xmlbuilder-11.0.1.tgz", + "integrity": "sha512-fDlsI/kFEx7gLvbecc0/ohLG50fugQp8ryHzMTuW9vSa1GJ0XYWKnhsUx7oie3G98+r56aTQIUB4kht42R3JvA==", + "dev": true, + "optional": true + }, + "xtend": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz", + "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==", + "dev": true, + "optional": true + }, + "y18n": { + "version": "5.0.8", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", + "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==", + "dev": true + }, + "yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true + }, + "yargs": { + "version": "17.2.1", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.2.1.tgz", + "integrity": "sha512-XfR8du6ua4K6uLGm5S6fA+FIJom/MdJcFNVY8geLlp2v8GYbOXD4EB1tPNZsRn4vBzKGMgb5DRZMeWuFc2GO8Q==", + "dev": true, + "requires": { + "cliui": "^7.0.2", + "escalade": "^3.1.1", + "get-caller-file": "^2.0.5", + "require-directory": "^2.1.1", + "string-width": "^4.2.0", + "y18n": "^5.0.5", + "yargs-parser": "^20.2.2" + } + }, + "yargs-parser": { + "version": "20.2.9", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.9.tgz", + "integrity": "sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==", + "dev": true + }, + "yocto-queue": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", + "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==", + "dev": true + } + } +} diff --git a/python/mozperftest/mozperftest/test/browsertime/package.json b/python/mozperftest/mozperftest/test/browsertime/package.json new file mode 100644 index 0000000000..493651df61 --- /dev/null +++ b/python/mozperftest/mozperftest/test/browsertime/package.json @@ -0,0 +1,12 @@ +{ + "name": "mozilla-central-tools-browsertime", + "description": "This package file is for node modules used in mozilla-central/tools/browsertime", + "repository": {}, + "license": "MPL-2.0", + "dependencies": {}, + "devDependencies": { + "browsertime": "https://github.com/sitespeedio/browsertime/tarball/eae18165d9d82b9a5ad38b0bd1507a2d86a70988" + }, + "notes(private)": "We don't want to publish to npm, so this is marked as private", + "private": true +} diff --git a/python/mozperftest/mozperftest/test/browsertime/runner.py b/python/mozperftest/mozperftest/test/browsertime/runner.py new file mode 100644 index 0000000000..468dcd1a45 --- /dev/null +++ b/python/mozperftest/mozperftest/test/browsertime/runner.py @@ -0,0 +1,471 @@ +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at http://mozilla.org/MPL/2.0/. +import collections +import json +import os +import pathlib +import re +import shutil +import sys +from pathlib import Path + +from mozperftest.test.browsertime.visualtools import get_dependencies, xvfb +from mozperftest.test.noderunner import NodeRunner +from mozperftest.utils import ON_TRY, get_output_dir, install_package + +BROWSERTIME_SRC_ROOT = Path(__file__).parent + + +def matches(args, *flags): + """Returns True if any argument matches any of the given flags + + Maybe with an argument. + """ + + for flag in flags: + if flag in args or any(arg.startswith(flag + "=") for arg in args): + return True + return False + + +def extract_browser_name(args): + "Extracts the browser name if any" + # These are BT arguments, it's BT job to check them + # here we just want to extract the browser name + res = re.findall(r"(--browser|-b)[= ]([\w]+)", " ".join(args)) + if res == []: + return None + return res[0][-1] + + +class NodeException(Exception): + pass + + +class BrowsertimeRunner(NodeRunner): + """Runs a browsertime test.""" + + name = "browsertime" + activated = True + user_exception = True + + arguments = { + "cycles": {"type": int, "default": 1, "help": "Number of full cycles"}, + "iterations": {"type": int, "default": 1, "help": "Number of iterations"}, + "node": {"type": str, "default": None, "help": "Path to Node.js"}, + "geckodriver": {"type": str, "default": None, "help": "Path to geckodriver"}, + "binary": { + "type": str, + "default": None, + "help": "Path to the desktop browser, or Android app name.", + }, + "clobber": { + "action": "store_true", + "default": False, + "help": "Force-update the installation.", + }, + "install-url": { + "type": str, + "default": None, + "help": "Use this URL as the install url.", + }, + "extra-options": { + "type": str, + "default": "", + "help": "Extra options passed to browsertime.js", + }, + "xvfb": {"action": "store_true", "default": False, "help": "Use xvfb"}, + "no-window-recorder": { + "action": "store_true", + "default": False, + "help": "Use the window recorder", + }, + "viewport-size": {"type": str, "default": "1280x1024", "help": "Viewport size"}, + "existing-results": { + "type": str, + "default": None, + "help": "Directory containing existing results to load.", + }, + } + + def __init__(self, env, mach_cmd): + super(BrowsertimeRunner, self).__init__(env, mach_cmd) + self.topsrcdir = mach_cmd.topsrcdir + self._mach_context = mach_cmd._mach_context + self.virtualenv_manager = mach_cmd.virtualenv_manager + self._created_dirs = [] + self._test_script = None + self._setup_helper = None + self.get_binary_path = mach_cmd.get_binary_path + + @property + def setup_helper(self): + if self._setup_helper is not None: + return self._setup_helper + sys.path.append(str(Path(self.topsrcdir, "tools", "lint", "eslint"))) + import setup_helper + + self._setup_helper = setup_helper + return self._setup_helper + + @property + def artifact_cache_path(self): + """Downloaded artifacts will be kept here.""" + # The convention is $MOZBUILD_STATE_PATH/cache/$FEATURE. + return Path(self._mach_context.state_dir, "cache", "browsertime") + + @property + def state_path(self): + """Unpacked artifacts will be kept here.""" + # The convention is $MOZBUILD_STATE_PATH/$FEATURE. + res = Path(self._mach_context.state_dir, "browsertime") + os.makedirs(str(res), exist_ok=True) + return res + + @property + def browsertime_js(self): + root = os.environ.get("BROWSERTIME", self.state_path) + path = Path(root, "node_modules", "browsertime", "bin", "browsertime.js") + if path.exists(): + os.environ["BROWSERTIME_JS"] = str(path) + return path + + @property + def visualmetrics_py(self): + root = os.environ.get("BROWSERTIME", self.state_path) + path = Path( + root, "node_modules", "browsertime", "browsertime", "visualmetrics.py" + ) + if path.exists(): + os.environ["VISUALMETRICS_PY"] = str(path) + return path + + def _get_browsertime_package(self): + with Path( + os.environ.get("BROWSERTIME", self.state_path), + "node_modules", + "browsertime", + "package.json", + ).open() as package: + return json.load(package) + + def _get_browsertime_resolved(self): + try: + with Path( + os.environ.get("BROWSERTIME", self.state_path), + "node_modules", + ".package-lock.json", + ).open() as package_lock: + return json.load(package_lock)["packages"]["node_modules/browsertime"][ + "resolved" + ] + + except FileNotFoundError: + # Older versions of node/npm add this metadata to package.json + return self._get_browsertime_package().get("_from") + + def _should_install(self): + # If browsertime doesn't exist, install it + if not self.visualmetrics_py.exists() or not self.browsertime_js.exists(): + return True + + # Browsertime exists, check if it's outdated + with Path(BROWSERTIME_SRC_ROOT, "package.json").open() as new: + new_pkg = json.load(new) + + return not self._get_browsertime_resolved().endswith( + new_pkg["devDependencies"]["browsertime"] + ) + + def setup(self): + """Install browsertime and visualmetrics.py prerequisites and the Node.js package.""" + + node = self.get_arg("node") + if node is not None: + os.environ["NODEJS"] = node + + super(BrowsertimeRunner, self).setup() + install_url = self.get_arg("install-url") + + # installing Python deps on the fly + visualmetrics = self.get_arg("visualmetrics", False) + + if visualmetrics: + # installing Python deps on the fly + for dep in get_dependencies(): + install_package(self.virtualenv_manager, dep, ignore_failure=True) + + # check if the browsertime package has been deployed correctly + # for this we just check for the browsertime directory presence + # we also make sure the visual metrics module is there *if* + # we need it + if not self._should_install() and not self.get_arg("clobber"): + return + + # preparing ~/.mozbuild/browsertime + for file in ("package.json", "package-lock.json"): + src = BROWSERTIME_SRC_ROOT / file + target = self.state_path / file + # Overwrite the existing files + shutil.copyfile(str(src), str(target)) + + package_json_path = self.state_path / "package.json" + + if install_url is not None: + self.info( + "Updating browsertime node module version in {package_json_path} " + "to {install_url}", + install_url=install_url, + package_json_path=str(package_json_path), + ) + + expr = r"/tarball/[a-f0-9]{40}$" + if not re.search(expr, install_url): + raise ValueError( + "New upstream URL does not end with {}: '{}'".format( + expr[:-1], install_url + ) + ) + + with package_json_path.open() as f: + existing_body = json.loads( + f.read(), object_pairs_hook=collections.OrderedDict + ) + + existing_body["devDependencies"]["browsertime"] = install_url + updated_body = json.dumps(existing_body) + with package_json_path.open("w") as f: + f.write(updated_body) + + self._setup_node_packages(package_json_path) + + def _setup_node_packages(self, package_json_path): + # Install the browsertime Node.js requirements. + if not self.setup_helper.check_node_executables_valid(): + return + + should_clobber = self.get_arg("clobber") + # To use a custom `geckodriver`, set + # os.environ[b"GECKODRIVER_BASE_URL"] = bytes(url) + # to an endpoint with binaries named like + # https://github.com/sitespeedio/geckodriver/blob/master/install.js#L31. + + if ON_TRY: + os.environ["CHROMEDRIVER_SKIP_DOWNLOAD"] = "true" + os.environ["GECKODRIVER_SKIP_DOWNLOAD"] = "true" + + self.info( + "Installing browsertime node module from {package_json}", + package_json=str(package_json_path), + ) + install_url = self.get_arg("install-url") + + self.setup_helper.package_setup( + str(self.state_path), + "browsertime", + should_update=install_url is not None, + should_clobber=should_clobber, + no_optional=install_url or ON_TRY, + ) + + def extra_default_args(self, args=[]): + # Add Mozilla-specific default arguments. This is tricky because browsertime is quite + # loose about arguments; repeat arguments are generally accepted but then produce + # difficult to interpret type errors. + extra_args = [] + + # Default to Firefox. Override with `-b ...` or `--browser=...`. + if not matches(args, "-b", "--browser"): + extra_args.extend(("-b", "firefox")) + + # Default to not collect HAR. Override with `--skipHar=false`. + if not matches(args, "--har", "--skipHar", "--gzipHar"): + extra_args.append("--skipHar") + + extra_args.extend(["--viewPort", self.get_arg("viewport-size")]) + + if not matches(args, "--android"): + binary = self.get_arg("binary") + if binary is not None: + extra_args.extend(("--firefox.binaryPath", binary)) + else: + # If --firefox.binaryPath is not specified, default to the objdir binary + # Note: --firefox.release is not a real browsertime option, but it will + # silently ignore it instead and default to a release installation. + if ( + not matches( + args, + "--firefox.binaryPath", + "--firefox.release", + "--firefox.nightly", + "--firefox.beta", + "--firefox.developer", + ) + and extract_browser_name(args) != "chrome" + ): + extra_args.extend(("--firefox.binaryPath", self.get_binary_path())) + + geckodriver = self.get_arg("geckodriver") + if geckodriver is not None: + extra_args.extend(("--firefox.geckodriverPath", geckodriver)) + + if extra_args: + self.debug( + "Running browsertime with extra default arguments: {extra_args}", + extra_args=extra_args, + ) + + return extra_args + + def _android_args(self, metadata): + app_name = self.get_arg("android-app-name") + + args_list = [ + "--android", + "--firefox.android.package", + app_name, + ] + activity = self.get_arg("android-activity") + if activity is not None: + args_list += ["--firefox.android.activity", activity] + + return args_list + + def _line_handler(self, line): + line_matcher = re.compile(r"(\[\d{4}-\d{2}-\d{2}.*\])\s+([a-zA-Z]+):\s+(.*)") + match = line_matcher.match(line) + if not match: + return + + date, level, msg = match.groups() + msg = msg.replace("{", "{{").replace("}", "}}") + level = level.lower() + if "error" in level: + self.error("Mozperftest failed to run: {}".format(msg), msg) + elif "warning" in level: + self.warning(msg) + else: + self.info(msg) + + def run(self, metadata): + self._test_script = metadata.script + self.setup() + + existing = self.get_arg("browsertime-existing-results") + if existing: + metadata.add_result( + {"results": existing, "name": self._test_script["name"]} + ) + return metadata + + cycles = self.get_arg("cycles", 1) + for cycle in range(1, cycles + 1): + # Build an output directory + output = self.get_arg("output") + if output is None: + output = pathlib.Path(self.topsrcdir, "artifacts") + result_dir = get_output_dir(output, f"browsertime-results-{cycle}") + + # Run the test cycle + metadata.run_hook( + "before_cycle", metadata, self.env, cycle, self._test_script + ) + try: + metadata = self._one_cycle(metadata, result_dir) + finally: + metadata.run_hook( + "after_cycle", metadata, self.env, cycle, self._test_script + ) + return metadata + + def _one_cycle(self, metadata, result_dir): + profile = self.get_arg("profile-directory") + is_login_site = False + + args = [ + "--resultDir", + str(result_dir), + "--firefox.profileTemplate", + profile, + "--iterations", + str(self.get_arg("iterations")), + self._test_script["filename"], + ] + + # Set *all* prefs found in browser_prefs because + # browsertime will override the ones found in firefox.profileTemplate + # with its own defaults at `firefoxPreferences.js` + # Using `--firefox.preference` ensures we override them. + # see https://github.com/sitespeedio/browsertime/issues/1427 + browser_prefs = metadata.get_options("browser_prefs") + for key, value in browser_prefs.items(): + args += ["--firefox.preference", f"{key}:{value}"] + + if self.get_arg("verbose"): + args += ["-vvv"] + + # if the visualmetrics layer is activated, we want to feed it + visualmetrics = self.get_arg("visualmetrics", False) + if visualmetrics: + args += ["--video", "true"] + if not self.get_arg("no-window-recorder"): + args += ["--firefox.windowRecorder", "true"] + + extra_options = self.get_arg("extra-options") + if extra_options: + for option in extra_options.split(","): + option = option.strip() + if not option: + continue + option = option.split("=", 1) + if len(option) != 2: + self.warning( + f"Skipping browsertime option {option} as it " + "is missing a name/value pairing. We expect options " + "to be formatted as: --browsertime-extra-options " + "'browserRestartTries=1,timeouts.browserStart=10'" + ) + continue + name, value = option + + # Check if we have a login site + if name == "browsertime.login" and value: + is_login_site = True + + self.info(f"Adding extra browsertime argument: --{name} {value}") + args += ["--" + name, value] + + if self.get_arg("android"): + args.extend(self._android_args(metadata)) + + # Remove any possible verbose option if we are on Try and using logins + if is_login_site and ON_TRY: + self.info("Turning off verbose mode for login-logic") + self.info( + "Please contact the perftest team if you need verbose mode enabled." + ) + for verbose_level in ("-v", "-vv", "-vvv", "-vvvv"): + try: + args.remove(verbose_level) + except ValueError: + pass + + extra = self.extra_default_args(args=args) + command = [str(self.browsertime_js)] + extra + args + self.info("Running browsertime with this command %s" % " ".join(command)) + + if visualmetrics and self.get_arg("xvfb"): + with xvfb(): + exit_code = self.node(command, self._line_handler) + else: + exit_code = self.node(command, self._line_handler) + + if exit_code != 0: + raise NodeException(exit_code) + + metadata.add_result( + {"results": str(result_dir), "name": self._test_script["name"]} + ) + + return metadata diff --git a/python/mozperftest/mozperftest/test/browsertime/visualtools.py b/python/mozperftest/mozperftest/test/browsertime/visualtools.py new file mode 100644 index 0000000000..f96a51f7e0 --- /dev/null +++ b/python/mozperftest/mozperftest/test/browsertime/visualtools.py @@ -0,0 +1,277 @@ +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at http://mozilla.org/MPL/2.0/. +""" Collects visualmetrics dependencies. +""" +import contextlib +import os +import subprocess +import sys +import time +from distutils.spawn import find_executable + +from mozperftest.utils import host_platform + +_PILLOW_VERSION = "7.2.0" +_PYSSIM_VERSION = "0.4" + + +def _start_xvfb(): + old_display = os.environ.get("DISPLAY") + xvfb = find_executable("Xvfb") + if xvfb is None: + raise FileNotFoundError("Xvfb") + cmd = [xvfb, ":99"] + proc = subprocess.Popen( + cmd, stdout=subprocess.DEVNULL, stderr=subprocess.DEVNULL, close_fds=True + ) + os.environ["DISPLAY"] = ":99" + time.sleep(0.2) + return proc, old_display + + +def _stop_xvfb(proc, old_display): + proc, old_display + if old_display is None: + del os.environ["DISPLAY"] + else: + os.environ["DISPLAY"] = old_display + if proc is not None: + try: + proc.terminate() + proc.wait() + except OSError: + pass + + +@contextlib.contextmanager +def xvfb(): + proc, old_display = _start_xvfb() + try: + yield + finally: + _stop_xvfb(proc, old_display) + + +def get_plat(): + return host_platform(), f"{sys.version_info.major}.{sys.version_info.minor}" + + +NUMPY = { + ( + "linux64", + "3.10", + ): ( + "88/cc/92815174c345015a326e3fff8beddcb951b3ef0f7c8296fcc22c622add7c" + "/numpy-1.23.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl" + ), + ( + "linux64", + "3.9", + ): ( + "8d/d6/cc2330e512936a904a4db1629b71d697fb309115f6d2ede94d183cdfe185" + "/numpy-1.23.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl" + ), + ( + "linux64", + "3.8", + ): ( + "86/c9/9f9d6812fa8a031a568c2c1c49f207a0a4030ead438644c887410fc49c8a" + "/numpy-1.23.1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl" + ), + ( + "linux64", + "3.7", + ): ( + "d6/2e/a2dbcff6f46bb65645d18538d67183a1cf56b006ba96a12575c282a976bc/" + "numpy-1.19.2-cp37-cp37m-manylinux1_x86_64.whl" + ), + ( + "linux64", + "3.6", + ): ( + "b8/e5/a64ef44a85397ba3c377f6be9c02f3cb3e18023f8c89850dd319e7945521/" + "numpy-1.19.2-cp36-cp36m-manylinux1_x86_64.whl" + ), + ( + "darwin", + "3.10", + ): ( + "c0/c2/8d58f3ccd1aa3b1eaa5c333a6748e225b45cf8748b13f052cbb3c811c996" + "/numpy-1.23.1-cp310-cp310-macosx_10_9_x86_64.whl" + ), + ( + "darwin", + "3.9", + ): ( + "e5/43/b1b80cbcea9f2d0e6adadd27a8da2c71b751d5670a846b444087fab408a1" + "/numpy-1.23.1-cp39-cp39-macosx_10_9_x86_64.whl" + ), + ( + "darwin", + "3.8", + ): ( + "71/08/bc1e4fb7392aa0721f299c444e8c99fa97c8cb41fe33791eca8e26364639" + "/numpy-1.23.1-cp38-cp38-macosx_10_9_x86_64.whl" + ), + ( + "darwin", + "3.7", + ): ( + "c1/a9/f04a5b7db30cc30b41fe516b8914c5049264490a34a49d977937606fbb23/" + "numpy-1.19.2-cp37-cp37m-macosx_10_9_x86_64.whl" + ), + ( + "darwin", + "3.6", + ): ( + "be/8e/800113bd3a0c9195b24574b8922ad92be96278028833c389b69a8b14f657/" + "numpy-1.19.2-cp36-cp36m-macosx_10_9_x86_64.whl" + ), + ( + "win64", + "3.10", + ): ( + "8b/11/75a93826457f94a4c857a38ea3f178915f27ff38ffee1753e36994be7810" + "/numpy-1.23.1-cp310-cp310-win_amd64.whl" + ), + ( + "win64", + "3.9", + ): ( + "bd/dd/0610fb49c433fe5987ae312fe672119080fd77be484b5698d6fa7554148b" + "/numpy-1.23.1-cp39-cp39-win_amd64.whl" + ), + ( + "win64", + "3.8", + ): ( + "d0/19/6e81ed6fe30271ebcf25e5e2a0bdf1fa06ddee03a8cb82625503826970db" + "/numpy-1.23.1-cp38-cp38-win_amd64.whl" + ), + ( + "win64", + "3.7", + ): ( + "82/4e/61764556b7ec13f5bd441b04530e2f9f11bb164308ef0e6951919bb846cb/" + "numpy-1.19.2-cp37-cp37m-win_amd64.whl" + ), + ( + "win64", + "3.6", + ): ( + "dc/8e/a78d4e4a28adadbf693a9c056a0d5955a906889fa0dc3768b88deb236e22/" + "numpy-1.19.2-cp36-cp36m-win_amd64.whl" + ), +} + + +SCIPY = { + ( + "linux64", + "3.10", + ): ( + "bc/fe/72b611ba221c3367b06163992af4807515d6e0e09b3b9beee8ec22162d6f" + "/scipy-1.8.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl" + ), + ( + "linux64", + "3.9", + ): ( + "25/82/da07cc3bb40554f1f82d7e24bfa7ffbfb05b50c16eb8d738ebb74b68af8f" + "/scipy-1.8.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl" + ), + ( + "linux64", + "3.8", + ): ( + "cf/28/5ac0afe5fb473a934ef6bc7953a98a3d2eacf9a8f456524f035f3a844ca4" + "/scipy-1.8.1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl" + ), + ( + "linux64", + "3.7", + ): ( + "65/f9/f7a7e5009711579c72da2725174825e5056741bf4001815d097eef1b2e17" + "/scipy-1.5.2-cp37-cp37m-manylinux1_x86_64.whl" + ), + ( + "linux64", + "3.6", + ): ( + "2b/a8/f4c66eb529bb252d50e83dbf2909c6502e2f857550f22571ed8556f62d95" + "/scipy-1.5.2-cp36-cp36m-manylinux1_x86_64.whl" + ), + ( + "darwin", + "3.10", + ): ( + "7c/f3/47b882f8b7a4dbc38e8bc5d7befe3ad2da582ae2229745e1eac77217f3e4" + "/scipy-1.8.1-cp310-cp310-macosx_10_9_x86_64.whl" + ), + ( + "darwin", + "3.9", + ): ( + "b0/de/e8d273063e1b21ec82e4a09a9654c4dcbc3215abbd59b7038c4ff4272e9e" + "/scipy-1.8.1-cp39-cp39-macosx_10_9_x86_64.whl" + ), + ( + "darwin", + "3.8", + ): ( + "dd/cc/bb5a9705dd30e7f558358168c793084f80de7cca88b06c82dca9d765b225" + "/scipy-1.8.1-cp38-cp38-macosx_10_9_x86_64.whl" + ), + ( + "darwin", + "3.7", + ): ( + "bc/47/e71e7f198a0b547fe861520a0240e3171256822dae81fcc97a36b772303e" + "/scipy-1.5.2-cp37-cp37m-macosx_10_9_x86_64.whl" + ), + ( + "darwin", + "3.6", + ): ( + "00/c0/ddf03baa7ee2a3540d8fbab0fecff7cdd0595dffd91cda746caa95cb686d" + "/scipy-1.5.2-cp36-cp36m-macosx_10_9_x86_64.whl" + ), + ("win64", "3.10"): ( + "31/c2/0b8758ebaeb43e089eb56168390824a830f9f419ae07d755d99a46e5a937" + "/scipy-1.8.1-cp310-cp310-win_amd64.whl" + ), + ("win64", "3.9"): ( + "ba/a1/a8fa291b8ae6523866dd099af377bc508c280c8ca43a42483c76775ce3cd" + "/scipy-1.8.1-cp39-cp39-win_amd64.whl" + ), + ("win64", "3.8"): ( + "8d/3e/e6f6fa6458e03ecd456ae6178529d4bd610a7c4999189f34d0668e4e69a6" + "/scipy-1.8.1-cp38-cp38-win_amd64.whl" + ), + ( + "win64", + "3.7", + ): ( + "66/80/d8a5050df5b4d8229e018f3222fe603ce7f92c026b78f4e05d69c3a6c43b" + "/scipy-1.5.2-cp37-cp37m-win_amd64.whl" + ), + ( + "win64", + "3.6", + ): ( + "fc/f6/3d455f8b376a0faf1081dbba38bbd594c074292bdec08feaac589f53bc06" + "/scipy-1.5.2-cp36-cp36m-win_amd64.whl" + ), +} + + +def get_dependencies(): + return ( + "https://files.pythonhosted.org/packages/" + NUMPY[get_plat()], + "https://files.pythonhosted.org/packages/" + SCIPY[get_plat()], + "Pillow==%s" % _PILLOW_VERSION, + "pyssim==%s" % _PYSSIM_VERSION, + "influxdb==5.3.0", + "grafana_api==1.0.3", + ) diff --git a/python/mozperftest/mozperftest/test/functionaltestrunner.py b/python/mozperftest/mozperftest/test/functionaltestrunner.py new file mode 100644 index 0000000000..e099c6b976 --- /dev/null +++ b/python/mozperftest/mozperftest/test/functionaltestrunner.py @@ -0,0 +1,82 @@ +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at http://mozilla.org/MPL/2.0/. +import pathlib +import sys + +import mozlog + +from mozperftest.utils import load_class_from_path + + +class FunctionalTestProcessor(mozlog.handlers.StreamHandler): + """Used for capturing the perfMetrics output from a `mach test` run.""" + + def __init__(self, *args, **kwargs): + self._match = [] + super(FunctionalTestProcessor, self).__init__(*args, **kwargs) + + def __call__(self, data): + formatted = self.formatter(data) + if formatted is not None and "perfMetrics" in formatted: + self.match.append(formatted) + + @property + def match(self): + return self._match + + +class FunctionalTestRunner: + def test(command_context, what, extra_args, **log_args): + """Run tests from names or paths. + + Based on the `mach test` command in testing/mach_commands.py. It uses + the same logic but with less features for logging, and a custom log + handler to capture the perfMetrics output. + """ + from mozlog.commandline import setup_logging + from moztest.resolve import TestResolver + + resolver = command_context._spawn(TestResolver) + run_suites, run_tests = resolver.resolve_metadata(what) + + if not run_suites and not run_tests: + print( + "Could not find the requested test. Ensure that it works with `./mach test`." + ) + return 1, None + + # Create shared logger + setup_logging( + "mach-test", + log_args, + {"mach": sys.stdout}, + {"level": "info", "verbose": True, "compact": False}, + ) + + # Make a custom handler to capture the perfMetrics log message + log_processor = FunctionalTestProcessor( + stream=sys.stdout, + formatter=mozlog.formatters.MachFormatter( + verbose=True, disable_colors=False + ), + ) + + # Setup the runner + machtestrunner = load_class_from_path( + "MachTestRunner", + pathlib.Path(command_context.topsrcdir, "testing/mach_commands.py"), + ) + command_context._mach_context.settings = { + "test": { + "level": "info", + "verbose": True, + "compact": False, + "format": "mach", + }, + } + log_args["custom_handler"] = log_processor + + # Run the test + status = machtestrunner.test(command_context, what, extra_args, **log_args) + return status, log_processor diff --git a/python/mozperftest/mozperftest/test/mochitest.py b/python/mozperftest/mozperftest/test/mochitest.py new file mode 100644 index 0000000000..44cbaf15ba --- /dev/null +++ b/python/mozperftest/mozperftest/test/mochitest.py @@ -0,0 +1,217 @@ +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at http://mozilla.org/MPL/2.0/. +import json +import os +from collections import defaultdict +from contextlib import redirect_stdout +from pathlib import Path + +from mozperftest.layers import Layer +from mozperftest.test.functionaltestrunner import FunctionalTestRunner +from mozperftest.utils import ( + METRICS_MATCHER, + ON_TRY, + LogProcessor, + NoPerfMetricsError, + install_requirements_file, +) + + +class MissingMochitestInformation(Exception): + """Raised when information needed to run a mochitest is missing.""" + + pass + + +class MochitestTestFailure(Exception): + """Raised when a mochitest test returns a non-zero exit code.""" + + pass + + +class MochitestData: + def open_data(self, data): + return { + "name": "mochitest", + "subtest": data["name"], + "data": [ + {"file": "mochitest", "value": value, "xaxis": xaxis} + for xaxis, value in enumerate(data["values"]) + ], + } + + def transform(self, data): + return data + + merge = transform + + +class Mochitest(Layer): + """Runs a mochitest test through `mach test` locally, and directly with mochitest in CI.""" + + name = "mochitest" + activated = True + + arguments = { + "binary": { + "type": str, + "default": None, + "help": ("Path to the browser."), + }, + "cycles": { + "type": int, + "default": 1, + "help": ("Number of cycles/iterations to do for the test."), + }, + "manifest": { + "type": str, + "default": None, + "help": ( + "Path to the manifest that contains the test (only required in CI)." + ), + }, + "manifest-flavor": { + "type": str, + "default": None, + "help": "Mochitest flavor of the test to run (only required in CI).", + }, + "extra-args": { + "nargs": "*", + "type": str, + "default": [], + "help": ( + "Additional arguments to pass to mochitest. Expected in a format such as: " + "--mochitest-extra-args headless profile-path=/path/to/profile" + ), + }, + } + + def __init__(self, env, mach_cmd): + super(Mochitest, self).__init__(env, mach_cmd) + self.topsrcdir = mach_cmd.topsrcdir + self._mach_context = mach_cmd._mach_context + self.python_path = mach_cmd.virtualenv_manager.python_path + self.topobjdir = mach_cmd.topobjdir + self.distdir = mach_cmd.distdir + self.bindir = mach_cmd.bindir + self.statedir = mach_cmd.statedir + self.metrics = [] + self.topsrcdir = mach_cmd.topsrcdir + + def setup(self): + if ON_TRY: + # Install marionette requirements + install_requirements_file( + self.mach_cmd.virtualenv_manager, + str( + Path( + os.getenv("MOZ_FETCHES_DIR"), + "config", + "marionette_requirements.txt", + ) + ), + ) + + def _parse_extra_args(self, extra_args): + """Sets up the extra-args for passing to mochitest.""" + parsed_extra_args = [] + for arg in extra_args: + parsed_extra_args.append(f"--{arg}") + return parsed_extra_args + + def remote_run(self, test, metadata): + """Run tests in CI.""" + import runtests + from manifestparser import TestManifest + from mochitest_options import MochitestArgumentParser + + manifest_flavor = self.get_arg("manifest-flavor") + manifest_name = self.get_arg("manifest") + if not manifest_name: + raise MissingMochitestInformation( + "Name of manifest that contains test needs to be" + "specified (e.g. mochitest-common.ini)" + ) + if not manifest_flavor: + raise MissingMochitestInformation( + "Mochitest flavor needs to be provided" + "(e.g. plain, browser-chrome, ...)" + ) + + manifest_path = Path(test.parent, manifest_name) + manifest = TestManifest([str(manifest_path)], strict=False) + manifest.active_tests(paths=[str(test)]) + + # Use the mochitest argument parser to parse the extra argument + # options, and produce an `args` object that has all the defaults + parser = MochitestArgumentParser() + args = parser.parse_args(self._parse_extra_args(self.get_arg("extra-args"))) + + # Bug 1858155 - Attempting to only use one test_path triggers a failure + # during test execution + args.test_paths = [str(test.name), str(test.name)] + args.keep_open = False + args.runByManifest = True + args.manifestFile = manifest + args.topobjdir = self.topobjdir + args.topsrcdir = self.topsrcdir + args.flavor = manifest_flavor + args.app = self.get_arg("binary") + + fetch_dir = os.getenv("MOZ_FETCHES_DIR") + args.utilityPath = str(Path(fetch_dir, "bin")) + args.extraProfileFiles.append(str(Path(fetch_dir, "bin", "plugins"))) + args.testingModulesDir = str(Path(fetch_dir, "modules")) + args.symbolsPath = str(Path(fetch_dir, "crashreporter-symbols")) + args.certPath = str(Path(fetch_dir, "certs")) + + log_processor = LogProcessor(METRICS_MATCHER) + with redirect_stdout(log_processor): + result = runtests.run_test_harness(parser, args) + + return result, log_processor + + def run(self, metadata): + test = Path(metadata.script["filename"]) + + results = defaultdict(list) + cycles = self.get_arg("cycles", 1) + for cycle in range(1, cycles + 1): + if ON_TRY: + status, log_processor = self.remote_run(test, metadata) + else: + status, log_processor = FunctionalTestRunner.test( + self.mach_cmd, + [str(test)], + self._parse_extra_args(self.get_arg("extra-args")) + + ["--keep-open=False"], + ) + + if status is not None and status != 0: + raise MochitestTestFailure("Test failed to run") + + # Parse metrics found + for metrics_line in log_processor.match: + self.metrics.append(json.loads(metrics_line.split("|")[-1].strip())) + + for m in self.metrics: + for key, val in m.items(): + results[key].append(val) + + if len(results.items()) == 0: + raise NoPerfMetricsError("mochitest") + + metadata.add_result( + { + "name": test.name, + "framework": {"name": "mozperftest"}, + "transformer": "mozperftest.test.mochitest:MochitestData", + "results": [ + {"values": measures, "name": subtest} + for subtest, measures in results.items() + ], + } + ) + + return metadata diff --git a/python/mozperftest/mozperftest/test/noderunner.py b/python/mozperftest/mozperftest/test/noderunner.py new file mode 100644 index 0000000000..4304609bff --- /dev/null +++ b/python/mozperftest/mozperftest/test/noderunner.py @@ -0,0 +1,75 @@ +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at http://mozilla.org/MPL/2.0/. +import os +import sys + +import mozpack.path as mozpath + +from mozperftest.layers import Layer +from mozperftest.utils import silence + + +class NodeRunner(Layer): + name = "node" + + def __init__(self, env, mach_cmd): + super(NodeRunner, self).__init__(env, mach_cmd) + self.topsrcdir = mach_cmd.topsrcdir + self._mach_context = mach_cmd._mach_context + self.python_path = mach_cmd.virtualenv_manager.python_path + + from mozbuild.nodeutil import find_node_executable + + self.node_path = os.path.abspath(find_node_executable()[0]) + + def setup(self): + """Install the Node.js package.""" + self.verify_node_install() + + def node(self, args, line_handler=None): + """Invoke node (interactively) with the given arguments.""" + return self.run_process( + [self.node_path] + args, + append_env=self.append_env(), + pass_thru=False, # Allow user to run Node interactively. + ensure_exit_code=False, # Don't throw on non-zero exit code. + cwd=mozpath.join(self.topsrcdir), + line_handler=line_handler, + ) + + def append_env(self, append_path=True): + # Ensure that bare `node` and `npm` in scripts, including post-install + # scripts, finds the binary we're invoking with. Without this, it's + # easy for compiled extensions to get mismatched versions of the Node.js + # extension API. + path = os.environ.get("PATH", "").split(os.pathsep) if append_path else [] + node_dir = os.path.dirname(self.node_path) + path = [node_dir] + path + + return { + "PATH": os.pathsep.join(path), + # Bug 1560193: The JS library browsertime uses to execute commands + # (execa) will muck up the PATH variable and put the directory that + # node is in first in path. If this is globally-installed node, + # that means `/usr/bin` will be inserted first which means that we + # will get `/usr/bin/python` for `python`. + # + # Our fork of browsertime supports a `PYTHON` environment variable + # that points to the exact python executable to use. + "PYTHON": self.python_path, + } + + def verify_node_install(self): + # check if Node is installed + sys.path.append(mozpath.join(self.topsrcdir, "tools", "lint", "eslint")) + import setup_helper + + with silence(): + node_valid = setup_helper.check_node_executables_valid() + if not node_valid: + # running again to get details printed out + setup_helper.check_node_executables_valid() + raise ValueError("Can't find Node. did you run ./mach bootstrap ?") + + return True diff --git a/python/mozperftest/mozperftest/test/webpagetest.py b/python/mozperftest/mozperftest/test/webpagetest.py new file mode 100644 index 0000000000..82e62efa8c --- /dev/null +++ b/python/mozperftest/mozperftest/test/webpagetest.py @@ -0,0 +1,414 @@ +import json +import pathlib +import re +import time +import traceback +from threading import Thread + +import requests + +import mozperftest.utils as utils +from mozperftest.layers import Layer +from mozperftest.runner import HERE + +ACCEPTED_BROWSERS = ["Chrome", "Firefox"] + +ACCEPTED_CONNECTIONS = [ + "DSL", + "Cable", + "FIOS", + "Dial", + "Edge", + "2G", + "3GSlow", + "3GFast", + "3G", + "4G", + "LTE", + "Native", + "custom", +] + +ACCEPTED_STATISTICS = ["average", "median", "standardDeviation"] +WPT_KEY_FILE = "WPT_key.txt" +WPT_API_EXPIRED_MESSAGE = "API key expired" + + +class WPTTimeOutError(Exception): + """ + This error is raised if a request that you have made has not returned results within a + specified time, for this code that timeout is ~6 hours. + """ + + pass + + +class WPTBrowserSelectionError(Exception): + """ + This error is raised if you provide an invalid browser option when requesting a test + The only browsers allowed are specified the ACCEPTED_BROWSERS list at the top of the code + browser must be a case-sensitive match in the list. + """ + + pass + + +class WPTLocationSelectionError(Exception): + """ + This error is raised if you provide an invalid testing location option when requesting a test + Acceptable locations are specified here: https://www.webpagetest.org/getTesters.php?f=html + Connection type must be a case-sensitive match + For example to test in Virginia, USA you would put ec2-us-east1 as your location. + """ + + pass + + +class WPTInvalidConnectionSelection(Exception): + """ + This error is raised if you provide an invalid connection option when requesting a test + The only connection allowed are specified the ACCEPTED_CONNECTIONS list at the top of the code + Connection type must be a case-sensitive match in the list. + """ + + pass + + +class WPTDataProcessingError(Exception): + """ + This error is raised when a value you were expecting in your webpagetest result is not there. + """ + + pass + + +class WPTInvalidURLError(Exception): + """ + This error is raised if you provide an invalid website url when requesting a test + A website must be in the format {domain_name}.{top_level_domain} + for example "google.ca" and "youtube.com" both work and are valid website urls, but + "google" and "youtube" are not. + """ + + pass + + +class WPTErrorWithWebsite(Exception): + """ + This error is raised if the first and repeat view results of the test you requested + is not in-line with what is returned. For instance if you request 3 runs with first + and repeat view and results show 3 first view and 2 repeat view tests this exception + is raised. + """ + + pass + + +class WPTInvalidStatisticsError(Exception): + """ + This error is raised if the first and repeat view results of the test you requested + is not in-line with what is returned. For instance if you request 3 runs with first + and repeat view and results show 3 first view and 2 repeat view tests this exception + is raised. + """ + + pass + + +class WPTExpiredAPIKeyError(Exception): + """ + This error is raised if we get a notification from WPT that our API key has expired + """ + + pass + + +class PropagatingErrorThread(Thread): + def run(self): + self.exc = None + try: + self._target(*self._args, **self._kwargs) + except Exception as e: + self.exc = e + + def join(self, timeout=None): + super(PropagatingErrorThread, self).join() + if self.exc: + raise self.exc + + +class WebPageTestData: + def open_data(self, data): + return { + "name": "webpagetest", + "subtest": data["name"], + "data": [ + {"file": "webpagetest", "value": value, "xaxis": xaxis} + for xaxis, value in enumerate(data["values"]) + ], + "shouldAlert": True, + } + + def transform(self, data): + return data + + merge = transform + + +class WebPageTest(Layer): + """ + This is the webpagetest layer, it is responsible for sending requests to run a webpagetest + pageload test, receiving the results as well processing them into a useful data format. + """ + + name = "webpagetest" + activated = False + arguments = { + "no-video": { + "action": "store_true", + "default": False, + "help": "Disable video, required for calculating Speed Index and filmstrip view", + }, + "no-images": { + "action": "store_true", + "default": False, + "help": "Set to True to disable screenshot capturing, False by default", + }, + } + + def __init__(self, env, mach_cmd): + super(WebPageTest, self).__init__(env, mach_cmd) + if utils.ON_TRY: + self.WPT_key = utils.get_tc_secret(wpt=True)["wpt_key"] + else: + self.WPT_key = pathlib.Path(HERE, WPT_KEY_FILE).open().read() + self.statistic_types = ["average", "median", "standardDeviation"] + self.timeout_limit = 21600 + self.wait_between_requests = 180 + + def run(self, metadata): + options = metadata.script["options"] + test_list = options["test_list"] + self.statistic_types = options["test_parameters"]["statistics"] + self.wpt_browser_metrics = options["browser_metrics"] + self.pre_run_error_checks(options["test_parameters"], test_list) + self.create_and_run_wpt_threaded_tests(test_list, metadata) + try: + self.test_runs_left_this_month() + except Exception: + self.warning("testBalance check had an issue, please investigate") + return metadata + + def pre_run_error_checks(self, options, test_list): + if options["browser"] not in ACCEPTED_BROWSERS: + raise WPTBrowserSelectionError( + "Invalid Browser Option Selected, please choose one of the following: " + f"{ACCEPTED_BROWSERS}" + ) + if options["connection"] not in ACCEPTED_CONNECTIONS: + raise WPTInvalidConnectionSelection( + "Invalid Connection Option Selected, please choose one of the following: " + f"{ACCEPTED_CONNECTIONS}" + ) + if not len(self.statistic_types): + raise WPTInvalidStatisticsError( + "No statistics provided please provide some" + ) + for stat in self.statistic_types: + if stat not in ACCEPTED_STATISTICS: + raise WPTInvalidStatisticsError( + f"This is an invalid statistic, statistics can only be from " + f"the following list: {ACCEPTED_STATISTICS}" + ) + + if "timeout_limit" in options.keys(): + self.timeout_limit = options["timeout_limit"] + if "wait_between_requests" in options.keys(): + self.wait_between_requests = options["wait_between_requests"] + if "statistics" in options.keys(): + self.statistic_types = options["statistics"] + + options["capture_video"] = 0 if self.get_arg("no-video") else options["video"] + options["noimages"] = 1 if self.get_arg("no-images") else options["noimages"] + self.location_queue(options["location"]) + self.check_urls_are_valid(test_list) + + def location_queue(self, location): + location_list = {} + try: + location_list = self.request_with_timeout( + "https://webpagetest.org/getLocations.php?f=json" + )["data"] + except Exception: + self.error( + "Error with getting location queue data, see below for more details" + ) + self.info(traceback.format_exc()) + if location and location not in location_list.keys(): + raise WPTLocationSelectionError( + "Invalid location selected please choose one of the locations here: " + f"{location_list.keys()}" + ) + self.info( + f"Test queue at {location}({location_list[location]['Label']}) is " + f"{location_list[location]['PendingTests']['Queued']}" + ) + + def request_with_timeout(self, url): + request_header = {"Host": "www.webpagetest.org"} + requested_results = requests.get(url, headers=request_header) + results_of_request = json.loads(requested_results.text) + start = time.monotonic() + if ( + "statusText" in results_of_request.keys() + and results_of_request["statusText"] == WPT_API_EXPIRED_MESSAGE + ): + raise WPTExpiredAPIKeyError("The API key has expired") + while ( + requested_results.status_code == 200 + and time.monotonic() - start < self.timeout_limit + and ( + "statusCode" in results_of_request.keys() + and results_of_request["statusCode"] != 200 + ) + ): + requested_results = requests.get(url, headers=request_header) + results_of_request = json.loads(requested_results.text) + time.sleep(self.wait_between_requests) + if time.monotonic() - start > self.timeout_limit: + raise WPTTimeOutError( + f"{url} test timed out after {self.timeout_limit} seconds" + ) + return results_of_request + + def check_urls_are_valid(self, test_list): + for url in test_list: + if "." not in url: + raise WPTInvalidURLError(f"{url} is an invalid url") + + def create_and_run_wpt_threaded_tests(self, test_list, metadata): + threads = [] + for website in test_list: + t = PropagatingErrorThread( + target=self.create_and_run_wpt_tests, args=(website, metadata) + ) + t.start() + threads.append(t) + for thread in threads: + thread.join() + + def create_and_run_wpt_tests(self, website_to_be_tested, metadata): + wpt_run = self.get_WPT_results( + website_to_be_tested, metadata.script["options"]["test_parameters"] + ) + self.post_run_error_checks( + wpt_run, metadata.script["options"], website_to_be_tested + ) + self.add_wpt_run_to_metadata(wpt_run, metadata, website_to_be_tested) + + def get_WPT_results(self, website, options): + self.info(f"Testing: {website}") + wpt_test_request_link = self.create_wpt_request_link(options, website) + send_wpt_test_request = self.request_with_timeout(wpt_test_request_link)[ + "data" + ]["jsonUrl"] + results_of_test = self.request_with_timeout(send_wpt_test_request) + return results_of_test + + def create_wpt_request_link(self, options, website_to_be_tested): + test_parameters = "" + for key_value_pair in list(options.items())[6:]: + test_parameters += "&{}={}".format(*key_value_pair) + return ( + f"https://webpagetest.org/runtest.php?url={website_to_be_tested}&k={self.WPT_key}&" + f"location={options['location']}:{options['browser']}.{options['connection']}&" + f"f=json{test_parameters}" + ) + + def post_run_error_checks(self, results_of_test, options, url): + self.info(f"{url} test can be found here: {results_of_test['data']['summary']}") + + if results_of_test["data"]["testRuns"] != results_of_test["data"][ + "successfulFVRuns" + ] or ( + not results_of_test["data"]["fvonly"] + and results_of_test["data"]["testRuns"] + != results_of_test["data"]["successfulRVRuns"] + ): + """ + This error is raised in 2 conditions: + 1) If the testRuns requested does not equal the successfulFVRuns(Firstview runs) + 2) If repeat view is enabled and if testRuns requested does not equal successfulFVRuns + and successfulRVRuns + """ + # TODO: establish a threshold for failures, and consider failing see bug 1762470 + self.warning( + f"Something went wrong with firstview/repeat view runs for: {url}" + ) + self.confirm_correct_browser_and_location( + results_of_test["data"], options["test_parameters"] + ) + + def confirm_correct_browser_and_location(self, data, options): + if data["location"] != f"{options['location']}:{options['browser']}": + raise WPTBrowserSelectionError( + "Resulting browser & location are not aligned with submitted browser & location" + ) + + def add_wpt_run_to_metadata(self, wbt_run, metadata, website): + requested_values = self.extract_desired_values_from_wpt_run(wbt_run) + if requested_values is not None: + metadata.add_result( + { + "name": ("WebPageTest:" + re.match(r"(^.\w+)", website)[0]), + "framework": {"name": "mozperftest"}, + "transformer": "mozperftest.test.webpagetest:WebPageTestData", + "shouldAlert": True, + "results": [ + { + "values": [metric_value], + "name": metric_name, + "shouldAlert": True, + } + for metric_name, metric_value in requested_values.items() + ], + } + ) + + def extract_desired_values_from_wpt_run(self, wpt_run): + view_types = ["firstView"] + if not wpt_run["data"]["fvonly"]: + view_types.append("repeatView") + desired_values = {} + for statistic in self.statistic_types: + for view in view_types: + for value in self.wpt_browser_metrics: + if isinstance(wpt_run["data"][statistic][view], list): + self.error(f"Fail {wpt_run['data']['url']}") + return + if value not in wpt_run["data"][statistic][view].keys(): + raise WPTDataProcessingError( + f"{value} not found {wpt_run['data']['url']}" + ) + desired_values[f"{value}.{view}.{statistic}"] = int( + wpt_run["data"][statistic][view][value] + ) + try: + desired_values["browserVersion"] = float( + re.match( + r"\d+.\d+", + wpt_run["data"]["runs"]["1"]["firstView"]["browserVersion"], + )[0] + ) + desired_values["webPagetestVersion"] = float(wpt_run["webPagetestVersion"]) + except Exception: + self.error("Issue found with processing browser/WPT version") + return desired_values + + def test_runs_left_this_month(self): + tests_left_this_month = self.request_with_timeout( + f"https://www.webpagetest.org/testBalance.php?k={self.WPT_key}&f=json" + ) + self.info( + f"There are {tests_left_this_month['data']['remaining']} tests remaining" + ) diff --git a/python/mozperftest/mozperftest/test/xpcshell.py b/python/mozperftest/mozperftest/test/xpcshell.py new file mode 100644 index 0000000000..fb325f93a8 --- /dev/null +++ b/python/mozperftest/mozperftest/test/xpcshell.py @@ -0,0 +1,184 @@ +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at http://mozilla.org/MPL/2.0/. +import os +from collections import defaultdict +from distutils.dir_util import copy_tree +from pathlib import Path + +from mozperftest.layers import Layer +from mozperftest.utils import NoPerfMetricsError, temp_dir + + +class XPCShellTestError(Exception): + pass + + +class XPCShellData: + def open_data(self, data): + return { + "name": "xpcshell", + "subtest": data["name"], + "data": [ + {"file": "xpcshell", "value": value, "xaxis": xaxis} + for xaxis, value in enumerate(data["values"]) + ], + } + + def transform(self, data): + return data + + merge = transform + + +class XPCShell(Layer): + """Runs an xpcshell test.""" + + name = "xpcshell" + activated = True + + arguments = { + "cycles": {"type": int, "default": 13, "help": "Number of full cycles"}, + "binary": { + "type": str, + "default": None, + "help": ( + "xpcshell binary path. If not provided, " + "looks for it in the source tree." + ), + }, + "mozinfo": { + "type": str, + "default": None, + "help": ( + "mozinfo binary path. If not provided, looks for it in the obj tree." + ), + }, + "xre-path": {"type": str, "default": None, "help": "XRE path."}, + "nodejs": {"type": str, "default": None, "help": "nodejs binary path."}, + } + + def __init__(self, env, mach_cmd): + super(XPCShell, self).__init__(env, mach_cmd) + self.topsrcdir = mach_cmd.topsrcdir + self._mach_context = mach_cmd._mach_context + self.python_path = mach_cmd.virtualenv_manager.python_path + self.topobjdir = mach_cmd.topobjdir + self.distdir = mach_cmd.distdir + self.bindir = mach_cmd.bindir + self.statedir = mach_cmd.statedir + self.metrics = [] + self.topsrcdir = mach_cmd.topsrcdir + + def setup(self): + pass + + def run(self, metadata): + test = Path(metadata.script["filename"]) + + # let's grab the manifest + manifest = Path(test.parent, "xpcshell.ini") + if not manifest.exists(): + manifest = Path(test.parent, "xpcshell.toml") + if not manifest.exists(): + raise FileNotFoundError(str(manifest)) + + nodejs = self.get_arg("nodejs") + if nodejs is not None: + os.environ["MOZ_NODE_PATH"] = nodejs + + import runxpcshelltests + + verbose = self.get_arg("verbose") + xpcshell = runxpcshelltests.XPCShellTests(log=self) + kwargs = {} + kwargs["testPaths"] = test.name + kwargs["verbose"] = verbose + binary = self.get_arg("binary") + if binary is None: + binary = self.mach_cmd.get_binary_path("xpcshell") + kwargs["xpcshell"] = binary + binary = Path(binary) + mozinfo = self.get_arg("mozinfo") + if mozinfo is None: + mozinfo = binary.parent / ".." / "mozinfo.json" + if not mozinfo.exists(): + mozinfo = Path(self.topobjdir, "mozinfo.json") + else: + mozinfo = Path(mozinfo) + + kwargs["mozInfo"] = str(mozinfo) + kwargs["symbolsPath"] = str(Path(self.distdir, "crashreporter-symbols")) + kwargs["logfiles"] = True + kwargs["profileName"] = "firefox" + plugins = binary.parent / "plugins" + if not plugins.exists(): + plugins = Path(self.distdir, "plugins") + kwargs["pluginsPath"] = str(plugins) + + modules = Path(self.topobjdir, "_tests", "modules") + if not modules.exists(): + modules = binary.parent / "modules" + + kwargs["testingModulesDir"] = str(modules) + kwargs["utility_path"] = self.bindir + kwargs["manifest"] = str(manifest) + kwargs["totalChunks"] = 1 + xre_path = self.get_arg("xre-path") + if xre_path is not None: + self.info(f"Copying {xre_path} elements to {binary.parent}") + copy_tree(xre_path, str(binary.parent), update=True) + + http3server = binary.parent / "http3server" + if http3server.exists(): + kwargs["http3server"] = str(http3server) + + cycles = self.get_arg("cycles", 1) + self.info("Running %d cycles" % cycles) + + for cycle in range(cycles): + self.info("Cycle %d" % (cycle + 1)) + with temp_dir() as tmp: + kwargs["tempDir"] = tmp + if not xpcshell.runTests(kwargs): + raise XPCShellTestError() + + self.info("tests done.") + + results = defaultdict(list) + for m in self.metrics: + for key, val in m.items(): + results[key].append(val) + + if len(results.items()) == 0: + raise NoPerfMetricsError("xpcshell") + + metadata.add_result( + { + "name": test.name, + "framework": {"name": "mozperftest"}, + "transformer": "mozperftest.test.xpcshell:XPCShellData", + "results": [ + {"values": measures, "name": subtest} + for subtest, measures in results.items() + ], + } + ) + + return metadata + + def log_raw(self, data, **kw): + if data["action"] != "log": + return + if data["message"].strip('"') != "perfMetrics": + self.info(data["message"]) + return + self.metrics.append(data["extra"]) + + def process_output(self, procid, line, command): + self.info(line) + + def dummy(self, *args, **kw): + pass + + test_end = suite_start = suite_end = test_start = dummy diff --git a/python/mozperftest/mozperftest/tests/__init__.py b/python/mozperftest/mozperftest/tests/__init__.py new file mode 100644 index 0000000000..792d600548 --- /dev/null +++ b/python/mozperftest/mozperftest/tests/__init__.py @@ -0,0 +1 @@ +# diff --git a/python/mozperftest/mozperftest/tests/conftest.py b/python/mozperftest/mozperftest/tests/conftest.py new file mode 100644 index 0000000000..9de1150c9e --- /dev/null +++ b/python/mozperftest/mozperftest/tests/conftest.py @@ -0,0 +1,152 @@ +import json +import os +import pathlib +import sys +from unittest import mock + +import pytest + +from mozperftest.metrics.notebook.perftestetl import PerftestETL +from mozperftest.metrics.notebook.perftestnotebook import PerftestNotebook +from mozperftest.tests.support import HERE, get_running_env +from mozperftest.utils import temp_dir + + +@pytest.fixture +def patched_mozperftest_tools(): + tools_mock = mock.MagicMock(name="tools-mock") + _module = mock.MagicMock(name="mozperftest_tools") + _module.SideBySide.return_value = tools_mock + + try: + sys.modules["mozperftest_tools.side_by_side"] = _module + yield tools_mock + finally: + del sys.modules["mozperftest_tools.side_by_side"] + + +@pytest.fixture(scope="session", autouse=True) +def data(): + data_1 = { + "browserScripts": [ + {"timings": {"firstPaint": 101}}, + {"timings": {"firstPaint": 102}}, + {"timings": {"firstPaint": 103}}, + ], + } + + data_2 = { + "browserScripts": [ + {"timings": {"firstPaint": 201}}, + {"timings": {"firstPaint": 202}}, + {"timings": {"firstPaint": 203}}, + ], + } + + data_3 = { + "browserScripts": [ + {"timings": {"firstPaint": 301}}, + {"timings": {"firstPaint": 302}}, + {"timings": {"firstPaint": 303}}, + ], + } + + yield {"data_1": data_1, "data_2": data_2, "data_3": data_3} + + +@pytest.fixture(scope="session", autouse=True) +def standarized_data(): + return { + "browsertime": [ + { + "data": [ + {"value": 1, "xaxis": 1, "file": "file_1"}, + {"value": 2, "xaxis": 2, "file": "file_2"}, + ], + "name": "name", + "subtest": "subtest", + } + ] + } + + +@pytest.fixture(scope="session", autouse=True) +def files(data): + # Create a temporary directory. + with temp_dir() as td: + tmp_path = pathlib.Path(td) + + dirs = { + "resources": tmp_path / "resources", + "output": tmp_path / "output", + } + + for d in dirs.values(): + d.mkdir(parents=True, exist_ok=True) + + # Create temporary data files for tests. + def _create_temp_files(path, data): + path.touch(exist_ok=True) + path.write_text(data) + return path.resolve().as_posix() + + resources = {} + json_1 = dirs["resources"] / "file_1.json" + resources["file_1"] = _create_temp_files(json_1, json.dumps(data["data_1"])) + + json_2 = dirs["resources"] / "file_2.json" + resources["file_2"] = _create_temp_files(json_2, json.dumps(data["data_2"])) + + txt_3 = dirs["resources"] / "file_3.txt" + resources["file_3"] = _create_temp_files(txt_3, str(data["data_3"])) + + output = dirs["output"] / "output.json" + + yield { + "resources": resources, + "dirs": dirs, + "output": output, + } + + +@pytest.fixture(scope="session", autouse=True) +def ptetls(files): + resources, dirs, output = files["resources"], files["dirs"], files["output"] + _, metadata, _ = get_running_env() + config = {"output": output} + file_group_list = {"group_1": list(resources.values())} + file_group_str = {"group_1": dirs["resources"].resolve().as_posix()} + + yield { + "ptetl_list": PerftestETL( + file_groups=file_group_list, + config=config, + prefix="PerftestETL", + logger=metadata, + sort_files=True, + ), + "ptetl_str": PerftestETL( + file_groups=file_group_str, + config=config, + prefix="PerftestETL", + logger=metadata, + sort_files=True, + ), + } + + +@pytest.fixture(scope="session", autouse=True) +def ptnb(standarized_data): + _, metadata, _ = get_running_env() + return PerftestNotebook(standarized_data, metadata, "PerftestNotebook") + + +@pytest.fixture(scope="function", autouse=True) +def perftestetl_plugin(): + ret = HERE / "data" / "perftestetl_plugin" + + os.environ["PERFTESTETL_PLUGIN"] = ret.resolve().as_posix() + + yield ret + + del os.environ["PERFTESTETL_PLUGIN"] diff --git a/python/mozperftest/mozperftest/tests/data/WPT_fakekey.txt b/python/mozperftest/mozperftest/tests/data/WPT_fakekey.txt new file mode 100644 index 0000000000..e69de29bb2 --- /dev/null +++ b/python/mozperftest/mozperftest/tests/data/WPT_fakekey.txt diff --git a/python/mozperftest/mozperftest/tests/data/browsertime-results-video/browsertime.json b/python/mozperftest/mozperftest/tests/data/browsertime-results-video/browsertime.json new file mode 100644 index 0000000000..d2b2f83f2d --- /dev/null +++ b/python/mozperftest/mozperftest/tests/data/browsertime-results-video/browsertime.json @@ -0,0 +1,991 @@ +[ + { + "info": { + "browsertime": { + "version": "8.3.0" + }, + "url": "https://www.bbc.com/news/world-middle-east-53598965", + "timestamp": "2020-08-03T11:18:37+02:00", + "connectivity": { + "engine": "external", + "profile": "native" + }, + "extra": {}, + "alias": "pageload" + }, + "files": { + "video": [ + "pages/www.bbc.com/news/world-middle-east-53598965/data/video/1.mp4" + ], + "screenshot": [], + "timeline": [], + "consoleLog": [], + "netLog": [], + "perfLog": [] + }, + "cdp": { + "performance": [] + }, + "timestamps": [ + "2020-08-03T11:18:12+02:00" + ], + "browserScripts": [ + { + "browser": { + "appConstants": { + "ACCESSIBILITY": true, + "ANDROID_PACKAGE_NAME": "org.mozilla.firefox", + "ASAN": false, + "ASAN_REPORTER": false, + "BROWSER_CHROME_URL": "chrome://browser/content/browser.xhtml", + "DEBUG": false, + "DEBUG_JS_MODULES": "", + "DLL_PREFIX": "lib", + "DLL_SUFFIX": ".dylib", + "EARLY_BETA_OR_EARLIER": true, + "HAVE_SHELL_SERVICE": true, + "HAVE_USR_LIB64_DIR": false, + "MENUBAR_CAN_AUTOHIDE": false, + "MOZILLA_OFFICIAL": false, + "MOZ_ALLOW_ADDON_SIDELOAD": false, + "MOZ_ALLOW_LEGACY_EXTENSIONS": false, + "MOZ_ANDROID_HISTORY": false, + "MOZ_APP_BASENAME": "Firefox", + "MOZ_APP_NAME": "firefox", + "MOZ_APP_VERSION": "81.0a1", + "MOZ_APP_VERSION_DISPLAY": "81.0a1", + "MOZ_BING_API_CLIENTID": "no-bing-api-clientid", + "MOZ_BING_API_KEY": "no-bing-api-key", + "MOZ_BITS_DOWNLOAD": false, + "MOZ_BUILDID": "2020073017", + "MOZ_BUILD_APP": "browser", + "MOZ_CODE_COVERAGE": false, + "MOZ_CRASHREPORTER": true, + "MOZ_DATA_REPORTING": true, + "MOZ_DEV_EDITION": false, + "MOZ_GECKO_PROFILER": true, + "MOZ_GOOGLE_LOCATION_SERVICE_API_KEY": "no-google-location-service-api-key", + "MOZ_GOOGLE_SAFEBROWSING_API_KEY": "no-google-safebrowsing-api-key", + "MOZ_MACBUNDLE_NAME": "Nightly.app", + "MOZ_MAINTENANCE_SERVICE": false, + "MOZ_MOZILLA_API_KEY": "no-mozilla-api-key", + "MOZ_NEW_NOTIFICATION_STORE": true, + "MOZ_NEW_XULSTORE": true, + "MOZ_NORMANDY": true, + "MOZ_OFFICIAL_BRANDING": false, + "MOZ_PLACES": true, + "MOZ_REQUIRE_SIGNING": false, + "MOZ_SANDBOX": false, + "MOZ_SERVICES_HEALTHREPORT": true, + "MOZ_SERVICES_SYNC": false, + "MOZ_SWITCHBOARD": false, + "MOZ_SYSTEM_NSS": false, + "MOZ_TELEMETRY_ON_BY_DEFAULT": false, + "MOZ_TELEMETRY_REPORTING": false, + "MOZ_UNSIGNED_SCOPES": 0, + "MOZ_UPDATER": true, + "MOZ_UPDATE_AGENT": false, + "MOZ_UPDATE_CHANNEL": "default", + "MOZ_WEBRTC": true, + "MOZ_WIDGET_GTK": false, + "MOZ_WIDGET_TOOLKIT": "cocoa", + "NIGHTLY_BUILD": true, + "OMNIJAR_NAME": "omni.ja", + "RELEASE_OR_BETA": false, + "SOURCE_REVISION_URL": "", + "TELEMETRY_PING_FORMAT_VERSION": 4, + "TSAN": false, + "XP_UNIX": true, + "isPlatformAndVersionAtLeast": {}, + "isPlatformAndVersionAtMost": {}, + "platform": "macosx", + "unixstyle": "other" + }, + "asyncAppConstants": { + "ACCESSIBILITY": true, + "ANDROID_PACKAGE_NAME": "org.mozilla.firefox", + "ASAN": false, + "ASAN_REPORTER": false, + "BROWSER_CHROME_URL": "chrome://browser/content/browser.xhtml", + "DEBUG": false, + "DEBUG_JS_MODULES": "", + "DLL_PREFIX": "lib", + "DLL_SUFFIX": ".dylib", + "EARLY_BETA_OR_EARLIER": true, + "HAVE_SHELL_SERVICE": true, + "HAVE_USR_LIB64_DIR": false, + "MENUBAR_CAN_AUTOHIDE": false, + "MOZILLA_OFFICIAL": false, + "MOZ_ALLOW_ADDON_SIDELOAD": false, + "MOZ_ALLOW_LEGACY_EXTENSIONS": false, + "MOZ_ANDROID_HISTORY": false, + "MOZ_APP_BASENAME": "Firefox", + "MOZ_APP_NAME": "firefox", + "MOZ_APP_VERSION": "81.0a1", + "MOZ_APP_VERSION_DISPLAY": "81.0a1", + "MOZ_BING_API_CLIENTID": "no-bing-api-clientid", + "MOZ_BING_API_KEY": "no-bing-api-key", + "MOZ_BITS_DOWNLOAD": false, + "MOZ_BUILDID": "200730174322", + "MOZ_BUILD_APP": "browser", + "MOZ_CODE_COVERAGE": false, + "MOZ_CRASHREPORTER": true, + "MOZ_DATA_REPORTING": true, + "MOZ_DEV_EDITION": false, + "MOZ_GECKO_PROFILER": true, + "MOZ_GOOGLE_LOCATION_SERVICE_API_KEY": "no-google-location-service-api-key", + "MOZ_GOOGLE_SAFEBROWSING_API_KEY": "no-google-safebrowsing-api-key", + "MOZ_MACBUNDLE_NAME": "Nightly.app", + "MOZ_MAINTENANCE_SERVICE": false, + "MOZ_MOZILLA_API_KEY": "no-mozilla-api-key", + "MOZ_NEW_NOTIFICATION_STORE": true, + "MOZ_NEW_XULSTORE": true, + "MOZ_NORMANDY": true, + "MOZ_OFFICIAL_BRANDING": false, + "MOZ_PLACES": true, + "MOZ_REQUIRE_SIGNING": false, + "MOZ_SANDBOX": false, + "MOZ_SERVICES_HEALTHREPORT": true, + "MOZ_SERVICES_SYNC": false, + "MOZ_SWITCHBOARD": false, + "MOZ_SYSTEM_NSS": false, + "MOZ_TELEMETRY_ON_BY_DEFAULT": false, + "MOZ_TELEMETRY_REPORTING": false, + "MOZ_UNSIGNED_SCOPES": 0, + "MOZ_UPDATER": true, + "MOZ_UPDATE_AGENT": false, + "MOZ_UPDATE_CHANNEL": "default", + "MOZ_WEBRTC": true, + "MOZ_WIDGET_GTK": false, + "MOZ_WIDGET_TOOLKIT": "cocoa", + "NIGHTLY_BUILD": true, + "OMNIJAR_NAME": "omni.ja", + "RELEASE_OR_BETA": false, + "SOURCE_REVISION_URL": "", + "TELEMETRY_PING_FORMAT_VERSION": 4, + "TSAN": false, + "XP_UNIX": true, + "isPlatformAndVersionAtLeast": {}, + "isPlatformAndVersionAtMost": {}, + "platform": "macosx", + "unixstyle": "other" + }, + "userAgent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.15; rv:81.0) Gecko/20100101 Firefox/81.0", + "windowSize": "1366x768" + }, + "pageinfo": { + "documentHeight": 8937, + "documentSize": { + "decodedBodySize": 270461, + "encodedBodySize": 67482, + "transferSize": 68337 + }, + "documentTitle": "Coronavirus: Iran cover-up of deaths revealed by data leak - BBC News", + "documentWidth": 1366, + "domElements": 1348, + "navigationStartTime": 1596629, + "nextHopProtocol": "h2", + "resources": { + "count": 91, + "duration": 26360.459999999992 + }, + "responsive": true, + "url": "https://www.bbc.com/news/world-middle-east-53598965", + "visualElements": { + "heroes": [ + { + "filename": "_113766981_iranhospital.jpg", + "height": 363, + "name": "LargestImage", + "width": 646, + "x": 195, + "y": 403 + }, + { + "filename": null, + "height": 72, + "name": "Heading", + "width": 645, + "x": 195, + "y": 196 + } + ], + "viewport": { + "height": 694, + "width": 1366 + } + } + }, + "timings": { + "firstPaint": 1084, + "loadEventEnd": 8274, + "navigationTiming": { + "connectStart": 20, + "domComplete": 8238, + "domContentLoadedEventEnd": 4165, + "domContentLoadedEventStart": 4159, + "domInteractive": 1415, + "domainLookupEnd": 20, + "domainLookupStart": 20, + "duration": 8274, + "fetchStart": 20, + "loadEventEnd": 8274, + "loadEventStart": 8264, + "redirectEnd": 0, + "redirectStart": 0, + "requestStart": 29, + "responseEnd": 117, + "responseStart": 117, + "secureConnectionStart": 0, + "startTime": 0, + "unloadEventEnd": 124, + "unloadEventStart": 120, + "workerStart": 0 + }, + "pageTimings": { + "backEndTime": 117, + "domContentLoadedTime": 4159, + "domInteractiveTime": 1415, + "domainLookupTime": 0, + "frontEndTime": 8147, + "pageDownloadTime": 0, + "pageLoadTime": 8264, + "redirectionTime": 0, + "serverConnectionTime": 0, + "serverResponseTime": 88 + }, + "rumSpeedIndex": 5542, + "serverTimings": [], + "timeToContentfulPaint": 1124, + "timeToDomContentFlushed": 4158, + "timeToFirstInteractive": 11858, + "userTimings": { + "marks": [], + "measures": [] + } + } + } + ], + "visualMetrics": [], + "cpu": [], + "extras": [ + {} + ], + "fullyLoaded": [], + "errors": [ + [] + ], + "statistics": { + "browser": { + "appConstants": { + "MOZ_BUILDID": { + "median": 2020073017, + "mean": 2020073017, + "mdev": 0, + "stddev": 0, + "min": 2020073017, + "p10": 2020073017, + "p90": 2020073017, + "p99": 2020073017, + "max": 2020073017 + }, + "MOZ_UNSIGNED_SCOPES": { + "median": 0, + "mean": 0, + "mdev": 0, + "stddev": 0, + "min": 0, + "p10": 0, + "p90": 0, + "p99": 0, + "max": 0 + }, + "TELEMETRY_PING_FORMAT_VERSION": { + "median": 4, + "mean": 4, + "mdev": 0, + "stddev": 0, + "min": 4, + "p10": 4, + "p90": 4, + "p99": 4, + "max": 4 + } + }, + "asyncAppConstants": { + "MOZ_BUILDID": { + "median": 2020073017, + "mean": 2020073017, + "mdev": 0, + "stddev": 0, + "min": 2020073017, + "p10": 2020073017, + "p90": 2020073017, + "p99": 2020073017, + "max": 2020073017 + }, + "MOZ_UNSIGNED_SCOPES": { + "median": 0, + "mean": 0, + "mdev": 0, + "stddev": 0, + "min": 0, + "p10": 0, + "p90": 0, + "p99": 0, + "max": 0 + }, + "TELEMETRY_PING_FORMAT_VERSION": { + "median": 4, + "mean": 4, + "mdev": 0, + "stddev": 0, + "min": 4, + "p10": 4, + "p90": 4, + "p99": 4, + "max": 4 + } + } + }, + "pageinfo": { + "documentHeight": { + "median": 8937, + "mean": 8937, + "mdev": 0, + "stddev": 0, + "min": 8937, + "p10": 8937, + "p90": 8937, + "p99": 8937, + "max": 8937 + }, + "documentSize": { + "decodedBodySize": { + "median": 270461, + "mean": 270461, + "mdev": 0, + "stddev": 0, + "min": 270461, + "p10": 270461, + "p90": 270461, + "p99": 270461, + "max": 270461 + }, + "encodedBodySize": { + "median": 67482, + "mean": 67482, + "mdev": 0, + "stddev": 0, + "min": 67482, + "p10": 67482, + "p90": 67482, + "p99": 67482, + "max": 67482 + }, + "transferSize": { + "median": 68337, + "mean": 68337, + "mdev": 0, + "stddev": 0, + "min": 68337, + "p10": 68337, + "p90": 68337, + "p99": 68337, + "max": 68337 + } + }, + "documentWidth": { + "median": 1366, + "mean": 1366, + "mdev": 0, + "stddev": 0, + "min": 1366, + "p10": 1366, + "p90": 1366, + "p99": 1366, + "max": 1366 + }, + "domElements": { + "median": 1348, + "mean": 1348, + "mdev": 0, + "stddev": 0, + "min": 1348, + "p10": 1348, + "p90": 1348, + "p99": 1348, + "max": 1348 + }, + "navigationStartTime": { + "median": 1596629, + "mean": 1596629, + "mdev": 0, + "stddev": 0, + "min": 1596629, + "p10": 1596629, + "p90": 1596629, + "p99": 1596629, + "max": 1596629 + }, + "resources": { + "count": { + "median": 91, + "mean": 91, + "mdev": 0, + "stddev": 0, + "min": 91, + "p10": 91, + "p90": 91, + "p99": 91, + "max": 91 + }, + "duration": { + "median": 26360, + "mean": 26360, + "mdev": 0, + "stddev": 0, + "min": 26360, + "p10": 26360, + "p90": 26360, + "p99": 26360, + "max": 26360 + } + }, + "visualElements": { + "heroes": [ + { + "height": { + "median": 363, + "mean": 363, + "mdev": 0, + "stddev": 0, + "min": 363, + "p10": 363, + "p90": 363, + "p99": 363, + "max": 363 + }, + "width": { + "median": 646, + "mean": 646, + "mdev": 0, + "stddev": 0, + "min": 646, + "p10": 646, + "p90": 646, + "p99": 646, + "max": 646 + }, + "x": { + "median": 195, + "mean": 195, + "mdev": 0, + "stddev": 0, + "min": 195, + "p10": 195, + "p90": 195, + "p99": 195, + "max": 195 + }, + "y": { + "median": 403, + "mean": 403, + "mdev": 0, + "stddev": 0, + "min": 403, + "p10": 403, + "p90": 403, + "p99": 403, + "max": 403 + } + }, + { + "height": { + "median": 72, + "mean": 72, + "mdev": 0, + "stddev": 0, + "min": 72, + "p10": 72, + "p90": 72, + "p99": 72, + "max": 72 + }, + "width": { + "median": 645, + "mean": 645, + "mdev": 0, + "stddev": 0, + "min": 645, + "p10": 645, + "p90": 645, + "p99": 645, + "max": 645 + }, + "x": { + "median": 195, + "mean": 195, + "mdev": 0, + "stddev": 0, + "min": 195, + "p10": 195, + "p90": 195, + "p99": 195, + "max": 195 + }, + "y": { + "median": 196, + "mean": 196, + "mdev": 0, + "stddev": 0, + "min": 196, + "p10": 196, + "p90": 196, + "p99": 196, + "max": 196 + } + } + ], + "viewport": { + "height": { + "median": 694, + "mean": 694, + "mdev": 0, + "stddev": 0, + "min": 694, + "p10": 694, + "p90": 694, + "p99": 694, + "max": 694 + }, + "width": { + "median": 1366, + "mean": 1366, + "mdev": 0, + "stddev": 0, + "min": 1366, + "p10": 1366, + "p90": 1366, + "p99": 1366, + "max": 1366 + } + } + } + }, + "timings": { + "firstPaint": { + "median": 1084, + "mean": 1084, + "mdev": 0, + "stddev": 0, + "min": 1084, + "p10": 1084, + "p90": 1084, + "p99": 1084, + "max": 1084 + }, + "loadEventEnd": { + "median": 8274, + "mean": 8274, + "mdev": 0, + "stddev": 0, + "min": 8274, + "p10": 8274, + "p90": 8274, + "p99": 8274, + "max": 8274 + }, + "navigationTiming": { + "connectStart": { + "median": 20, + "mean": 20, + "mdev": 0, + "stddev": 0, + "min": 20, + "p10": 20, + "p90": 20, + "p99": 20, + "max": 20 + }, + "domComplete": { + "median": 8238, + "mean": 8238, + "mdev": 0, + "stddev": 0, + "min": 8238, + "p10": 8238, + "p90": 8238, + "p99": 8238, + "max": 8238 + }, + "domContentLoadedEventEnd": { + "median": 4165, + "mean": 4165, + "mdev": 0, + "stddev": 0, + "min": 4165, + "p10": 4165, + "p90": 4165, + "p99": 4165, + "max": 4165 + }, + "domContentLoadedEventStart": { + "median": 4159, + "mean": 4159, + "mdev": 0, + "stddev": 0, + "min": 4159, + "p10": 4159, + "p90": 4159, + "p99": 4159, + "max": 4159 + }, + "domInteractive": { + "median": 1415, + "mean": 1415, + "mdev": 0, + "stddev": 0, + "min": 1415, + "p10": 1415, + "p90": 1415, + "p99": 1415, + "max": 1415 + }, + "domainLookupEnd": { + "median": 20, + "mean": 20, + "mdev": 0, + "stddev": 0, + "min": 20, + "p10": 20, + "p90": 20, + "p99": 20, + "max": 20 + }, + "domainLookupStart": { + "median": 20, + "mean": 20, + "mdev": 0, + "stddev": 0, + "min": 20, + "p10": 20, + "p90": 20, + "p99": 20, + "max": 20 + }, + "duration": { + "median": 8274, + "mean": 8274, + "mdev": 0, + "stddev": 0, + "min": 8274, + "p10": 8274, + "p90": 8274, + "p99": 8274, + "max": 8274 + }, + "fetchStart": { + "median": 20, + "mean": 20, + "mdev": 0, + "stddev": 0, + "min": 20, + "p10": 20, + "p90": 20, + "p99": 20, + "max": 20 + }, + "loadEventEnd": { + "median": 8274, + "mean": 8274, + "mdev": 0, + "stddev": 0, + "min": 8274, + "p10": 8274, + "p90": 8274, + "p99": 8274, + "max": 8274 + }, + "loadEventStart": { + "median": 8264, + "mean": 8264, + "mdev": 0, + "stddev": 0, + "min": 8264, + "p10": 8264, + "p90": 8264, + "p99": 8264, + "max": 8264 + }, + "redirectEnd": { + "median": 0, + "mean": 0, + "mdev": 0, + "stddev": 0, + "min": 0, + "p10": 0, + "p90": 0, + "p99": 0, + "max": 0 + }, + "redirectStart": { + "median": 0, + "mean": 0, + "mdev": 0, + "stddev": 0, + "min": 0, + "p10": 0, + "p90": 0, + "p99": 0, + "max": 0 + }, + "requestStart": { + "median": 29, + "mean": 29, + "mdev": 0, + "stddev": 0, + "min": 29, + "p10": 29, + "p90": 29, + "p99": 29, + "max": 29 + }, + "responseEnd": { + "median": 117, + "mean": 117, + "mdev": 0, + "stddev": 0, + "min": 117, + "p10": 117, + "p90": 117, + "p99": 117, + "max": 117 + }, + "responseStart": { + "median": 117, + "mean": 117, + "mdev": 0, + "stddev": 0, + "min": 117, + "p10": 117, + "p90": 117, + "p99": 117, + "max": 117 + }, + "secureConnectionStart": { + "median": 0, + "mean": 0, + "mdev": 0, + "stddev": 0, + "min": 0, + "p10": 0, + "p90": 0, + "p99": 0, + "max": 0 + }, + "startTime": { + "median": 0, + "mean": 0, + "mdev": 0, + "stddev": 0, + "min": 0, + "p10": 0, + "p90": 0, + "p99": 0, + "max": 0 + }, + "unloadEventEnd": { + "median": 124, + "mean": 124, + "mdev": 0, + "stddev": 0, + "min": 124, + "p10": 124, + "p90": 124, + "p99": 124, + "max": 124 + }, + "unloadEventStart": { + "median": 120, + "mean": 120, + "mdev": 0, + "stddev": 0, + "min": 120, + "p10": 120, + "p90": 120, + "p99": 120, + "max": 120 + }, + "workerStart": { + "median": 0, + "mean": 0, + "mdev": 0, + "stddev": 0, + "min": 0, + "p10": 0, + "p90": 0, + "p99": 0, + "max": 0 + } + }, + "pageTimings": { + "backEndTime": { + "median": 117, + "mean": 117, + "mdev": 0, + "stddev": 0, + "min": 117, + "p10": 117, + "p90": 117, + "p99": 117, + "max": 117 + }, + "domContentLoadedTime": { + "median": 4159, + "mean": 4159, + "mdev": 0, + "stddev": 0, + "min": 4159, + "p10": 4159, + "p90": 4159, + "p99": 4159, + "max": 4159 + }, + "domInteractiveTime": { + "median": 1415, + "mean": 1415, + "mdev": 0, + "stddev": 0, + "min": 1415, + "p10": 1415, + "p90": 1415, + "p99": 1415, + "max": 1415 + }, + "domainLookupTime": { + "median": 0, + "mean": 0, + "mdev": 0, + "stddev": 0, + "min": 0, + "p10": 0, + "p90": 0, + "p99": 0, + "max": 0 + }, + "frontEndTime": { + "median": 8147, + "mean": 8147, + "mdev": 0, + "stddev": 0, + "min": 8147, + "p10": 8147, + "p90": 8147, + "p99": 8147, + "max": 8147 + }, + "pageDownloadTime": { + "median": 0, + "mean": 0, + "mdev": 0, + "stddev": 0, + "min": 0, + "p10": 0, + "p90": 0, + "p99": 0, + "max": 0 + }, + "pageLoadTime": { + "median": 8264, + "mean": 8264, + "mdev": 0, + "stddev": 0, + "min": 8264, + "p10": 8264, + "p90": 8264, + "p99": 8264, + "max": 8264 + }, + "redirectionTime": { + "median": 0, + "mean": 0, + "mdev": 0, + "stddev": 0, + "min": 0, + "p10": 0, + "p90": 0, + "p99": 0, + "max": 0 + }, + "serverConnectionTime": { + "median": 0, + "mean": 0, + "mdev": 0, + "stddev": 0, + "min": 0, + "p10": 0, + "p90": 0, + "p99": 0, + "max": 0 + }, + "serverResponseTime": { + "median": 88, + "mean": 88, + "mdev": 0, + "stddev": 0, + "min": 88, + "p10": 88, + "p90": 88, + "p99": 88, + "max": 88 + } + }, + "rumSpeedIndex": { + "median": 5542, + "mean": 5542, + "mdev": 0, + "stddev": 0, + "min": 5542, + "p10": 5542, + "p90": 5542, + "p99": 5542, + "max": 5542 + }, + "timeToContentfulPaint": { + "median": 1124, + "mean": 1124, + "mdev": 0, + "stddev": 0, + "min": 1124, + "p10": 1124, + "p90": 1124, + "p99": 1124, + "max": 1124 + }, + "timeToDomContentFlushed": { + "median": 4158, + "mean": 4158, + "mdev": 0, + "stddev": 0, + "min": 4158, + "p10": 4158, + "p90": 4158, + "p99": 4158, + "max": 4158 + }, + "timeToFirstInteractive": { + "median": 11858, + "mean": 11858, + "mdev": 0, + "stddev": 0, + "min": 11858, + "p10": 11858, + "p90": 11858, + "p99": 11858, + "max": 11858 + } + } + } + } +] diff --git a/python/mozperftest/mozperftest/tests/data/browsertime-results-video/pages/www.bbc.com/data/video/1.mp4 b/python/mozperftest/mozperftest/tests/data/browsertime-results-video/pages/www.bbc.com/data/video/1.mp4 Binary files differnew file mode 100644 index 0000000000..69cd3c5cde --- /dev/null +++ b/python/mozperftest/mozperftest/tests/data/browsertime-results-video/pages/www.bbc.com/data/video/1.mp4 diff --git a/python/mozperftest/mozperftest/tests/data/browsertime-results-video/pages/www.bbc.com/news/world-middle-east-53598965/data/video/1.mp4 b/python/mozperftest/mozperftest/tests/data/browsertime-results-video/pages/www.bbc.com/news/world-middle-east-53598965/data/video/1.mp4 Binary files differnew file mode 100644 index 0000000000..2bf1c13ba5 --- /dev/null +++ b/python/mozperftest/mozperftest/tests/data/browsertime-results-video/pages/www.bbc.com/news/world-middle-east-53598965/data/video/1.mp4 diff --git a/python/mozperftest/mozperftest/tests/data/browsertime-results-video/pages/www.bbc.com/news/world-us-canada-53599363/data/video/1.mp4 b/python/mozperftest/mozperftest/tests/data/browsertime-results-video/pages/www.bbc.com/news/world-us-canada-53599363/data/video/1.mp4 Binary files differnew file mode 100644 index 0000000000..01da00def4 --- /dev/null +++ b/python/mozperftest/mozperftest/tests/data/browsertime-results-video/pages/www.bbc.com/news/world-us-canada-53599363/data/video/1.mp4 diff --git a/python/mozperftest/mozperftest/tests/data/browsertime-results/browsertime.json b/python/mozperftest/mozperftest/tests/data/browsertime-results/browsertime.json new file mode 100644 index 0000000000..8b760ae4b2 --- /dev/null +++ b/python/mozperftest/mozperftest/tests/data/browsertime-results/browsertime.json @@ -0,0 +1 @@ +[{"info":{"browsertime":{"version":"8.2.0"},"url":"https://www.sitespeed.io/","timestamp":"2020-04-01T13:44:11+02:00","connectivity":{"engine":"external","profile":"native"},"extra":{}},"files":{"video":[],"screenshot":[],"timeline":[],"consoleLog":[],"netLog":[],"perfLog":[]},"cdp":{"performance":[]},"timestamps":["2020-04-01T13:43:53+02:00"],"browserScripts":[{"browser":{"appConstants":{"ACCESSIBILITY":true,"ANDROID_PACKAGE_NAME":"org.mozilla.firefox","ASAN":false,"ASAN_REPORTER":false,"BROWSER_CHROME_URL":"chrome://browser/content/browser.xhtml","DEBUG":false,"DEBUG_JS_MODULES":"","DLL_PREFIX":"lib","DLL_SUFFIX":".dylib","EARLY_BETA_OR_EARLIER":false,"FENNEC_NIGHTLY":false,"HAVE_SHELL_SERVICE":true,"HAVE_USR_LIB64_DIR":false,"MENUBAR_CAN_AUTOHIDE":false,"MOZILLA_OFFICIAL":true,"MOZ_ALLOW_LEGACY_EXTENSIONS":false,"MOZ_ANDROID_ACTIVITY_STREAM":false,"MOZ_ANDROID_HISTORY":false,"MOZ_ANDROID_MOZILLA_ONLINE":false,"MOZ_APP_NAME":"firefox","MOZ_APP_VERSION":"69.0","MOZ_APP_VERSION_DISPLAY":"69.0","MOZ_BING_API_CLIENTID":"no-bing-api-clientid","MOZ_BING_API_KEY":"no-bing-api-key","MOZ_BITS_DOWNLOAD":false,"MOZ_BUILD_APP":"browser","MOZ_CODE_COVERAGE":false,"MOZ_CRASHREPORTER":true,"MOZ_DATA_REPORTING":true,"MOZ_DEV_EDITION":false,"MOZ_GECKO_PROFILER":true,"MOZ_GOOGLE_LOCATION_SERVICE_API_KEY":"AIzaSyB2h2OuRcUgy5N-5hsZqiPW6sH3n_rptiQ","MOZ_GOOGLE_SAFEBROWSING_API_KEY":"AIzaSyC7jsptDS3am4tPx4r3nxis7IMjBc5Dovo","MOZ_GRAPHENE":false,"MOZ_MACBUNDLE_NAME":"Firefox.app","MOZ_MAINTENANCE_SERVICE":false,"MOZ_MOZILLA_API_KEY":"7e40f68c-7938-4c5d-9f95-e61647c213eb","MOZ_NEW_CERT_STORAGE":false,"MOZ_NEW_NOTIFICATION_STORE":false,"MOZ_NEW_XULSTORE":false,"MOZ_OFFICIAL_BRANDING":true,"MOZ_PLACES":true,"MOZ_REQUIRE_SIGNING":true,"MOZ_SANDBOX":true,"MOZ_SERVICES_HEALTHREPORT":true,"MOZ_SERVICES_SYNC":false,"MOZ_SWITCHBOARD":false,"MOZ_SYSTEM_NSS":false,"MOZ_TELEMETRY_ON_BY_DEFAULT":false,"MOZ_TELEMETRY_REPORTING":true,"MOZ_UNSIGNED_SCOPES":0,"MOZ_UPDATER":true,"MOZ_UPDATE_CHANNEL":"release","MOZ_WEBRTC":true,"MOZ_WIDGET_GTK":false,"MOZ_WIDGET_TOOLKIT":"cocoa","NIGHTLY_BUILD":false,"OMNIJAR_NAME":"omni.ja","RELEASE_OR_BETA":true,"SOURCE_REVISION_URL":"https://hg.mozilla.org/releases/mozilla-release/rev/cce4622026ab8e0130a0afc03f829f9b19ca38c2","TELEMETRY_PING_FORMAT_VERSION":4,"XP_UNIX":true,"isPlatformAndVersionAtLeast":{},"isPlatformAndVersionAtMost":{},"platform":"macosx"},"asyncAppConstants":{"ACCESSIBILITY":true,"ANDROID_PACKAGE_NAME":"org.mozilla.firefox","ASAN":false,"ASAN_REPORTER":false,"BROWSER_CHROME_URL":"chrome://browser/content/browser.xhtml","DEBUG":false,"DEBUG_JS_MODULES":"","DLL_PREFIX":"lib","DLL_SUFFIX":".dylib","EARLY_BETA_OR_EARLIER":false,"FENNEC_NIGHTLY":false,"HAVE_SHELL_SERVICE":true,"HAVE_USR_LIB64_DIR":false,"MENUBAR_CAN_AUTOHIDE":false,"MOZILLA_OFFICIAL":true,"MOZ_ALLOW_LEGACY_EXTENSIONS":false,"MOZ_ANDROID_ACTIVITY_STREAM":false,"MOZ_ANDROID_HISTORY":false,"MOZ_ANDROID_MOZILLA_ONLINE":false,"MOZ_APP_NAME":"firefox","MOZ_APP_VERSION":"69.0","MOZ_APP_VERSION_DISPLAY":"69.0","MOZ_BING_API_CLIENTID":"no-bing-api-clientid","MOZ_BING_API_KEY":"no-bing-api-key","MOZ_BITS_DOWNLOAD":false,"MOZ_BUILD_APP":"browser","MOZ_CODE_COVERAGE":false,"MOZ_CRASHREPORTER":true,"MOZ_DATA_REPORTING":true,"MOZ_DEV_EDITION":false,"MOZ_GECKO_PROFILER":true,"MOZ_GOOGLE_LOCATION_SERVICE_API_KEY":"AIzaSyB2h2OuRcUgy5N-5hsZqiPW6sH3n_rptiQ","MOZ_GOOGLE_SAFEBROWSING_API_KEY":"AIzaSyC7jsptDS3am4tPx4r3nxis7IMjBc5Dovo","MOZ_GRAPHENE":false,"MOZ_MACBUNDLE_NAME":"Firefox.app","MOZ_MAINTENANCE_SERVICE":false,"MOZ_MOZILLA_API_KEY":"7e40f68c-7938-4c5d-9f95-e61647c213eb","MOZ_NEW_CERT_STORAGE":false,"MOZ_NEW_NOTIFICATION_STORE":false,"MOZ_NEW_XULSTORE":false,"MOZ_OFFICIAL_BRANDING":true,"MOZ_PLACES":true,"MOZ_REQUIRE_SIGNING":true,"MOZ_SANDBOX":true,"MOZ_SERVICES_HEALTHREPORT":true,"MOZ_SERVICES_SYNC":false,"MOZ_SWITCHBOARD":false,"MOZ_SYSTEM_NSS":false,"MOZ_TELEMETRY_ON_BY_DEFAULT":false,"MOZ_TELEMETRY_REPORTING":true,"MOZ_UNSIGNED_SCOPES":0,"MOZ_UPDATER":true,"MOZ_UPDATE_CHANNEL":"release","MOZ_WEBRTC":true,"MOZ_WIDGET_GTK":false,"MOZ_WIDGET_TOOLKIT":"cocoa","NIGHTLY_BUILD":false,"OMNIJAR_NAME":"omni.ja","RELEASE_OR_BETA":true,"SOURCE_REVISION_URL":"https://hg.mozilla.org/releases/mozilla-release/rev/cce4622026ab8e0130a0afc03f829f9b19ca38c2","TELEMETRY_PING_FORMAT_VERSION":4,"XP_UNIX":true,"isPlatformAndVersionAtLeast":{},"isPlatformAndVersionAtMost":{},"platform":"macosx"},"userAgent":"Mozilla/5.0 (Macintosh; Intel Mac OS X 10.15; rv:69.0) Gecko/20100101 Firefox/69.0","windowSize":"1366x768"},"pageinfo":{"documentHeight":3836,"documentSize":{"decodedBodySize":34427,"encodedBodySize":9101,"transferSize":9772},"documentTitle":"Welcome to the wonderful world of Web Performance","documentWidth":1366,"domElements":347,"navigationStartTime":1585741433948,"nextHopProtocol":"h2","resources":{"count":13,"duration":6890.724426},"responsive":true,"url":"https://www.sitespeed.io/","visualElements":{"heroes":[{"filename":"team.png","height":433,"name":"LargestImage","width":500,"x":153,"y":50},{"filename":null,"height":173,"name":"Heading","width":510,"x":703,"y":66},{"filename":"sitespeed-logo-2c.png","height":50,"name":"header-logo","width":162,"x":153,"y":0},{"filename":"team.png","height":433,"name":"logo","width":500,"x":153,"y":50}],"viewport":{"height":694,"width":1366}}},"timings":{"firstPaint":1718,"loadEventEnd":1842,"navigationTiming":{"connectStart":213,"domComplete":1842,"domContentLoadedEventEnd":1565,"domContentLoadedEventStart":1565,"domInteractive":1183,"domainLookupEnd":213,"domainLookupStart":2,"duration":1842,"fetchStart":0,"loadEventEnd":1842,"loadEventStart":1842,"redirectEnd":0,"redirectStart":0,"requestStart":933,"responseEnd":1168,"responseStart":1025,"secureConnectionStart":399,"startTime":0,"unloadEventEnd":0,"unloadEventStart":0,"workerStart":0},"pageTimings":{"backEndTime":1025,"domContentLoadedTime":1565,"domInteractiveTime":1183,"domainLookupTime":211,"frontEndTime":674,"pageDownloadTime":143,"pageLoadTime":1842,"redirectionTime":0,"serverConnectionTime":720,"serverResponseTime":235},"rumSpeedIndex":1669,"serverTimings":[],"timeToContentfulPaint":1771,"timeToDomContentFlushed":1733,"timeToFirstInteractive":1771,"userTimings":{"marks":[],"measures":[]}}}],"visualMetrics":[],"cpu":[],"extras":[{}],"fullyLoaded":[],"errors":[[]],"statistics":{"browser":{"appConstants":{"MOZ_APP_VERSION":{"median":69,"mean":69,"mdev":0,"stddev":0,"min":69,"p10":69,"p90":69,"p99":69,"max":69},"MOZ_APP_VERSION_DISPLAY":{"median":69,"mean":69,"mdev":0,"stddev":0,"min":69,"p10":69,"p90":69,"p99":69,"max":69},"MOZ_UNSIGNED_SCOPES":{"median":0,"mean":0,"mdev":0,"stddev":0,"min":0,"p10":0,"p90":0,"p99":0,"max":0},"TELEMETRY_PING_FORMAT_VERSION":{"median":4,"mean":4,"mdev":0,"stddev":0,"min":4,"p10":4,"p90":4,"p99":4,"max":4}},"asyncAppConstants":{"MOZ_APP_VERSION":{"median":69,"mean":69,"mdev":0,"stddev":0,"min":69,"p10":69,"p90":69,"p99":69,"max":69},"MOZ_APP_VERSION_DISPLAY":{"median":69,"mean":69,"mdev":0,"stddev":0,"min":69,"p10":69,"p90":69,"p99":69,"max":69},"MOZ_UNSIGNED_SCOPES":{"median":0,"mean":0,"mdev":0,"stddev":0,"min":0,"p10":0,"p90":0,"p99":0,"max":0},"TELEMETRY_PING_FORMAT_VERSION":{"median":4,"mean":4,"mdev":0,"stddev":0,"min":4,"p10":4,"p90":4,"p99":4,"max":4}}},"pageinfo":{"documentHeight":{"median":3836,"mean":3836,"mdev":0,"stddev":0,"min":3836,"p10":3836,"p90":3836,"p99":3836,"max":3836},"documentSize":{"decodedBodySize":{"median":34427,"mean":34427,"mdev":0,"stddev":0,"min":34427,"p10":34427,"p90":34427,"p99":34427,"max":34427},"encodedBodySize":{"median":9101,"mean":9101,"mdev":0,"stddev":0,"min":9101,"p10":9101,"p90":9101,"p99":9101,"max":9101},"transferSize":{"median":9772,"mean":9772,"mdev":0,"stddev":0,"min":9772,"p10":9772,"p90":9772,"p99":9772,"max":9772}},"documentWidth":{"median":1366,"mean":1366,"mdev":0,"stddev":0,"min":1366,"p10":1366,"p90":1366,"p99":1366,"max":1366},"domElements":{"median":347,"mean":347,"mdev":0,"stddev":0,"min":347,"p10":347,"p90":347,"p99":347,"max":347},"navigationStartTime":{"median":1585741433948,"mean":1585741433948,"mdev":0,"stddev":0,"min":1585741433948,"p10":1585741433948,"p90":1585741433948,"p99":1585741433948,"max":1585741433948},"resources":{"count":{"median":13,"mean":13,"mdev":0,"stddev":0,"min":13,"p10":13,"p90":13,"p99":13,"max":13},"duration":{"median":6891,"mean":6891,"mdev":0,"stddev":0,"min":6891,"p10":6891,"p90":6891,"p99":6891,"max":6891}},"visualElements":{"heroes":[{"height":{"median":433,"mean":433,"mdev":0,"stddev":0,"min":433,"p10":433,"p90":433,"p99":433,"max":433},"width":{"median":500,"mean":500,"mdev":0,"stddev":0,"min":500,"p10":500,"p90":500,"p99":500,"max":500},"x":{"median":153,"mean":153,"mdev":0,"stddev":0,"min":153,"p10":153,"p90":153,"p99":153,"max":153},"y":{"median":50,"mean":50,"mdev":0,"stddev":0,"min":50,"p10":50,"p90":50,"p99":50,"max":50}},{"height":{"median":173,"mean":173,"mdev":0,"stddev":0,"min":173,"p10":173,"p90":173,"p99":173,"max":173},"width":{"median":510,"mean":510,"mdev":0,"stddev":0,"min":510,"p10":510,"p90":510,"p99":510,"max":510},"x":{"median":703,"mean":703,"mdev":0,"stddev":0,"min":703,"p10":703,"p90":703,"p99":703,"max":703},"y":{"median":66,"mean":66,"mdev":0,"stddev":0,"min":66,"p10":66,"p90":66,"p99":66,"max":66}},{"height":{"median":50,"mean":50,"mdev":0,"stddev":0,"min":50,"p10":50,"p90":50,"p99":50,"max":50},"width":{"median":162,"mean":162,"mdev":0,"stddev":0,"min":162,"p10":162,"p90":162,"p99":162,"max":162},"x":{"median":153,"mean":153,"mdev":0,"stddev":0,"min":153,"p10":153,"p90":153,"p99":153,"max":153},"y":{"median":0,"mean":0,"mdev":0,"stddev":0,"min":0,"p10":0,"p90":0,"p99":0,"max":0}},{"height":{"median":433,"mean":433,"mdev":0,"stddev":0,"min":433,"p10":433,"p90":433,"p99":433,"max":433},"width":{"median":500,"mean":500,"mdev":0,"stddev":0,"min":500,"p10":500,"p90":500,"p99":500,"max":500},"x":{"median":153,"mean":153,"mdev":0,"stddev":0,"min":153,"p10":153,"p90":153,"p99":153,"max":153},"y":{"median":50,"mean":50,"mdev":0,"stddev":0,"min":50,"p10":50,"p90":50,"p99":50,"max":50}}],"viewport":{"height":{"median":694,"mean":694,"mdev":0,"stddev":0,"min":694,"p10":694,"p90":694,"p99":694,"max":694},"width":{"median":1366,"mean":1366,"mdev":0,"stddev":0,"min":1366,"p10":1366,"p90":1366,"p99":1366,"max":1366}}}},"timings":{"firstPaint":{"median":1718,"mean":1718,"mdev":0,"stddev":0,"min":1718,"p10":1718,"p90":1718,"p99":1718,"max":1718},"loadEventEnd":{"median":1842,"mean":1842,"mdev":0,"stddev":0,"min":1842,"p10":1842,"p90":1842,"p99":1842,"max":1842},"navigationTiming":{"connectStart":{"median":213,"mean":213,"mdev":0,"stddev":0,"min":213,"p10":213,"p90":213,"p99":213,"max":213},"domComplete":{"median":1842,"mean":1842,"mdev":0,"stddev":0,"min":1842,"p10":1842,"p90":1842,"p99":1842,"max":1842},"domContentLoadedEventEnd":{"median":1565,"mean":1565,"mdev":0,"stddev":0,"min":1565,"p10":1565,"p90":1565,"p99":1565,"max":1565},"domContentLoadedEventStart":{"median":1565,"mean":1565,"mdev":0,"stddev":0,"min":1565,"p10":1565,"p90":1565,"p99":1565,"max":1565},"domInteractive":{"median":1183,"mean":1183,"mdev":0,"stddev":0,"min":1183,"p10":1183,"p90":1183,"p99":1183,"max":1183},"domainLookupEnd":{"median":213,"mean":213,"mdev":0,"stddev":0,"min":213,"p10":213,"p90":213,"p99":213,"max":213},"domainLookupStart":{"median":2,"mean":2,"mdev":0,"stddev":0,"min":2,"p10":2,"p90":2,"p99":2,"max":2},"duration":{"median":1842,"mean":1842,"mdev":0,"stddev":0,"min":1842,"p10":1842,"p90":1842,"p99":1842,"max":1842},"fetchStart":{"median":0,"mean":0,"mdev":0,"stddev":0,"min":0,"p10":0,"p90":0,"p99":0,"max":0},"loadEventEnd":{"median":1842,"mean":1842,"mdev":0,"stddev":0,"min":1842,"p10":1842,"p90":1842,"p99":1842,"max":1842},"loadEventStart":{"median":1842,"mean":1842,"mdev":0,"stddev":0,"min":1842,"p10":1842,"p90":1842,"p99":1842,"max":1842},"redirectEnd":{"median":0,"mean":0,"mdev":0,"stddev":0,"min":0,"p10":0,"p90":0,"p99":0,"max":0},"redirectStart":{"median":0,"mean":0,"mdev":0,"stddev":0,"min":0,"p10":0,"p90":0,"p99":0,"max":0},"requestStart":{"median":933,"mean":933,"mdev":0,"stddev":0,"min":933,"p10":933,"p90":933,"p99":933,"max":933},"responseEnd":{"median":1168,"mean":1168,"mdev":0,"stddev":0,"min":1168,"p10":1168,"p90":1168,"p99":1168,"max":1168},"responseStart":{"median":1025,"mean":1025,"mdev":0,"stddev":0,"min":1025,"p10":1025,"p90":1025,"p99":1025,"max":1025},"secureConnectionStart":{"median":399,"mean":399,"mdev":0,"stddev":0,"min":399,"p10":399,"p90":399,"p99":399,"max":399},"startTime":{"median":0,"mean":0,"mdev":0,"stddev":0,"min":0,"p10":0,"p90":0,"p99":0,"max":0},"unloadEventEnd":{"median":0,"mean":0,"mdev":0,"stddev":0,"min":0,"p10":0,"p90":0,"p99":0,"max":0},"unloadEventStart":{"median":0,"mean":0,"mdev":0,"stddev":0,"min":0,"p10":0,"p90":0,"p99":0,"max":0},"workerStart":{"median":0,"mean":0,"mdev":0,"stddev":0,"min":0,"p10":0,"p90":0,"p99":0,"max":0}},"pageTimings":{"backEndTime":{"median":1025,"mean":1025,"mdev":0,"stddev":0,"min":1025,"p10":1025,"p90":1025,"p99":1025,"max":1025},"domContentLoadedTime":{"median":1565,"mean":1565,"mdev":0,"stddev":0,"min":1565,"p10":1565,"p90":1565,"p99":1565,"max":1565},"domInteractiveTime":{"median":1183,"mean":1183,"mdev":0,"stddev":0,"min":1183,"p10":1183,"p90":1183,"p99":1183,"max":1183},"domainLookupTime":{"median":211,"mean":211,"mdev":0,"stddev":0,"min":211,"p10":211,"p90":211,"p99":211,"max":211},"frontEndTime":{"median":674,"mean":674,"mdev":0,"stddev":0,"min":674,"p10":674,"p90":674,"p99":674,"max":674},"pageDownloadTime":{"median":143,"mean":143,"mdev":0,"stddev":0,"min":143,"p10":143,"p90":143,"p99":143,"max":143},"pageLoadTime":{"median":1842,"mean":1842,"mdev":0,"stddev":0,"min":1842,"p10":1842,"p90":1842,"p99":1842,"max":1842},"redirectionTime":{"median":0,"mean":0,"mdev":0,"stddev":0,"min":0,"p10":0,"p90":0,"p99":0,"max":0},"serverConnectionTime":{"median":720,"mean":720,"mdev":0,"stddev":0,"min":720,"p10":720,"p90":720,"p99":720,"max":720},"serverResponseTime":{"median":235,"mean":235,"mdev":0,"stddev":0,"min":235,"p10":235,"p90":235,"p99":235,"max":235}},"rumSpeedIndex":{"median":1669,"mean":1669,"mdev":0,"stddev":0,"min":1669,"p10":1669,"p90":1669,"p99":1669,"max":1669},"timeToContentfulPaint":{"median":1771,"mean":1771,"mdev":0,"stddev":0,"min":1771,"p10":1771,"p90":1771,"p99":1771,"max":1771},"timeToDomContentFlushed":{"median":1733,"mean":1733,"mdev":0,"stddev":0,"min":1733,"p10":1733,"p90":1733,"p99":1733,"max":1733},"timeToFirstInteractive":{"median":1771,"mean":1771,"mdev":0,"stddev":0,"min":1771,"p10":1771,"p90":1771,"p99":1771,"max":1771}}}},{"info":{"browsertime":{"version":"8.2.0"},"url":"https://www.mozilla.org/en-US/","timestamp":"2020-04-01T13:44:11+02:00","connectivity":{"engine":"external","profile":"native"},"extra":{}},"files":{"video":[],"screenshot":[],"timeline":[],"consoleLog":[],"netLog":[],"perfLog":[]},"cdp":{"performance":[]},"timestamps":["2020-04-01T13:44:02+02:00"],"browserScripts":[{"browser":{"appConstants":{"ACCESSIBILITY":true,"ANDROID_PACKAGE_NAME":"org.mozilla.firefox","ASAN":false,"ASAN_REPORTER":false,"BROWSER_CHROME_URL":"chrome://browser/content/browser.xhtml","DEBUG":false,"DEBUG_JS_MODULES":"","DLL_PREFIX":"lib","DLL_SUFFIX":".dylib","EARLY_BETA_OR_EARLIER":false,"FENNEC_NIGHTLY":false,"HAVE_SHELL_SERVICE":true,"HAVE_USR_LIB64_DIR":false,"MENUBAR_CAN_AUTOHIDE":false,"MOZILLA_OFFICIAL":true,"MOZ_ALLOW_LEGACY_EXTENSIONS":false,"MOZ_ANDROID_ACTIVITY_STREAM":false,"MOZ_ANDROID_HISTORY":false,"MOZ_ANDROID_MOZILLA_ONLINE":false,"MOZ_APP_NAME":"firefox","MOZ_APP_VERSION":"69.0","MOZ_APP_VERSION_DISPLAY":"69.0","MOZ_BING_API_CLIENTID":"no-bing-api-clientid","MOZ_BING_API_KEY":"no-bing-api-key","MOZ_BITS_DOWNLOAD":false,"MOZ_BUILD_APP":"browser","MOZ_CODE_COVERAGE":false,"MOZ_CRASHREPORTER":true,"MOZ_DATA_REPORTING":true,"MOZ_DEV_EDITION":false,"MOZ_GECKO_PROFILER":true,"MOZ_GOOGLE_LOCATION_SERVICE_API_KEY":"AIzaSyB2h2OuRcUgy5N-5hsZqiPW6sH3n_rptiQ","MOZ_GOOGLE_SAFEBROWSING_API_KEY":"AIzaSyC7jsptDS3am4tPx4r3nxis7IMjBc5Dovo","MOZ_GRAPHENE":false,"MOZ_MACBUNDLE_NAME":"Firefox.app","MOZ_MAINTENANCE_SERVICE":false,"MOZ_MOZILLA_API_KEY":"7e40f68c-7938-4c5d-9f95-e61647c213eb","MOZ_NEW_CERT_STORAGE":false,"MOZ_NEW_NOTIFICATION_STORE":false,"MOZ_NEW_XULSTORE":false,"MOZ_OFFICIAL_BRANDING":true,"MOZ_PLACES":true,"MOZ_REQUIRE_SIGNING":true,"MOZ_SANDBOX":true,"MOZ_SERVICES_HEALTHREPORT":true,"MOZ_SERVICES_SYNC":false,"MOZ_SWITCHBOARD":false,"MOZ_SYSTEM_NSS":false,"MOZ_TELEMETRY_ON_BY_DEFAULT":false,"MOZ_TELEMETRY_REPORTING":true,"MOZ_UNSIGNED_SCOPES":0,"MOZ_UPDATER":true,"MOZ_UPDATE_CHANNEL":"release","MOZ_WEBRTC":true,"MOZ_WIDGET_GTK":false,"MOZ_WIDGET_TOOLKIT":"cocoa","NIGHTLY_BUILD":false,"OMNIJAR_NAME":"omni.ja","RELEASE_OR_BETA":true,"SOURCE_REVISION_URL":"https://hg.mozilla.org/releases/mozilla-release/rev/cce4622026ab8e0130a0afc03f829f9b19ca38c2","TELEMETRY_PING_FORMAT_VERSION":4,"XP_UNIX":true,"isPlatformAndVersionAtLeast":{},"isPlatformAndVersionAtMost":{},"platform":"macosx"},"asyncAppConstants":{"ACCESSIBILITY":true,"ANDROID_PACKAGE_NAME":"org.mozilla.firefox","ASAN":false,"ASAN_REPORTER":false,"BROWSER_CHROME_URL":"chrome://browser/content/browser.xhtml","DEBUG":false,"DEBUG_JS_MODULES":"","DLL_PREFIX":"lib","DLL_SUFFIX":".dylib","EARLY_BETA_OR_EARLIER":false,"FENNEC_NIGHTLY":false,"HAVE_SHELL_SERVICE":true,"HAVE_USR_LIB64_DIR":false,"MENUBAR_CAN_AUTOHIDE":false,"MOZILLA_OFFICIAL":true,"MOZ_ALLOW_LEGACY_EXTENSIONS":false,"MOZ_ANDROID_ACTIVITY_STREAM":false,"MOZ_ANDROID_HISTORY":false,"MOZ_ANDROID_MOZILLA_ONLINE":false,"MOZ_APP_NAME":"firefox","MOZ_APP_VERSION":"69.0","MOZ_APP_VERSION_DISPLAY":"69.0","MOZ_BING_API_CLIENTID":"no-bing-api-clientid","MOZ_BING_API_KEY":"no-bing-api-key","MOZ_BITS_DOWNLOAD":false,"MOZ_BUILD_APP":"browser","MOZ_CODE_COVERAGE":false,"MOZ_CRASHREPORTER":true,"MOZ_DATA_REPORTING":true,"MOZ_DEV_EDITION":false,"MOZ_GECKO_PROFILER":true,"MOZ_GOOGLE_LOCATION_SERVICE_API_KEY":"AIzaSyB2h2OuRcUgy5N-5hsZqiPW6sH3n_rptiQ","MOZ_GOOGLE_SAFEBROWSING_API_KEY":"AIzaSyC7jsptDS3am4tPx4r3nxis7IMjBc5Dovo","MOZ_GRAPHENE":false,"MOZ_MACBUNDLE_NAME":"Firefox.app","MOZ_MAINTENANCE_SERVICE":false,"MOZ_MOZILLA_API_KEY":"7e40f68c-7938-4c5d-9f95-e61647c213eb","MOZ_NEW_CERT_STORAGE":false,"MOZ_NEW_NOTIFICATION_STORE":false,"MOZ_NEW_XULSTORE":false,"MOZ_OFFICIAL_BRANDING":true,"MOZ_PLACES":true,"MOZ_REQUIRE_SIGNING":true,"MOZ_SANDBOX":true,"MOZ_SERVICES_HEALTHREPORT":true,"MOZ_SERVICES_SYNC":false,"MOZ_SWITCHBOARD":false,"MOZ_SYSTEM_NSS":false,"MOZ_TELEMETRY_ON_BY_DEFAULT":false,"MOZ_TELEMETRY_REPORTING":true,"MOZ_UNSIGNED_SCOPES":0,"MOZ_UPDATER":true,"MOZ_UPDATE_CHANNEL":"release","MOZ_WEBRTC":true,"MOZ_WIDGET_GTK":false,"MOZ_WIDGET_TOOLKIT":"cocoa","NIGHTLY_BUILD":false,"OMNIJAR_NAME":"omni.ja","RELEASE_OR_BETA":true,"SOURCE_REVISION_URL":"https://hg.mozilla.org/releases/mozilla-release/rev/cce4622026ab8e0130a0afc03f829f9b19ca38c2","TELEMETRY_PING_FORMAT_VERSION":4,"XP_UNIX":true,"isPlatformAndVersionAtLeast":{},"isPlatformAndVersionAtMost":{},"platform":"macosx"},"userAgent":"Mozilla/5.0 (Macintosh; Intel Mac OS X 10.15; rv:69.0) Gecko/20100101 Firefox/69.0","windowSize":"1366x768"},"pageinfo":{"documentHeight":6826,"documentSize":{"decodedBodySize":181123,"encodedBodySize":181123,"transferSize":183229},"documentTitle":"Internet for people, not profit — Mozilla","documentWidth":1366,"domElements":1456,"navigationStartTime":1585741442119,"nextHopProtocol":"h2","resources":{"count":39,"duration":10094.41237},"responsive":true,"url":"https://www.mozilla.org/en-US/","visualElements":{"heroes":[{"filename":"corona.ce92523a561d.jpg","height":434,"name":"LargestImage","width":771,"x":96,"y":570},{"filename":null,"height":352,"name":"Heading","width":1,"x":-1,"y":95}],"viewport":{"height":694,"width":1366}}},"timings":{"firstPaint":966,"loadEventEnd":2082,"navigationTiming":{"connectStart":178,"domComplete":2079,"domContentLoadedEventEnd":1083,"domContentLoadedEventStart":1082,"domInteractive":1081,"domainLookupEnd":178,"domainLookupStart":3,"duration":2082,"fetchStart":1,"loadEventEnd":2082,"loadEventStart":2079,"redirectEnd":0,"redirectStart":0,"requestStart":693,"responseEnd":745,"responseStart":745,"secureConnectionStart":322,"startTime":0,"unloadEventEnd":0,"unloadEventStart":0,"workerStart":0},"pageTimings":{"backEndTime":745,"domContentLoadedTime":1082,"domInteractiveTime":1081,"domainLookupTime":174,"frontEndTime":1334,"pageDownloadTime":0,"pageLoadTime":2079,"redirectionTime":0,"serverConnectionTime":515,"serverResponseTime":52},"rumSpeedIndex":1224,"serverTimings":[],"timeToContentfulPaint":1009,"timeToDomContentFlushed":1084,"timeToFirstInteractive":1082,"userTimings":{"marks":[],"measures":[]}}}],"visualMetrics":[],"cpu":[],"extras":[{}],"fullyLoaded":[],"errors":[[]],"statistics":{"browser":{"appConstants":{"MOZ_APP_VERSION":{"median":69,"mean":69,"mdev":0,"stddev":0,"min":69,"p10":69,"p90":69,"p99":69,"max":69},"MOZ_APP_VERSION_DISPLAY":{"median":69,"mean":69,"mdev":0,"stddev":0,"min":69,"p10":69,"p90":69,"p99":69,"max":69},"MOZ_UNSIGNED_SCOPES":{"median":0,"mean":0,"mdev":0,"stddev":0,"min":0,"p10":0,"p90":0,"p99":0,"max":0},"TELEMETRY_PING_FORMAT_VERSION":{"median":4,"mean":4,"mdev":0,"stddev":0,"min":4,"p10":4,"p90":4,"p99":4,"max":4}},"asyncAppConstants":{"MOZ_APP_VERSION":{"median":69,"mean":69,"mdev":0,"stddev":0,"min":69,"p10":69,"p90":69,"p99":69,"max":69},"MOZ_APP_VERSION_DISPLAY":{"median":69,"mean":69,"mdev":0,"stddev":0,"min":69,"p10":69,"p90":69,"p99":69,"max":69},"MOZ_UNSIGNED_SCOPES":{"median":0,"mean":0,"mdev":0,"stddev":0,"min":0,"p10":0,"p90":0,"p99":0,"max":0},"TELEMETRY_PING_FORMAT_VERSION":{"median":4,"mean":4,"mdev":0,"stddev":0,"min":4,"p10":4,"p90":4,"p99":4,"max":4}}},"pageinfo":{"documentHeight":{"median":6826,"mean":6826,"mdev":0,"stddev":0,"min":6826,"p10":6826,"p90":6826,"p99":6826,"max":6826},"documentSize":{"decodedBodySize":{"median":181123,"mean":181123,"mdev":0,"stddev":0,"min":181123,"p10":181123,"p90":181123,"p99":181123,"max":181123},"encodedBodySize":{"median":181123,"mean":181123,"mdev":0,"stddev":0,"min":181123,"p10":181123,"p90":181123,"p99":181123,"max":181123},"transferSize":{"median":183229,"mean":183229,"mdev":0,"stddev":0,"min":183229,"p10":183229,"p90":183229,"p99":183229,"max":183229}},"documentWidth":{"median":1366,"mean":1366,"mdev":0,"stddev":0,"min":1366,"p10":1366,"p90":1366,"p99":1366,"max":1366},"domElements":{"median":1456,"mean":1456,"mdev":0,"stddev":0,"min":1456,"p10":1456,"p90":1456,"p99":1456,"max":1456},"navigationStartTime":{"median":1585741442119,"mean":1585741442119,"mdev":0,"stddev":0,"min":1585741442119,"p10":1585741442119,"p90":1585741442119,"p99":1585741442119,"max":1585741442119},"resources":{"count":{"median":39,"mean":39,"mdev":0,"stddev":0,"min":39,"p10":39,"p90":39,"p99":39,"max":39},"duration":{"median":10094,"mean":10094,"mdev":0,"stddev":0,"min":10094,"p10":10094,"p90":10094,"p99":10094,"max":10094}},"visualElements":{"heroes":[{"height":{"median":434,"mean":434,"mdev":0,"stddev":0,"min":434,"p10":434,"p90":434,"p99":434,"max":434},"width":{"median":771,"mean":771,"mdev":0,"stddev":0,"min":771,"p10":771,"p90":771,"p99":771,"max":771},"x":{"median":96,"mean":96,"mdev":0,"stddev":0,"min":96,"p10":96,"p90":96,"p99":96,"max":96},"y":{"median":570,"mean":570,"mdev":0,"stddev":0,"min":570,"p10":570,"p90":570,"p99":570,"max":570}},{"height":{"median":352,"mean":352,"mdev":0,"stddev":0,"min":352,"p10":352,"p90":352,"p99":352,"max":352},"width":{"median":1,"mean":1,"mdev":0,"stddev":0,"min":1,"p10":1,"p90":1,"p99":1,"max":1},"x":{"median":-1,"mean":-1,"mdev":0,"stddev":0,"min":-1,"p10":-1,"p90":-1,"p99":-1,"max":-1},"y":{"median":95,"mean":95,"mdev":0,"stddev":0,"min":95,"p10":95,"p90":95,"p99":95,"max":95}}],"viewport":{"height":{"median":694,"mean":694,"mdev":0,"stddev":0,"min":694,"p10":694,"p90":694,"p99":694,"max":694},"width":{"median":1366,"mean":1366,"mdev":0,"stddev":0,"min":1366,"p10":1366,"p90":1366,"p99":1366,"max":1366}}}},"timings":{"firstPaint":{"median":966,"mean":966,"mdev":0,"stddev":0,"min":966,"p10":966,"p90":966,"p99":966,"max":966},"loadEventEnd":{"median":2082,"mean":2082,"mdev":0,"stddev":0,"min":2082,"p10":2082,"p90":2082,"p99":2082,"max":2082},"navigationTiming":{"connectStart":{"median":178,"mean":178,"mdev":0,"stddev":0,"min":178,"p10":178,"p90":178,"p99":178,"max":178},"domComplete":{"median":2079,"mean":2079,"mdev":0,"stddev":0,"min":2079,"p10":2079,"p90":2079,"p99":2079,"max":2079},"domContentLoadedEventEnd":{"median":1083,"mean":1083,"mdev":0,"stddev":0,"min":1083,"p10":1083,"p90":1083,"p99":1083,"max":1083},"domContentLoadedEventStart":{"median":1082,"mean":1082,"mdev":0,"stddev":0,"min":1082,"p10":1082,"p90":1082,"p99":1082,"max":1082},"domInteractive":{"median":1081,"mean":1081,"mdev":0,"stddev":0,"min":1081,"p10":1081,"p90":1081,"p99":1081,"max":1081},"domainLookupEnd":{"median":178,"mean":178,"mdev":0,"stddev":0,"min":178,"p10":178,"p90":178,"p99":178,"max":178},"domainLookupStart":{"median":3,"mean":3,"mdev":0,"stddev":0,"min":3,"p10":3,"p90":3,"p99":3,"max":3},"duration":{"median":2082,"mean":2082,"mdev":0,"stddev":0,"min":2082,"p10":2082,"p90":2082,"p99":2082,"max":2082},"fetchStart":{"median":1,"mean":1,"mdev":0,"stddev":0,"min":1,"p10":1,"p90":1,"p99":1,"max":1},"loadEventEnd":{"median":2082,"mean":2082,"mdev":0,"stddev":0,"min":2082,"p10":2082,"p90":2082,"p99":2082,"max":2082},"loadEventStart":{"median":2079,"mean":2079,"mdev":0,"stddev":0,"min":2079,"p10":2079,"p90":2079,"p99":2079,"max":2079},"redirectEnd":{"median":0,"mean":0,"mdev":0,"stddev":0,"min":0,"p10":0,"p90":0,"p99":0,"max":0},"redirectStart":{"median":0,"mean":0,"mdev":0,"stddev":0,"min":0,"p10":0,"p90":0,"p99":0,"max":0},"requestStart":{"median":693,"mean":693,"mdev":0,"stddev":0,"min":693,"p10":693,"p90":693,"p99":693,"max":693},"responseEnd":{"median":745,"mean":745,"mdev":0,"stddev":0,"min":745,"p10":745,"p90":745,"p99":745,"max":745},"responseStart":{"median":745,"mean":745,"mdev":0,"stddev":0,"min":745,"p10":745,"p90":745,"p99":745,"max":745},"secureConnectionStart":{"median":322,"mean":322,"mdev":0,"stddev":0,"min":322,"p10":322,"p90":322,"p99":322,"max":322},"startTime":{"median":0,"mean":0,"mdev":0,"stddev":0,"min":0,"p10":0,"p90":0,"p99":0,"max":0},"unloadEventEnd":{"median":0,"mean":0,"mdev":0,"stddev":0,"min":0,"p10":0,"p90":0,"p99":0,"max":0},"unloadEventStart":{"median":0,"mean":0,"mdev":0,"stddev":0,"min":0,"p10":0,"p90":0,"p99":0,"max":0},"workerStart":{"median":0,"mean":0,"mdev":0,"stddev":0,"min":0,"p10":0,"p90":0,"p99":0,"max":0}},"pageTimings":{"backEndTime":{"median":745,"mean":745,"mdev":0,"stddev":0,"min":745,"p10":745,"p90":745,"p99":745,"max":745},"domContentLoadedTime":{"median":1082,"mean":1082,"mdev":0,"stddev":0,"min":1082,"p10":1082,"p90":1082,"p99":1082,"max":1082},"domInteractiveTime":{"median":1081,"mean":1081,"mdev":0,"stddev":0,"min":1081,"p10":1081,"p90":1081,"p99":1081,"max":1081},"domainLookupTime":{"median":174,"mean":174,"mdev":0,"stddev":0,"min":174,"p10":174,"p90":174,"p99":174,"max":174},"frontEndTime":{"median":1334,"mean":1334,"mdev":0,"stddev":0,"min":1334,"p10":1334,"p90":1334,"p99":1334,"max":1334},"pageDownloadTime":{"median":0,"mean":0,"mdev":0,"stddev":0,"min":0,"p10":0,"p90":0,"p99":0,"max":0},"pageLoadTime":{"median":2079,"mean":2079,"mdev":0,"stddev":0,"min":2079,"p10":2079,"p90":2079,"p99":2079,"max":2079},"redirectionTime":{"median":0,"mean":0,"mdev":0,"stddev":0,"min":0,"p10":0,"p90":0,"p99":0,"max":0},"serverConnectionTime":{"median":515,"mean":515,"mdev":0,"stddev":0,"min":515,"p10":515,"p90":515,"p99":515,"max":515},"serverResponseTime":{"median":52,"mean":52,"mdev":0,"stddev":0,"min":52,"p10":52,"p90":52,"p99":52,"max":52}},"rumSpeedIndex":{"median":1224,"mean":1224,"mdev":0,"stddev":0,"min":1224,"p10":1224,"p90":1224,"p99":1224,"max":1224},"timeToContentfulPaint":{"median":1009,"mean":1009,"mdev":0,"stddev":0,"min":1009,"p10":1009,"p90":1009,"p99":1009,"max":1009},"timeToDomContentFlushed":{"median":1084,"mean":1084,"mdev":0,"stddev":0,"min":1084,"p10":1084,"p90":1084,"p99":1084,"max":1084},"timeToFirstInteractive":{"median":1082,"mean":1082,"mdev":0,"stddev":0,"min":1082,"p10":1082,"p90":1082,"p99":1082,"max":1082}}}}]
\ No newline at end of file diff --git a/python/mozperftest/mozperftest/tests/data/failing-samples/perftest_doc_failure_example.js b/python/mozperftest/mozperftest/tests/data/failing-samples/perftest_doc_failure_example.js new file mode 100644 index 0000000000..6cc40d87db --- /dev/null +++ b/python/mozperftest/mozperftest/tests/data/failing-samples/perftest_doc_failure_example.js @@ -0,0 +1,40 @@ +// This Source Code Form is subject to the terms of the Mozilla Public +// License, v. 2.0. If a copy of the MPL was not distributed with this +// file, You can obtain one at http://mozilla.org/MPL/2.0/. +/* eslint-env node */ +"use strict"; + +var someVar; + +async function setUp(context) { + context.log.info("setUp example!"); +} + +async function test(context, commands) { + context.log.info("Test with setUp/tearDown example!"); + await commands.measure.start("https://www.sitespeed.io/"); + await commands.measure.start("https://www.mozilla.org/en-US/"); +} + +async function tearDown(context) { + context.log.info("tearDown example!"); +} + + +module.exports = { + setUp, + tearDown, + test, + owner: "Performance Testing Team", + badName: "Example", + description: "The description of the example test.", + longDescription: ` + This is a longer description of the test perhaps including information + about how it should be run locally or links to relevant information. + `, + usage: ` + ./mach perftest python/mozperftest/mozperftest/tests/data/samples/perftest_example.js + `, + supportedBrowsers: ["Fenix nightly", "Geckoview_example", "Fennec", "Firefox"], + supportedPlatforms: ["Android", "Desktop"], +}; diff --git a/python/mozperftest/mozperftest/tests/data/firefox.dmg b/python/mozperftest/mozperftest/tests/data/firefox.dmg Binary files differnew file mode 100644 index 0000000000..f151b96871 --- /dev/null +++ b/python/mozperftest/mozperftest/tests/data/firefox.dmg diff --git a/python/mozperftest/mozperftest/tests/data/home_activity.txt b/python/mozperftest/mozperftest/tests/data/home_activity.txt new file mode 100644 index 0000000000..dae9cf996f --- /dev/null +++ b/python/mozperftest/mozperftest/tests/data/home_activity.txt @@ -0,0 +1,2806 @@ +--------- beginning of main +05-26 11:45:04.454 1876 2204 I GnssLocationProvider: WakeLock acquired by sendMessage(REPORT_SV_STATUS, 0, com.android.server.location.GnssLocationProvider$SvStatusInfo@84a3577) +05-26 11:45:04.456 1876 1890 I GnssLocationProvider: WakeLock released by handleMessage(REPORT_SV_STATUS, 0, com.android.server.location.GnssLocationProvider$SvStatusInfo@84a3577) +05-26 11:45:05.454 1876 2204 I GnssLocationProvider: WakeLock acquired by sendMessage(REPORT_SV_STATUS, 0, com.android.server.location.GnssLocationProvider$SvStatusInfo@4ed35e4) +05-26 11:45:05.455 1876 1890 I GnssLocationProvider: WakeLock released by handleMessage(REPORT_SV_STATUS, 0, com.android.server.location.GnssLocationProvider$SvStatusInfo@4ed35e4) +05-26 11:45:06.456 1876 2204 I GnssLocationProvider: WakeLock acquired by sendMessage(REPORT_SV_STATUS, 0, com.android.server.location.GnssLocationProvider$SvStatusInfo@1c39a4d) +05-26 11:45:06.457 1876 1890 I GnssLocationProvider: WakeLock released by handleMessage(REPORT_SV_STATUS, 0, com.android.server.location.GnssLocationProvider$SvStatusInfo@1c39a4d) +05-26 11:45:07.462 1876 2204 I GnssLocationProvider: WakeLock acquired by sendMessage(REPORT_SV_STATUS, 0, com.android.server.location.GnssLocationProvider$SvStatusInfo@dda5902) +05-26 11:45:07.463 1876 1890 I GnssLocationProvider: WakeLock released by handleMessage(REPORT_SV_STATUS, 0, com.android.server.location.GnssLocationProvider$SvStatusInfo@dda5902) +05-26 11:45:08.468 1876 2204 I GnssLocationProvider: WakeLock acquired by sendMessage(REPORT_SV_STATUS, 0, com.android.server.location.GnssLocationProvider$SvStatusInfo@6a2b213) +05-26 11:45:08.469 1876 1890 I GnssLocationProvider: WakeLock released by handleMessage(REPORT_SV_STATUS, 0, com.android.server.location.GnssLocationProvider$SvStatusInfo@6a2b213) +05-26 11:45:08.474 2482 7043 W ctxmgr : [AclManager]No 2 for (accnt=account#-517948760#, com.google.android.gms(10008):IndoorOutdoorProducer, vrsn=13280000, 0, 3pPkg = null , 3pMdlId = null , pid = 2482). Was: 3 for 57, account#-517948760# +05-26 11:45:09.469 1876 2204 I GnssLocationProvider: WakeLock acquired by sendMessage(REPORT_SV_STATUS, 0, com.android.server.location.GnssLocationProvider$SvStatusInfo@339cc50) +05-26 11:45:09.470 1876 1890 I GnssLocationProvider: WakeLock released by handleMessage(REPORT_SV_STATUS, 0, com.android.server.location.GnssLocationProvider$SvStatusInfo@339cc50) +05-26 11:45:10.472 1876 2204 I GnssLocationProvider: WakeLock acquired by sendMessage(REPORT_SV_STATUS, 0, com.android.server.location.GnssLocationProvider$SvStatusInfo@1bc8e49) +05-26 11:45:10.473 1876 1890 I GnssLocationProvider: WakeLock released by handleMessage(REPORT_SV_STATUS, 0, com.android.server.location.GnssLocationProvider$SvStatusInfo@1bc8e49) +05-26 11:45:11.478 1876 2204 I GnssLocationProvider: WakeLock acquired by sendMessage(REPORT_SV_STATUS, 0, com.android.server.location.GnssLocationProvider$SvStatusInfo@619034e) +05-26 11:45:11.479 1876 1890 I GnssLocationProvider: WakeLock released by handleMessage(REPORT_SV_STATUS, 0, com.android.server.location.GnssLocationProvider$SvStatusInfo@619034e) +05-26 11:45:12.480 1876 2204 I GnssLocationProvider: WakeLock acquired by sendMessage(REPORT_SV_STATUS, 0, com.android.server.location.GnssLocationProvider$SvStatusInfo@3fc5c6f) +05-26 11:45:12.481 1876 1890 I GnssLocationProvider: WakeLock released by handleMessage(REPORT_SV_STATUS, 0, com.android.server.location.GnssLocationProvider$SvStatusInfo@3fc5c6f) +05-26 11:45:13.483 1876 2204 I GnssLocationProvider: WakeLock acquired by sendMessage(REPORT_SV_STATUS, 0, com.android.server.location.GnssLocationProvider$SvStatusInfo@236c605) +05-26 11:45:13.485 1876 1890 I GnssLocationProvider: WakeLock released by handleMessage(REPORT_SV_STATUS, 0, com.android.server.location.GnssLocationProvider$SvStatusInfo@236c605) +05-26 11:45:13.490 2482 7043 W ctxmgr : [AclManager]No 2 for (accnt=account#-517948760#, com.google.android.gms(10008):IndoorOutdoorProducer, vrsn=13280000, 0, 3pPkg = null , 3pMdlId = null , pid = 2482). Was: 3 for 57, account#-517948760# +05-26 11:45:14.486 1876 2204 I GnssLocationProvider: WakeLock acquired by sendMessage(REPORT_SV_STATUS, 0, com.android.server.location.GnssLocationProvider$SvStatusInfo@262bd81) +05-26 11:45:14.488 1876 1890 I GnssLocationProvider: WakeLock released by handleMessage(REPORT_SV_STATUS, 0, com.android.server.location.GnssLocationProvider$SvStatusInfo@262bd81) +05-26 11:45:15.489 1876 2204 I GnssLocationProvider: WakeLock acquired by sendMessage(REPORT_SV_STATUS, 0, com.android.server.location.GnssLocationProvider$SvStatusInfo@c8e2e26) +05-26 11:45:15.491 1876 1890 I GnssLocationProvider: WakeLock released by handleMessage(REPORT_SV_STATUS, 0, com.android.server.location.GnssLocationProvider$SvStatusInfo@c8e2e26) +--------- beginning of system +05-26 11:45:13.176 1876 1895 E BatteryExternalStatsWorker: no controller energy info supplied for wifi +05-26 11:45:15.554 1746 1771 E storaged: getDiskStats failed with result NOT_SUPPORTED and size 0 +05-26 11:45:16.489 1876 2204 I GnssLocationProvider: WakeLock acquired by sendMessage(REPORT_SV_STATUS, 0, com.android.server.location.GnssLocationProvider$SvStatusInfo@1fd6a67) +05-26 11:45:16.491 1876 1890 I GnssLocationProvider: WakeLock released by handleMessage(REPORT_SV_STATUS, 0, com.android.server.location.GnssLocationProvider$SvStatusInfo@1fd6a67) +05-26 11:45:17.489 1876 2204 I GnssLocationProvider: WakeLock acquired by sendMessage(REPORT_SV_STATUS, 0, com.android.server.location.GnssLocationProvider$SvStatusInfo@1fbe014) +05-26 11:45:17.491 1876 1890 I GnssLocationProvider: WakeLock released by handleMessage(REPORT_SV_STATUS, 0, com.android.server.location.GnssLocationProvider$SvStatusInfo@1fbe014) +05-26 11:45:18.489 1876 2204 I GnssLocationProvider: WakeLock acquired by sendMessage(REPORT_SV_STATUS, 0, com.android.server.location.GnssLocationProvider$SvStatusInfo@9fcb0bd) +05-26 11:45:18.491 1876 1890 I GnssLocationProvider: WakeLock released by handleMessage(REPORT_SV_STATUS, 0, com.android.server.location.GnssLocationProvider$SvStatusInfo@9fcb0bd) +05-26 11:45:18.499 2482 7043 W ctxmgr : [AclManager]No 2 for (accnt=account#-517948760#, com.google.android.gms(10008):IndoorOutdoorProducer, vrsn=13280000, 0, 3pPkg = null , 3pMdlId = null , pid = 2482). Was: 3 for 57, account#-517948760# +05-26 11:45:19.491 1876 2204 I GnssLocationProvider: WakeLock acquired by sendMessage(REPORT_SV_STATUS, 0, com.android.server.location.GnssLocationProvider$SvStatusInfo@d9f06b2) +05-26 11:45:19.492 1876 1890 I GnssLocationProvider: WakeLock released by handleMessage(REPORT_SV_STATUS, 0, com.android.server.location.GnssLocationProvider$SvStatusInfo@d9f06b2) +05-26 11:45:20.491 1876 2204 I GnssLocationProvider: WakeLock acquired by sendMessage(REPORT_SV_STATUS, 0, com.android.server.location.GnssLocationProvider$SvStatusInfo@6c4603) +05-26 11:45:20.492 1876 1890 I GnssLocationProvider: WakeLock released by handleMessage(REPORT_SV_STATUS, 0, com.android.server.location.GnssLocationProvider$SvStatusInfo@6c4603) +05-26 11:45:21.491 1876 2204 I GnssLocationProvider: WakeLock acquired by sendMessage(REPORT_SV_STATUS, 0, com.android.server.location.GnssLocationProvider$SvStatusInfo@4c0e980) +05-26 11:45:21.492 1876 1890 I GnssLocationProvider: WakeLock released by handleMessage(REPORT_SV_STATUS, 0, com.android.server.location.GnssLocationProvider$SvStatusInfo@4c0e980) +05-26 11:45:22.496 1876 2204 I GnssLocationProvider: WakeLock acquired by sendMessage(REPORT_SV_STATUS, 0, com.android.server.location.GnssLocationProvider$SvStatusInfo@6489bb9) +05-26 11:45:22.497 1876 1890 I GnssLocationProvider: WakeLock released by handleMessage(REPORT_SV_STATUS, 0, com.android.server.location.GnssLocationProvider$SvStatusInfo@6489bb9) +05-26 11:45:22.666 1666 1666 I lla.fenix.debu: Not late-enabling -Xcheck:jni (already on) +05-26 11:45:22.668 1876 1893 I ActivityManager: Start proc 1666:org.mozilla.fenix.debug/u0a91 for service org.mozilla.fenix.debug/androidx.work.impl.background.systemjob.SystemJobService +05-26 11:45:22.693 1666 1666 W lla.fenix.debu: Unexpected CPU variant for X86 using defaults: x86 +05-26 11:45:22.742 1666 1666 I lla.fenix.debu: The ClassLoaderContext is a special shared library. +05-26 11:45:23.348 1666 1666 D FirebaseApp: Default FirebaseApp failed to initialize because no default options were found. This usually means that com.google.gms:google-services was not applied to your gradle project. +05-26 11:45:23.348 1666 1666 I FirebaseInitProvider: FirebaseApp initialization unsuccessful +05-26 11:45:23.498 1876 2204 I GnssLocationProvider: WakeLock acquired by sendMessage(REPORT_SV_STATUS, 0, com.android.server.location.GnssLocationProvider$SvStatusInfo@1d508f1) +05-26 11:45:23.499 1876 1890 I GnssLocationProvider: WakeLock released by handleMessage(REPORT_SV_STATUS, 0, com.android.server.location.GnssLocationProvider$SvStatusInfo@1d508f1) +05-26 11:45:23.510 2482 7043 W ctxmgr : [AclManager]No 2 for (accnt=account#-517948760#, com.google.android.gms(10008):IndoorOutdoorProducer, vrsn=13280000, 0, 3pPkg = null , 3pMdlId = null , pid = 2482). Was: 3 for 57, account#-517948760# +05-26 11:45:23.566 1666 1666 D FenixApplication: Initializing Glean (uploadEnabled=true, isFennec=false) +05-26 11:45:23.622 1666 1769 D RustNativeSupport: findMegazordLibraryName(viaduct, 0.59.0 +05-26 11:45:23.622 1666 1769 D RustNativeSupport: lib in use: none +05-26 11:45:23.622 1666 1769 D RustNativeSupport: lib configured: megazord +05-26 11:45:23.622 1666 1769 D RustNativeSupport: lib version configured: 0.59.0 +05-26 11:45:23.622 1666 1769 D RustNativeSupport: settled on megazord +05-26 11:45:23.730 1666 1766 D libglean_ffi: glean_ffi: Android logging should be hooked up! +05-26 11:45:23.738 1666 1766 I glean/Glean: Registering pings for mozilla.telemetry.glean.GleanMetrics.Pings +05-26 11:45:23.743 1666 1766 I libglean_ffi: glean_core: Creating new Glean +05-26 11:45:23.743 1666 1766 D libglean_ffi: glean_core::database: Database path: "/data/user/0/org.mozilla.fenix.debug/glean_data/db" +05-26 11:45:23.743 1666 1766 I libglean_ffi: glean_core::database: Database initialized +05-26 11:45:23.753 1666 1766 I libglean_ffi: glean_ffi: Glean initialized +05-26 11:45:23.758 1666 1769 D RustNativeSupport: findMegazordLibraryName(rustlog, 0.59.0 +05-26 11:45:23.758 1666 1769 D RustNativeSupport: lib in use: none +05-26 11:45:23.758 1666 1769 D RustNativeSupport: lib configured: megazord +05-26 11:45:23.758 1666 1769 D RustNativeSupport: lib version configured: 0.59.0 +05-26 11:45:23.758 1666 1769 D RustNativeSupport: settled on megazord +05-26 11:45:23.760 1666 1769 I rc_log_ffi::ios: rc_log adapter initialized! +05-26 11:45:23.777 1666 1766 D glean/MetricsPingSched: The 'metrics' ping was last sent on Tue May 26 00:00:00 EDT 2020 +05-26 11:45:23.777 1666 1766 I glean/MetricsPingSched: The 'metrics' ping was already sent today, Tue May 26 11:45:23 EDT 2020. +05-26 11:45:23.778 1666 1766 D glean/MetricsPingSched: Scheduling the 'metrics' ping in 58476240ms +05-26 11:45:23.779 1666 1766 D libglean_ffi: glean_core: Clearing Lifetime::Application metrics +05-26 11:45:23.788 11979 12094 I SessionStorage/AutoSave: Save: Periodic +05-26 11:45:23.791 11979 12084 D SessionStorage/AutoSave: Saved state to disk [1ms] +05-26 11:45:23.829 1666 1666 I GeckoRuntime: Adding debug configuration from: /data/local/tmp/org.mozilla.fenix.debug-geckoview-config.yaml +05-26 11:45:23.829 1666 1666 D GeckoDebugConfig: Adding environment variables from debug config: {MOZ_CRASHREPORTER=1, MOZ_CRASHREPORTER_NO_REPORT=1, MOZ_CRASHREPORTER_SHUTDOWN=1} +05-26 11:45:23.830 1666 1666 D GeckoDebugConfig: Adding arguments from debug config: [-marionette, -profile, /mnt/sdcard/org.mozilla.fenix.debug-geckodriver-profile] +05-26 11:45:23.832 1666 1666 D GeckoThread: State changed to LAUNCHED +05-26 11:45:23.832 1666 1791 I GeckoThread: preparing to run Gecko +05-26 11:45:23.833 1666 1791 D GeckoThread: env var: MOZ_CRASHREPORTER=1 +05-26 11:45:23.833 1666 1791 D GeckoThread: env var: MOZ_CRASHREPORTER_NO_REPORT=1 +05-26 11:45:23.833 1666 1791 D GeckoThread: env var: MOZ_CRASHREPORTER_SHUTDOWN=1 +05-26 11:45:23.861 1666 1666 D GeckoRuntime: Lifecycle: onCreate +05-26 11:45:23.878 1666 1791 D GeckoThread: State changed to MOZGLUE_READY +05-26 11:45:23.889 1666 1791 W Settings: Setting animator_duration_scale has moved from android.provider.Settings.System to android.provider.Settings.Global, returning read-only global URI. +05-26 11:45:23.892 1666 1791 E GeckoLibLoad: Load sqlite start +05-26 11:45:23.906 1666 1791 E GeckoLibLoad: Load sqlite done +05-26 11:45:23.906 1666 1791 E GeckoLibLoad: Load nss start +05-26 11:45:23.906 1666 1791 E GeckoLibLoad: Load nss done +05-26 11:45:23.963 1666 1791 E GeckoLibLoad: Loaded libs in 56.743000ms total, 10ms(80ms) user, 40ms(40ms) system, 0(0) faults +05-26 11:45:23.963 1666 1791 D GeckoThread: State changed to LIBS_READY +05-26 11:45:23.971 1666 1791 W GeckoThread: zerdatime 190844167 - runGecko +05-26 11:45:23.977 1666 1791 D GeckoProfile: Loading profile at: null name: default +05-26 11:45:23.978 1666 1791 D GeckoProfile: Found profile dir: /data/user/0/org.mozilla.fenix.debug/files/mozilla/u71tud99.default +05-26 11:45:24.000 1666 1791 I Gecko:DumpUtils: Fifo watcher disabled via pref. +05-26 11:45:24.025 1666 1791 D GeckoSysInfo: System memory: 1494MB. +05-26 11:45:24.025 1666 1791 W lla.fenix.debu: Accessing hidden method Landroid/os/MessageQueue;->next()Landroid/os/Message; (light greylist, JNI) +05-26 11:45:24.026 1666 1791 D StrictMode: StrictMode policy violation: android.os.strictmode.NonSdkApiUsedViolation: Landroid/os/MessageQueue;->next()Landroid/os/Message; +05-26 11:45:24.026 1666 1791 D StrictMode: at android.os.StrictMode.lambda$static$1(StrictMode.java:428) +05-26 11:45:24.026 1666 1791 D StrictMode: at android.os.-$$Lambda$StrictMode$lu9ekkHJ2HMz0jd3F8K8MnhenxQ.accept(Unknown Source:2) +05-26 11:45:24.026 1666 1791 D StrictMode: at org.mozilla.gecko.mozglue.GeckoLoader.nativeRun(Native Method) +05-26 11:45:24.026 1666 1791 D StrictMode: at org.mozilla.gecko.GeckoThread.run(GeckoThread.java:449) +05-26 11:45:24.026 1666 1791 W lla.fenix.debu: Accessing hidden field Landroid/os/MessageQueue;->mMessages:Landroid/os/Message; (light greylist, JNI) +05-26 11:45:24.026 1666 1791 D StrictMode: StrictMode policy violation: android.os.strictmode.NonSdkApiUsedViolation: Landroid/os/MessageQueue;->mMessages:Landroid/os/Message; +05-26 11:45:24.026 1666 1791 D StrictMode: at android.os.StrictMode.lambda$static$1(StrictMode.java:428) +05-26 11:45:24.026 1666 1791 D StrictMode: at android.os.-$$Lambda$StrictMode$lu9ekkHJ2HMz0jd3F8K8MnhenxQ.accept(Unknown Source:2) +05-26 11:45:24.026 1666 1791 D StrictMode: at org.mozilla.gecko.mozglue.GeckoLoader.nativeRun(Native Method) +05-26 11:45:24.026 1666 1791 D StrictMode: at org.mozilla.gecko.GeckoThread.run(GeckoThread.java:449) +05-26 11:45:24.029 1666 1791 W lla.fenix.debu: Accessing hidden field Ljava/lang/Boolean;->value:Z (light greylist, JNI) +05-26 11:45:24.030 1666 1791 D StrictMode: StrictMode policy violation: android.os.strictmode.NonSdkApiUsedViolation: Ljava/lang/Boolean;->value:Z +05-26 11:45:24.030 1666 1791 D StrictMode: at android.os.StrictMode.lambda$static$1(StrictMode.java:428) +05-26 11:45:24.030 1666 1791 D StrictMode: at android.os.-$$Lambda$StrictMode$lu9ekkHJ2HMz0jd3F8K8MnhenxQ.accept(Unknown Source:2) +05-26 11:45:24.030 1666 1791 D StrictMode: at org.mozilla.gecko.mozglue.GeckoLoader.nativeRun(Native Method) +05-26 11:45:24.030 1666 1791 D StrictMode: at org.mozilla.gecko.GeckoThread.run(GeckoThread.java:449) +05-26 11:45:24.030 1666 1791 W lla.fenix.debu: Accessing hidden field Ljava/lang/Integer;->value:I (light greylist, JNI) +05-26 11:45:24.031 1666 1791 D StrictMode: StrictMode policy violation: android.os.strictmode.NonSdkApiUsedViolation: Ljava/lang/Integer;->value:I +05-26 11:45:24.031 1666 1791 D StrictMode: at android.os.StrictMode.lambda$static$1(StrictMode.java:428) +05-26 11:45:24.031 1666 1791 D StrictMode: at android.os.-$$Lambda$StrictMode$lu9ekkHJ2HMz0jd3F8K8MnhenxQ.accept(Unknown Source:2) +05-26 11:45:24.031 1666 1791 D StrictMode: at org.mozilla.gecko.mozglue.GeckoLoader.nativeRun(Native Method) +05-26 11:45:24.031 1666 1791 D StrictMode: at org.mozilla.gecko.GeckoThread.run(GeckoThread.java:449) +05-26 11:45:24.032 1666 1791 W lla.fenix.debu: Accessing hidden field Ljava/lang/Double;->value:D (light greylist, JNI) +05-26 11:45:24.039 1666 1791 D StrictMode: StrictMode policy violation: android.os.strictmode.NonSdkApiUsedViolation: Ljava/lang/Double;->value:D +05-26 11:45:24.039 1666 1791 D StrictMode: at android.os.StrictMode.lambda$static$1(StrictMode.java:428) +05-26 11:45:24.039 1666 1791 D StrictMode: at android.os.-$$Lambda$StrictMode$lu9ekkHJ2HMz0jd3F8K8MnhenxQ.accept(Unknown Source:2) +05-26 11:45:24.039 1666 1791 D StrictMode: at org.mozilla.gecko.mozglue.GeckoLoader.nativeRun(Native Method) +05-26 11:45:24.039 1666 1791 D StrictMode: at org.mozilla.gecko.GeckoThread.run(GeckoThread.java:449) +05-26 11:45:24.040 1666 1791 D GeckoThread: State changed to JNI_READY +05-26 11:45:24.074 1666 1821 D ServiceAllocator: org.mozilla.gecko.process.GeckoChildProcessServices$tab0 updateBindings: BACKGROUND priority, 0 importance, 2 successful binds, 0 failed binds, 0 successful unbinds, 0 failed unbinds +05-26 11:45:24.085 1831 1831 I enix.debug:tab: Not late-enabling -Xcheck:jni (already on) +05-26 11:45:24.096 1876 1893 I ActivityManager: Start proc 1831:org.mozilla.fenix.debug:tab0/u0a91 for service org.mozilla.fenix.debug/org.mozilla.gecko.process.GeckoChildProcessServices$tab0 +05-26 11:45:24.106 1666 1666 D LeakCanary: Updated AppWatcher.config: Config(no changes) +05-26 11:45:24.119 1831 1831 W enix.debug:tab: Unexpected CPU variant for X86 using defaults: x86 +05-26 11:45:24.175 1831 1831 I enix.debug:tab: The ClassLoaderContext is a special shared library. +05-26 11:45:24.202 1666 1666 D LeakCanary: Updated LeakCanary.config: Config(no changes) +05-26 11:45:24.213 1666 1666 D App : DebugMetricController: start +05-26 11:45:24.213 1666 1666 D App : DebugMetricController: start +05-26 11:45:24.216 1666 1666 W PushConfig: No firebase configuration found; cannot support push service. +05-26 11:45:24.226 1666 1791 D GeckoViewStartup: observe: app-startup +05-26 11:45:24.240 1666 1791 D GeckoViewConsole: enabled = true +05-26 11:45:24.284 1666 1666 D StrictMode: StrictMode policy violation; ~duration=489 ms: android.os.strictmode.DiskReadViolation +05-26 11:45:24.284 1666 1666 D StrictMode: at android.os.StrictMode$AndroidBlockGuardPolicy.onReadFromDisk(StrictMode.java:1504) +05-26 11:45:24.284 1666 1666 D StrictMode: at java.io.FileInputStream.<init>(FileInputStream.java:163) +05-26 11:45:24.284 1666 1666 D StrictMode: at org.mozilla.gecko.util.DebugConfig.fromFile(DebugConfig.java:49) +05-26 11:45:24.284 1666 1666 D StrictMode: at org.mozilla.geckoview.GeckoRuntime.init(GeckoRuntime.java:363) +05-26 11:45:24.284 1666 1666 D StrictMode: at org.mozilla.geckoview.GeckoRuntime.create(GeckoRuntime.java:574) +05-26 11:45:24.284 1666 1666 D StrictMode: at GeckoProvider.createRuntime(GeckoProvider.kt:58) +05-26 11:45:24.284 1666 1666 D StrictMode: at GeckoProvider.getOrCreateRuntime(GeckoProvider.kt:28) +05-26 11:45:24.284 1666 1666 D StrictMode: at org.mozilla.fenix.components.Core$engine$2.invoke(Core.kt:79) +05-26 11:45:24.284 1666 1666 D StrictMode: at org.mozilla.fenix.components.Core$engine$2.invoke(Core.kt:57) +05-26 11:45:24.284 1666 1666 D StrictMode: at kotlin.SynchronizedLazyImpl.getValue(LazyJVM.kt:74) +05-26 11:45:24.284 1666 1666 D StrictMode: at org.mozilla.fenix.components.Core.getEngine(Unknown Source:7) +05-26 11:45:24.284 1666 1666 D StrictMode: at org.mozilla.fenix.FenixApplication.setupInMainProcessOnly(FenixApplication.kt:128) +05-26 11:45:24.284 1666 1666 D StrictMode: at org.mozilla.fenix.FenixApplication.onCreate(FenixApplication.kt:90) +05-26 11:45:24.284 1666 1666 D StrictMode: at android.app.Instrumentation.callApplicationOnCreate(Instrumentation.java:1154) +05-26 11:45:24.284 1666 1666 D StrictMode: at android.app.ActivityThread.handleBindApplication(ActivityThread.java:5871) +05-26 11:45:24.284 1666 1666 D StrictMode: at android.app.ActivityThread.access$1100(ActivityThread.java:199) +05-26 11:45:24.284 1666 1666 D StrictMode: at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1650) +05-26 11:45:24.284 1666 1666 D StrictMode: at android.os.Handler.dispatchMessage(Handler.java:106) +05-26 11:45:24.284 1666 1666 D StrictMode: at android.os.Looper.loop(Looper.java:193) +05-26 11:45:24.284 1666 1666 D StrictMode: at android.app.ActivityThread.main(ActivityThread.java:6669) +05-26 11:45:24.284 1666 1666 D StrictMode: at java.lang.reflect.Method.invoke(Native Method) +05-26 11:45:24.284 1666 1666 D StrictMode: at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:493) +05-26 11:45:24.284 1666 1666 D StrictMode: at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:858) +05-26 11:45:24.296 1666 1666 D StrictMode: StrictMode policy violation; ~duration=473 ms: android.os.strictmode.DiskReadViolation +05-26 11:45:24.296 1666 1666 D StrictMode: at android.os.StrictMode$AndroidBlockGuardPolicy.onReadFromDisk(StrictMode.java:1504) +05-26 11:45:24.296 1666 1666 D StrictMode: at libcore.io.BlockGuardOs.read(BlockGuardOs.java:253) +05-26 11:45:24.296 1666 1666 D StrictMode: at libcore.io.IoBridge.read(IoBridge.java:501) +05-26 11:45:24.296 1666 1666 D StrictMode: at java.io.FileInputStream.read(FileInputStream.java:307) +05-26 11:45:24.296 1666 1666 D StrictMode: at java.io.FilterInputStream.read(FilterInputStream.java:133) +05-26 11:45:24.296 1666 1666 D StrictMode: at java.io.PushbackInputStream.read(PushbackInputStream.java:186) +05-26 11:45:24.296 1666 1666 D StrictMode: at org.yaml.snakeyaml.reader.UnicodeReader.init(UnicodeReader.java:92) +05-26 11:45:24.296 1666 1666 D StrictMode: at org.yaml.snakeyaml.reader.UnicodeReader.read(UnicodeReader.java:124) +05-26 11:45:24.296 1666 1666 D StrictMode: at org.yaml.snakeyaml.reader.StreamReader.update(StreamReader.java:183) +05-26 11:45:24.296 1666 1666 D StrictMode: at org.yaml.snakeyaml.reader.StreamReader.ensureEnoughData(StreamReader.java:176) +05-26 11:45:24.296 1666 1666 D StrictMode: at org.yaml.snakeyaml.reader.StreamReader.ensureEnoughData(StreamReader.java:171) +05-26 11:45:24.296 1666 1666 D StrictMode: at org.yaml.snakeyaml.reader.StreamReader.peek(StreamReader.java:126) +05-26 11:45:24.296 1666 1666 D StrictMode: at org.yaml.snakeyaml.scanner.ScannerImpl.scanToNextToken(ScannerImpl.java:1177) +05-26 11:45:24.296 1666 1666 D StrictMode: at org.yaml.snakeyaml.scanner.ScannerImpl.fetchMoreTokens(ScannerImpl.java:287) +05-26 11:45:24.296 1666 1666 D StrictMode: at org.yaml.snakeyaml.scanner.ScannerImpl.checkToken(ScannerImpl.java:227) +05-26 11:45:24.296 1666 1666 D StrictMode: at org.yaml.snakeyaml.parser.ParserImpl$ParseImplicitDocumentStart.produce(ParserImpl.java:195) +05-26 11:45:24.296 1666 1666 D StrictMode: at org.yaml.snakeyaml.parser.ParserImpl.peekEvent(ParserImpl.java:158) +05-26 11:45:24.296 1666 1666 D StrictMode: at org.yaml.snakeyaml.parser.ParserImpl.checkEvent(ParserImpl.java:148) +05-26 11:45:24.296 1666 1666 D StrictMode: at org.yaml.snakeyaml.composer.Composer.getSingleNode(Composer.java:107) +05-26 11:45:24.296 1666 1666 D StrictMode: at org.yaml.snakeyaml.constructor.BaseConstructor.getSingleData(BaseConstructor.java:141) +05-26 11:45:24.296 1666 1666 D StrictMode: at org.yaml.snakeyaml.Yaml.loadFromReader(Yaml.java:525) +05-26 11:45:24.296 1666 1666 D StrictMode: at org.yaml.snakeyaml.Yaml.load(Yaml.java:453) +05-26 11:45:24.296 1666 1666 D StrictMode: at org.mozilla.gecko.util.DebugConfig.fromFile(DebugConfig.java:51) +05-26 11:45:24.296 1666 1666 D StrictMode: at org.mozilla.geckoview.GeckoRuntime.init(GeckoRuntime.java:363) +05-26 11:45:24.296 1666 1666 D StrictMode: at org.mozilla.geckoview.GeckoRuntime.create(GeckoRuntime.java:574) +05-26 11:45:24.296 1666 1666 D StrictMode: at GeckoProvider.createRuntime(GeckoProvider.kt:58) +05-26 11:45:24.296 1666 1666 D StrictMode: at GeckoProvider.getOrCreateRuntime(GeckoProvider.kt:28) +05-26 11:45:24.296 1666 1666 D StrictMode: at org.mozilla.fenix.components.Core$engine$2.invoke(Core.kt:79) +05-26 11:45:24.296 1666 1666 D StrictMode: at org.mozilla.fenix.components.Core$engine$2.invoke(Core.kt:57) +05-26 11:45:24.296 1666 1666 D StrictMode: at kotlin.SynchronizedLazyImpl.getValue(LazyJVM.kt:74) +05-26 11:45:24.296 1666 1666 D StrictMode: at org.mozilla.fenix.components.Core.getEngine(Unknown Source:7) +05-26 11:45:24.296 1666 1666 D StrictMode: at org.mozilla.fenix.FenixApplication.setupInMainProcessOnly(FenixApplication.kt:128) +05-26 11:45:24.296 1666 1666 D StrictMode: at org.mozilla.fenix.FenixApplication.onCreate(FenixApplication.kt:90) +05-26 11:45:24.296 1666 1666 D StrictMode: at android.app.Instrumentation.callApplicationOnCreate(Instrumentation.java:1154) +05-26 11:45:24.296 1666 1666 D StrictMode: at android.app.ActivityThread.handleBindApplication(ActivityThread.java:5871) +05-26 11:45:24.296 1666 1666 D StrictMode: at android.app.ActivityThread.access$1100(ActivityThread.java:199) +05-26 11:45:24.296 1666 1666 D StrictMode: at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1650) +05-26 11:45:24.296 1666 1666 D StrictMode: at android.os.Handler.dispatchMessage(Handler.java:106) +05-26 11:45:24.296 1666 1666 D StrictMode: at android.os.Looper.loop(Looper.java:193) +05-26 11:45:24.296 1666 1666 D StrictMode: at android.app.ActivityThread.main(ActivityThread.java:6669) +05-26 11:45:24.296 1666 1666 D StrictMode: at java.lang.reflect.Method.invoke(Native Method) +05-26 11:45:24.296 1666 1666 D StrictMode: at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:493) +05-26 11:45:24.296 1666 1666 D StrictMode: at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:858) +05-26 11:45:24.301 1666 1666 D StrictMode: StrictMode policy violation; ~duration=473 ms: android.os.strictmode.DiskReadViolation +05-26 11:45:24.301 1666 1666 D StrictMode: at android.os.StrictMode$AndroidBlockGuardPolicy.onReadFromDisk(StrictMode.java:1504) +05-26 11:45:24.301 1666 1666 D StrictMode: at libcore.io.BlockGuardOs.read(BlockGuardOs.java:253) +05-26 11:45:24.301 1666 1666 D StrictMode: at libcore.io.IoBridge.read(IoBridge.java:501) +05-26 11:45:24.301 1666 1666 D StrictMode: at java.io.FileInputStream.read(FileInputStream.java:307) +05-26 11:45:24.301 1666 1666 D StrictMode: at java.io.FilterInputStream.read(FilterInputStream.java:133) +05-26 11:45:24.301 1666 1666 D StrictMode: at java.io.PushbackInputStream.read(PushbackInputStream.java:186) +05-26 11:45:24.301 1666 1666 D StrictMode: at sun.nio.cs.StreamDecoder.readBytes(StreamDecoder.java:288) +05-26 11:45:24.301 1666 1666 D StrictMode: at sun.nio.cs.StreamDecoder.implRead(StreamDecoder.java:351) +05-26 11:45:24.301 1666 1666 D StrictMode: at sun.nio.cs.StreamDecoder.read(StreamDecoder.java:180) +05-26 11:45:24.301 1666 1666 D StrictMode: at java.io.InputStreamReader.read(InputStreamReader.java:184) +05-26 11:45:24.301 1666 1666 D StrictMode: at org.yaml.snakeyaml.reader.UnicodeReader.read(UnicodeReader.java:125) +05-26 11:45:24.301 1666 1666 D StrictMode: at org.yaml.snakeyaml.reader.StreamReader.update(StreamReader.java:183) +05-26 11:45:24.301 1666 1666 D StrictMode: at org.yaml.snakeyaml.reader.StreamReader.ensureEnoughData(StreamReader.java:176) +05-26 11:45:24.301 1666 1666 D StrictMode: at org.yaml.snakeyaml.reader.StreamReader.ensureEnoughData(StreamReader.java:171) +05-26 11:45:24.301 1666 1666 D StrictMode: at org.yaml.snakeyaml.reader.StreamReader.peek(StreamReader.java:126) +05-26 11:45:24.301 1666 1666 D StrictMode: at org.yaml.snakeyaml.scanner.ScannerImpl.scanToNextToken(ScannerImpl.java:1177) +05-26 11:45:24.301 1666 1666 D StrictMode: at org.yaml.snakeyaml.scanner.ScannerImpl.fetchMoreTokens(ScannerImpl.java:287) +05-26 11:45:24.301 1666 1666 D StrictMode: at org.yaml.snakeyaml.scanner.ScannerImpl.checkToken(ScannerImpl.java:227) +05-26 11:45:24.301 1666 1666 D StrictMode: at org.yaml.snakeyaml.parser.ParserImpl$ParseImplicitDocumentStart.produce(ParserImpl.java:195) +05-26 11:45:24.301 1666 1666 D StrictMode: at org.yaml.snakeyaml.parser.ParserImpl.peekEvent(ParserImpl.java:158) +05-26 11:45:24.301 1666 1666 D StrictMode: at org.yaml.snakeyaml.parser.ParserImpl.checkEvent(ParserImpl.java:148) +05-26 11:45:24.301 1666 1666 D StrictMode: at org.yaml.snakeyaml.composer.Composer.getSingleNode(Composer.java:107) +05-26 11:45:24.301 1666 1666 D StrictMode: at org.yaml.snakeyaml.constructor.BaseConstructor.getSingleData(BaseConstructor.java:141) +05-26 11:45:24.301 1666 1666 D StrictMode: at org.yaml.snakeyaml.Yaml.loadFromReader(Yaml.java:525) +05-26 11:45:24.301 1666 1666 D StrictMode: at org.yaml.snakeyaml.Yaml.load(Yaml.java:453) +05-26 11:45:24.301 1666 1666 D StrictMode: at org.mozilla.gecko.util.DebugConfig.fromFile(DebugConfig.java:51) +05-26 11:45:24.301 1666 1666 D StrictMode: at org.mozilla.geckoview.GeckoRuntime.init(GeckoRuntime.java:363) +05-26 11:45:24.301 1666 1666 D StrictMode: at org.mozilla.geckoview.GeckoRuntime.create(GeckoRuntime.java:574) +05-26 11:45:24.301 1666 1666 D StrictMode: at GeckoProvider.createRuntime(GeckoProvider.kt:58) +05-26 11:45:24.301 1666 1666 D StrictMode: at GeckoProvider.getOrCreateRuntime(GeckoProvider.kt:28) +05-26 11:45:24.301 1666 1666 D StrictMode: at org.mozilla.fenix.components.Core$engine$2.invoke(Core.kt:79) +05-26 11:45:24.301 1666 1666 D StrictMode: at org.mozilla.fenix.components.Core$engine$2.invoke(Core.kt:57) +05-26 11:45:24.301 1666 1666 D StrictMode: at kotlin.SynchronizedLazyImpl.getValue(LazyJVM.kt:74) +05-26 11:45:24.301 1666 1666 D StrictMode: at org.mozilla.fenix.components.Core.getEngine(Unknown Source:7) +05-26 11:45:24.301 1666 1666 D StrictMode: at org.mozilla.fenix.FenixApplication.setupInMainProcessOnly(FenixApplication.kt:128) +05-26 11:45:24.301 1666 1666 D StrictMode: at org.mozilla.fenix.FenixApplication.onCreate(FenixApplication.kt:90) +05-26 11:45:24.301 1666 1666 D StrictMode: at android.app.Instrumentation.callApplicationOnCreate(Instrumentation.java:1154) +05-26 11:45:24.301 1666 1666 D StrictMode: at android.app.ActivityThread.handleBindApplication(ActivityThread.java:5871) +05-26 11:45:24.301 1666 1666 D StrictMode: at android.app.ActivityThread.access$1100(ActivityThread.java:199) +05-26 11:45:24.301 1666 1666 D StrictMode: at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1650) +05-26 11:45:24.301 1666 1666 D StrictMode: at android.os.Handler.dispatchMessage(Handler.java:106) +05-26 11:45:24.301 1666 1666 D StrictMode: at android.os.Looper.loop(Looper.java:193) +05-26 11:45:24.301 1666 1666 D StrictMode: at android.app.ActivityThread.main(ActivityThread.java:6669) +05-26 11:45:24.301 1666 1666 D StrictMode: at java.lang.reflect.Method.invoke(Native Method) +05-26 11:45:24.301 1666 1666 D StrictMode: at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:493) +05-26 11:45:24.301 1666 1666 D StrictMode: at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:858) +05-26 11:45:24.308 1666 1666 D StrictMode: StrictMode policy violation; ~duration=456 ms: android.os.strictmode.DiskReadViolation +05-26 11:45:24.308 1666 1666 D StrictMode: at android.os.StrictMode$AndroidBlockGuardPolicy.onReadFromDisk(StrictMode.java:1504) +05-26 11:45:24.308 1666 1666 D StrictMode: at libcore.io.BlockGuardOs.read(BlockGuardOs.java:253) +05-26 11:45:24.308 1666 1666 D StrictMode: at libcore.io.IoBridge.read(IoBridge.java:501) +05-26 11:45:24.308 1666 1666 D StrictMode: at java.io.FileInputStream.read(FileInputStream.java:307) +05-26 11:45:24.308 1666 1666 D StrictMode: at java.io.FilterInputStream.read(FilterInputStream.java:133) +05-26 11:45:24.308 1666 1666 D StrictMode: at java.io.PushbackInputStream.read(PushbackInputStream.java:186) +05-26 11:45:24.308 1666 1666 D StrictMode: at sun.nio.cs.StreamDecoder.readBytes(StreamDecoder.java:288) +05-26 11:45:24.308 1666 1666 D StrictMode: at sun.nio.cs.StreamDecoder.implRead(StreamDecoder.java:351) +05-26 11:45:24.308 1666 1666 D StrictMode: at sun.nio.cs.StreamDecoder.read(StreamDecoder.java:180) +05-26 11:45:24.308 1666 1666 D StrictMode: at java.io.InputStreamReader.read(InputStreamReader.java:184) +05-26 11:45:24.308 1666 1666 D StrictMode: at org.yaml.snakeyaml.reader.UnicodeReader.read(UnicodeReader.java:125) +05-26 11:45:24.308 1666 1666 D StrictMode: at org.yaml.snakeyaml.reader.StreamReader.update(StreamReader.java:183) +05-26 11:45:24.308 1666 1666 D StrictMode: at org.yaml.snakeyaml.reader.StreamReader.ensureEnoughData(StreamReader.java:176) +05-26 11:45:24.308 1666 1666 D StrictMode: at org.yaml.snakeyaml.reader.StreamReader.peek(StreamReader.java:136) +05-26 11:45:24.308 1666 1666 D StrictMode: at org.yaml.snakeyaml.scanner.ScannerImpl.scanPlain(ScannerImpl.java:1999) +05-26 11:45:24.308 1666 1666 D StrictMode: at org.yaml.snakeyaml.scanner.ScannerImpl.fetchPlain(ScannerImpl.java:1044) +05-26 11:45:24.308 1666 1666 D StrictMode: at org.yaml.snakeyaml.scanner.ScannerImpl.fetchMoreTokens(ScannerImpl.java:399) +05-26 11:45:24.308 1666 1666 D StrictMode: at org.yaml.snakeyaml.scanner.ScannerImpl.checkToken(ScannerImpl.java:227) +05-26 11:45:24.308 1666 1666 D StrictMode: at org.yaml.snakeyaml.parser.ParserImpl$ParseBlockSequenceEntry.produce(ParserImpl.java:504) +05-26 11:45:24.308 1666 1666 D StrictMode: at org.yaml.snakeyaml.parser.ParserImpl.peekEvent(ParserImpl.java:158) +05-26 11:45:24.308 1666 1666 D StrictMode: at org.yaml.snakeyaml.parser.ParserImpl.checkEvent(ParserImpl.java:148) +05-26 11:45:24.308 1666 1666 D StrictMode: at org.yaml.snakeyaml.composer.Composer.composeSequenceNode(Composer.java:188) +05-26 11:45:24.308 1666 1666 D StrictMode: at org.yaml.snakeyaml.composer.Composer.composeNode(Composer.java:142) +05-26 11:45:24.308 1666 1666 D StrictMode: at org.yaml.snakeyaml.composer.Composer.composeValueNode(Composer.java:236) +05-26 11:45:24.308 1666 1666 D StrictMode: at org.yaml.snakeyaml.composer.Composer.composeMappingChildren(Composer.java:227) +05-26 11:45:24.308 1666 1666 D StrictMode: at org.yaml.snakeyaml.composer.Composer.composeMappingNode(Composer.java:215) +05-26 11:45:24.308 1666 1666 D StrictMode: at org.yaml.snakeyaml.composer.Composer.composeNode(Composer.java:144) +05-26 11:45:24.308 1666 1666 D StrictMode: at org.yaml.snakeyaml.composer.Composer.getNode(Composer.java:85) +05-26 11:45:24.308 1666 1666 D StrictMode: at org.yaml.snakeyaml.composer.Composer.getSingleNode(Composer.java:108) +05-26 11:45:24.308 1666 1666 D StrictMode: at org.yaml.snakeyaml.constructor.BaseConstructor.getSingleData(BaseConstructor.java:141) +05-26 11:45:24.308 1666 1666 D StrictMode: at org.yaml.snakeyaml.Yaml.loadFromReader(Yaml.java:525) +05-26 11:45:24.308 1666 1666 D StrictMode: at org.yaml.snakeyaml.Yaml.load(Yaml.java:453) +05-26 11:45:24.308 1666 1666 D StrictMode: at org.mozilla.gecko.util.DebugConfig.fromFile(DebugConfig.java:51) +05-26 11:45:24.308 1666 1666 D StrictMode: at org.mozilla.geckoview.GeckoRuntime.init(GeckoRuntime.java:363) +05-26 11:45:24.308 1666 1666 D StrictMode: at org.mozilla.geckoview.GeckoRuntime.create(GeckoRuntime.java:574) +05-26 11:45:24.308 1666 1666 D StrictMode: at GeckoProvider.createRuntime(GeckoProvider.kt:58) +05-26 11:45:24.308 1666 1666 D StrictMode: at GeckoProvider.getOrCreateRuntime(GeckoProvider.kt:28) +05-26 11:45:24.308 1666 1666 D StrictMode: at org.mozilla.fenix.components.Core$engine$2.invoke(Core.kt:79) +05-26 11:45:24.308 1666 1666 D StrictMode: at org.mozilla.fenix.components.Core$engine$2.invoke(Core.kt:57) +05-26 11:45:24.308 1666 1666 D StrictMode: at kotlin.SynchronizedLazyImpl.getValue(LazyJVM.kt:74) +05-26 11:45:24.308 1666 1666 D StrictMode: at org.mozilla.fenix.components.Core.getEngine(Unknown Source:7) +05-26 11:45:24.308 1666 1666 D StrictMode: at org.mozilla.fenix.FenixApplication.setupInMainProcessOnly(FenixApplication.kt:128) +05-26 11:45:24.308 1666 1666 D StrictMode: at org.mozilla.fenix.FenixApplication.onCreate(FenixApplication.kt:90) +05-26 11:45:24.308 1666 1666 D StrictMode: at android.app.Instrumentation.callApplicationOnCreate(Instrumentation.java:1154) +05-26 11:45:24.308 1666 1666 D StrictMode: at android.app.ActivityThread.handleBindApplication(ActivityThread.java:5871) +05-26 11:45:24.308 1666 1666 D StrictMode: at android.app.ActivityThread.access$1100(ActivityThread.java:199) +05-26 11:45:24.308 1666 1666 D StrictMode: at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1650) +05-26 11:45:24.308 1666 1666 D StrictMode: at android.os.Handler.dispatchMessage(Handler.java:106) +05-26 11:45:24.308 1666 1666 D StrictMode: at android.os.Looper.loop(Looper.java:193) +05-26 11:45:24.308 1666 1666 D StrictMode: at android.app.ActivityThread.main(ActivityThread.java:6669) +05-26 11:45:24.308 1666 1666 D StrictMode: at java.lang.reflect.Method.invoke(Native Method) +05-26 11:45:24.308 1666 1666 D StrictMode: at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:493) +05-26 11:45:24.308 1666 1666 D StrictMode: at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:858) +05-26 11:45:24.318 1666 1666 D StrictMode: StrictMode policy violation; ~duration=413 ms: android.os.strictmode.DiskReadViolation +05-26 11:45:24.318 1666 1666 D StrictMode: at android.os.StrictMode$AndroidBlockGuardPolicy.onReadFromDisk(StrictMode.java:1504) +05-26 11:45:24.318 1666 1666 D StrictMode: at java.io.UnixFileSystem.checkAccess(UnixFileSystem.java:251) +05-26 11:45:24.318 1666 1666 D StrictMode: at java.io.File.exists(File.java:815) +05-26 11:45:24.318 1666 1666 D StrictMode: at android.app.ContextImpl.ensurePrivateDirExists(ContextImpl.java:605) +05-26 11:45:24.318 1666 1666 D StrictMode: at android.app.ContextImpl.ensurePrivateDirExists(ContextImpl.java:596) +05-26 11:45:24.318 1666 1666 D StrictMode: at android.app.ContextImpl.getPreferencesDir(ContextImpl.java:552) +05-26 11:45:24.318 1666 1666 D StrictMode: at android.app.ContextImpl.getSharedPreferencesPath(ContextImpl.java:747) +05-26 11:45:24.318 1666 1666 D StrictMode: at android.app.ContextImpl.getSharedPreferences(ContextImpl.java:400) +05-26 11:45:24.318 1666 1666 D StrictMode: at android.content.ContextWrapper.getSharedPreferences(ContextWrapper.java:174) +05-26 11:45:24.318 1666 1666 D StrictMode: at mozilla.components.browser.engine.gecko.GeckoEngine.<init>(GeckoEngine.kt:68) +05-26 11:45:24.318 1666 1666 D StrictMode: at mozilla.components.browser.engine.gecko.GeckoEngine.<init>(GeckoEngine.kt:63) +05-26 11:45:24.318 1666 1666 D StrictMode: at org.mozilla.fenix.components.Core$engine$2.invoke(Core.kt:76) +05-26 11:45:24.318 1666 1666 D StrictMode: at org.mozilla.fenix.components.Core$engine$2.invoke(Core.kt:57) +05-26 11:45:24.318 1666 1666 D StrictMode: at kotlin.SynchronizedLazyImpl.getValue(LazyJVM.kt:74) +05-26 11:45:24.318 1666 1666 D StrictMode: at org.mozilla.fenix.components.Core.getEngine(Unknown Source:7) +05-26 11:45:24.318 1666 1666 D StrictMode: at org.mozilla.fenix.FenixApplication.setupInMainProcessOnly(FenixApplication.kt:128) +05-26 11:45:24.318 1666 1666 D StrictMode: at org.mozilla.fenix.FenixApplication.onCreate(FenixApplication.kt:90) +05-26 11:45:24.318 1666 1666 D StrictMode: at android.app.Instrumentation.callApplicationOnCreate(Instrumentation.java:1154) +05-26 11:45:24.318 1666 1666 D StrictMode: at android.app.ActivityThread.handleBindApplication(ActivityThread.java:5871) +05-26 11:45:24.318 1666 1666 D StrictMode: at android.app.ActivityThread.access$1100(ActivityThread.java:199) +05-26 11:45:24.318 1666 1666 D StrictMode: at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1650) +05-26 11:45:24.318 1666 1666 D StrictMode: at android.os.Handler.dispatchMessage(Handler.java:106) +05-26 11:45:24.318 1666 1666 D StrictMode: at android.os.Looper.loop(Looper.java:193) +05-26 11:45:24.318 1666 1666 D StrictMode: at android.app.ActivityThread.main(ActivityThread.java:6669) +05-26 11:45:24.318 1666 1666 D StrictMode: at java.lang.reflect.Method.invoke(Native Method) +05-26 11:45:24.318 1666 1666 D StrictMode: at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:493) +05-26 11:45:24.318 1666 1666 D StrictMode: at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:858) +05-26 11:45:24.326 1666 1666 D StrictMode: StrictMode policy violation; ~duration=189 ms: android.os.strictmode.DiskReadViolation +05-26 11:45:24.326 1666 1666 D StrictMode: at android.os.StrictMode$AndroidBlockGuardPolicy.onReadFromDisk(StrictMode.java:1504) +05-26 11:45:24.326 1666 1666 D StrictMode: at java.io.UnixFileSystem.checkAccess(UnixFileSystem.java:251) +05-26 11:45:24.326 1666 1666 D StrictMode: at java.io.File.exists(File.java:815) +05-26 11:45:24.326 1666 1666 D StrictMode: at android.app.ContextImpl.ensurePrivateDirExists(ContextImpl.java:605) +05-26 11:45:24.326 1666 1666 D StrictMode: at android.app.ContextImpl.ensurePrivateDirExists(ContextImpl.java:596) +05-26 11:45:24.326 1666 1666 D StrictMode: at android.app.ContextImpl.getPreferencesDir(ContextImpl.java:552) +05-26 11:45:24.326 1666 1666 D StrictMode: at android.app.ContextImpl.getSharedPreferencesPath(ContextImpl.java:747) +05-26 11:45:24.326 1666 1666 D StrictMode: at android.app.ContextImpl.getSharedPreferences(ContextImpl.java:400) +05-26 11:45:24.326 1666 1666 D StrictMode: at android.content.ContextWrapper.getSharedPreferences(ContextWrapper.java:174) +05-26 11:45:24.326 1666 1666 D StrictMode: at androidx.preference.PreferenceManager.getDefaultSharedPreferences(PreferenceManager.java:119) +05-26 11:45:24.326 1666 1666 D StrictMode: at org.mozilla.fenix.DebugFenixApplication.setupLeakCanary(DebugFenixApplication.kt:15) +05-26 11:45:24.326 1666 1666 D StrictMode: at org.mozilla.fenix.FenixApplication.setupInMainProcessOnly(FenixApplication.kt:140) +05-26 11:45:24.326 1666 1666 D StrictMode: at org.mozilla.fenix.FenixApplication.onCreate(FenixApplication.kt:90) +05-26 11:45:24.326 1666 1666 D StrictMode: at android.app.Instrumentation.callApplicationOnCreate(Instrumentation.java:1154) +05-26 11:45:24.326 1666 1666 D StrictMode: at android.app.ActivityThread.handleBindApplication(ActivityThread.java:5871) +05-26 11:45:24.326 1666 1666 D StrictMode: at android.app.ActivityThread.access$1100(ActivityThread.java:199) +05-26 11:45:24.326 1666 1666 D StrictMode: at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1650) +05-26 11:45:24.326 1666 1666 D StrictMode: at android.os.Handler.dispatchMessage(Handler.java:106) +05-26 11:45:24.326 1666 1666 D StrictMode: at android.os.Looper.loop(Looper.java:193) +05-26 11:45:24.326 1666 1666 D StrictMode: at android.app.ActivityThread.main(ActivityThread.java:6669) +05-26 11:45:24.326 1666 1666 D StrictMode: at java.lang.reflect.Method.invoke(Native Method) +05-26 11:45:24.326 1666 1666 D StrictMode: at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:493) +05-26 11:45:24.326 1666 1666 D StrictMode: at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:858) +05-26 11:45:24.327 1666 1666 D StrictMode: StrictMode policy violation; ~duration=183 ms: android.os.strictmode.DiskReadViolation +05-26 11:45:24.327 1666 1666 D StrictMode: at android.os.StrictMode$AndroidBlockGuardPolicy.onReadFromDisk(StrictMode.java:1504) +05-26 11:45:24.327 1666 1666 D StrictMode: at android.app.SharedPreferencesImpl.awaitLoadedLocked(SharedPreferencesImpl.java:256) +05-26 11:45:24.327 1666 1666 D StrictMode: at android.app.SharedPreferencesImpl.getBoolean(SharedPreferencesImpl.java:325) +05-26 11:45:24.327 1666 1666 D StrictMode: at org.mozilla.fenix.DebugFenixApplication.setupLeakCanary(DebugFenixApplication.kt:16) +05-26 11:45:24.327 1666 1666 D StrictMode: at org.mozilla.fenix.FenixApplication.setupInMainProcessOnly(FenixApplication.kt:140) +05-26 11:45:24.327 1666 1666 D StrictMode: at org.mozilla.fenix.FenixApplication.onCreate(FenixApplication.kt:90) +05-26 11:45:24.327 1666 1666 D StrictMode: at android.app.Instrumentation.callApplicationOnCreate(Instrumentation.java:1154) +05-26 11:45:24.327 1666 1666 D StrictMode: at android.app.ActivityThread.handleBindApplication(ActivityThread.java:5871) +05-26 11:45:24.327 1666 1666 D StrictMode: at android.app.ActivityThread.access$1100(ActivityThread.java:199) +05-26 11:45:24.327 1666 1666 D StrictMode: at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1650) +05-26 11:45:24.327 1666 1666 D StrictMode: at android.os.Handler.dispatchMessage(Handler.java:106) +05-26 11:45:24.327 1666 1666 D StrictMode: at android.os.Looper.loop(Looper.java:193) +05-26 11:45:24.327 1666 1666 D StrictMode: at android.app.ActivityThread.main(ActivityThread.java:6669) +05-26 11:45:24.327 1666 1666 D StrictMode: at java.lang.reflect.Method.invoke(Native Method) +05-26 11:45:24.327 1666 1666 D StrictMode: at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:493) +05-26 11:45:24.327 1666 1666 D StrictMode: at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:858) +05-26 11:45:24.328 1666 1666 D SessionManager: onTrimMemory(5): clearThumbnails=false, closeEngineSessions=false +05-26 11:45:24.345 1666 1666 D LeakCanary: LeakCanary is running and ready to detect leaks +05-26 11:45:24.359 1666 1791 I GeckoConsole: No chrome package registered for chrome://browser/content/built_in_addons.json +05-26 11:45:24.475 1666 1769 I SupportedAddonsWorker: Trying to check for new supported add-ons +05-26 11:45:24.499 1876 2204 I GnssLocationProvider: WakeLock acquired by sendMessage(REPORT_SV_STATUS, 0, com.android.server.location.GnssLocationProvider$SvStatusInfo@334f06b) +05-26 11:45:24.500 1876 1890 I GnssLocationProvider: WakeLock released by handleMessage(REPORT_SV_STATUS, 0, com.android.server.location.GnssLocationProvider$SvStatusInfo@334f06b) +05-26 11:45:24.502 1666 1791 D GeckoThread: State changed to PROFILE_READY +05-26 11:45:24.531 1666 1791 D GeckoViewStartup: observe: profile-after-change +05-26 11:45:24.534 1666 1791 D GeckoViewTelemetryController: setup - canRecordPrereleaseData true, canRecordReleaseData true +05-26 11:45:24.551 1666 1791 D GeckoThread: State changed to RUNNING +05-26 11:45:24.557 1666 1791 I Gecko : 1590507924557 Marionette TRACE Marionette enabled +05-26 11:45:24.558 1666 1791 I Gecko : 1590507924558 Marionette TRACE Received observer notification profile-after-change +05-26 11:45:24.560 1666 1791 I Gecko : -*- nsDNSServiceDiscovery.js : nsDNSServiceDiscovery +05-26 11:45:24.584 1666 1791 I Gecko : 1590507924584 Marionette TRACE Received observer notification command-line-startup +05-26 11:45:24.592 1666 1666 D GeckoNetworkManager: Incoming event enableNotifications for state OffNoListeners -> OffWithListeners +05-26 11:45:24.596 1666 1666 D GeckoNetworkManager: New network state: UP, WIFI, WIFI +05-26 11:45:24.604 1666 1791 D GeckoViewStartup: onEvent GeckoView:SetLocale +05-26 11:45:24.611 1666 1791 D GeckoViewStartup: onEvent GeckoView:ResetUserPrefs +05-26 11:45:24.623 1666 1791 D GeckoViewRemoteDebugger: onInit +05-26 11:45:24.628 1666 1791 D GeckoViewConsole: enabled = false +05-26 11:45:24.638 1666 1791 D GeckoViewStartup: onEvent GeckoView:SetLocale +05-26 11:45:24.639 1666 1791 D GeckoViewStartup: onEvent GeckoView:SetDefaultPrefs +05-26 11:45:24.666 1666 1791 I chatty : uid=10091(org.mozilla.fenix.debug) Gecko identical 9 lines +05-26 11:45:24.666 1666 1791 D GeckoViewStartup: onEvent GeckoView:SetDefaultPrefs +05-26 11:45:24.671 1666 1791 D GeckoViewConsole: onEvent GeckoView:RegisterWebExtension {"allowContentMessaging":true,"id":"webcompat@mozilla.com","locationUri":"resource://android/assets/extensions/webcompat/"} +05-26 11:45:24.675 1666 1791 D GeckoViewConsole: onEvent GeckoView:WebExtension:List null +05-26 11:45:24.685 1666 1791 D GeckoViewConsole: onEvent GeckoView:RegisterWebExtension {"allowContentMessaging":true,"id":"mozacBrowserIcons","locationUri":"resource://android/assets/extensions/browser-icons/"} +05-26 11:45:24.686 1666 1791 D GeckoViewConsole: onEvent GeckoView:RegisterWebExtension {"allowContentMessaging":true,"id":"mozacBrowserAds","locationUri":"resource://android/assets/extensions/ads/"} +05-26 11:45:24.687 1666 1791 D GeckoViewConsole: onEvent GeckoView:RegisterWebExtension {"allowContentMessaging":true,"id":"BrowserCookiesExtension","locationUri":"resource://android/assets/extensions/cookies/"} +05-26 11:45:24.698 1666 1791 I Gecko : 1590507924697 Marionette TRACE Received observer notification marionette-startup-requested +05-26 11:45:24.699 1666 1791 I Gecko : 1590507924699 Marionette TRACE Waiting until startup recorder finished recording startup scripts... +05-26 11:45:24.719 1666 1791 I Gecko : 1590507924719 Marionette TRACE All scripts recorded. +05-26 11:45:24.720 1666 1791 I Gecko : 1590507924720 Marionette DEBUG Setting recommended pref browser.safebrowsing.malware.enabled to false +05-26 11:45:24.723 1666 1791 I Gecko : 1590507924723 Marionette DEBUG Setting recommended pref browser.safebrowsing.phishing.enabled to false +05-26 11:45:24.725 1666 1791 I Gecko : 1590507924725 Marionette DEBUG Setting recommended pref browser.search.update to false +05-26 11:45:24.725 1666 1791 I Gecko : 1590507924725 Marionette DEBUG Setting recommended pref browser.tabs.disableBackgroundZombification to false +05-26 11:45:24.725 1666 1791 I Gecko : 1590507924725 Marionette DEBUG Setting recommended pref browser.tabs.remote.separatePrivilegedContentProcess to false +05-26 11:45:24.726 1666 1791 I Gecko : 1590507924726 Marionette DEBUG Setting recommended pref network.http.prompt-temp-redirect to false +05-26 11:45:24.808 1666 1791 I Gecko : 1590507924807 Marionette FATAL Remote protocol server failed to start: Error: Could not bind to port 2829 (NS_ERROR_SOCKET_ADDRESS_IN_USE)(chrome://marionette/content/server.js:94:17) JS Stack trace: set acceptConnections@server.js:94:17 +05-26 11:45:24.808 1666 1791 I Gecko : start@server.js:124:5 +05-26 11:45:24.808 1666 1791 I Gecko : init/<@marionette.js:510:21 +05-26 11:45:24.808 1666 1791 I Gecko : 1590507924808 Marionette DEBUG Resetting recommended pref browser.safebrowsing.malware.enabled +05-26 11:45:24.812 1666 1791 I Gecko : 1590507924812 Marionette DEBUG Resetting recommended pref browser.safebrowsing.phishing.enabled +05-26 11:45:24.815 1666 1791 I Gecko : 1590507924815 Marionette DEBUG Resetting recommended pref browser.search.update +05-26 11:45:24.815 1666 1791 I Gecko : 1590507924815 Marionette DEBUG Resetting recommended pref browser.tabs.disableBackgroundZombification +05-26 11:45:24.816 1666 1791 I Gecko : 1590507924815 Marionette DEBUG Resetting recommended pref browser.tabs.remote.separatePrivilegedContentProcess +05-26 11:45:24.816 1666 1791 I Gecko : 1590507924816 Marionette DEBUG Resetting recommended pref network.http.prompt-temp-redirect +05-26 11:45:24.825 1666 1791 D GeckoThread: State changed to EXITING +05-26 11:45:24.849 1666 1791 E GeckoConsole: [JavaScript Error: "NetworkError when attempting to fetch resource."] +05-26 11:45:24.849 1666 1791 E GeckoConsole: get@resource://services-settings/RemoteSettingsClient.jsm:348:12 +05-26 11:45:25.001 1666 1666 D App : Installed browser-icons extension +05-26 11:45:25.023 1666 1791 I GeckoConsole: 1590507925022 addons.xpi WARN Exception running bootstrap method shutdown on default-theme@mozilla.org: [Exception... "Component returned failure code: 0x80004002 (NS_NOINTERFACE) [nsISupports.QueryInterface]" nsresult: "0x80004002 (NS_NOINTERFACE)" location: "JS frame :: resource://gre/modules/Extension.jsm :: shutdown :: line 2586" data: no] Stack trace: shutdown()@resource://gre/modules/Extension.jsm:2586 +05-26 11:45:25.023 1666 1791 I GeckoConsole: shutdown()@resource://gre/modules/Extension.jsm:1703 +05-26 11:45:25.023 1666 1791 I GeckoConsole: callBootstrapMethod()@resource://gre/modules/addons/XPIProvider.jsm:1819 +05-26 11:45:25.023 1666 1791 I GeckoConsole: _shutdown()@resource://gre/modules/addons/XPIProvider.jsm:1948 +05-26 11:45:25.023 1666 1791 I GeckoConsole: observe()@resource://gre/modules/AsyncShutdown.jsm:554 +05-26 11:45:25.030 1666 1791 D : HostConnection::get() New Host Connection established 0xd119ec00, tid 1791 +05-26 11:45:25.033 1831 1831 D GeckoThread: State changed to LAUNCHED +05-26 11:45:25.033 1666 1791 I ConfigStore: android::hardware::configstore::V1_0::ISurfaceFlingerConfigs::hasWideColorDisplay retrieved: 0 +05-26 11:45:25.033 1666 1791 I ConfigStore: android::hardware::configstore::V1_0::ISurfaceFlingerConfigs::hasHDRDisplay retrieved: 0 +05-26 11:45:25.034 1831 1903 I GeckoThread: preparing to run Gecko +05-26 11:45:25.035 1666 1791 E EGL_emulation: tid 1791: eglBindAPI(1259): error 0x300c (EGL_BAD_PARAMETER) +05-26 11:45:25.037 1666 1791 D EGL_emulation: eglCreateContext: 0xe8b05f00: maj 3 min 0 rcv 3 +05-26 11:45:25.039 1666 1791 D EGL_emulation: eglMakeCurrent: 0xe8b05f00: ver 3 0 (tinfo 0xe8b03c50) +05-26 11:45:25.129 1666 1791 E GeckoConsole: [JavaScript Error: "Error: Phase "profile-change-teardown" is finished, it is too late to register completion condition "ServiceWorkerShutdownBlocker: shutting down Service Workers"" {file: "resource://gre/modules/AsyncShutdown.jsm" line: 697}] +05-26 11:45:25.129 1666 1791 E GeckoConsole: addBlocker@resource://gre/modules/AsyncShutdown.jsm:697:15 +05-26 11:45:25.129 1666 1791 E GeckoConsole: addBlocker@resource://gre/modules/AsyncShutdown.jsm:505:26 +05-26 11:45:25.129 1666 1791 E GeckoConsole: addBlocker@resource://gre/modules/AsyncShutdown.jsm:444:15 +05-26 11:45:25.129 1666 1791 E GeckoConsole: addBlocker@resource://gre/modules/nsAsyncShutdown.jsm:162:24 +05-26 11:45:25.129 1666 1791 E GeckoConsole: observe@resource://gre/modules/AsyncShutdown.jsm:554:16 +05-26 11:45:25.267 1666 1791 W GeckoConsole: [JavaScript Warning: "Security wrapper denied access to property "ONE_QUARTER" on privileged Javascript object. Support for exposing privileged objects to untrusted content via __exposedProps__ has been removed - use WebIDL bindings or Components.utils.cloneInto instead. Note that only the first denied property access from a given global object will be reported." {file: "moz-extension://9670d999-4378-46ae-b907-6d0c226b09b6/data/picture_in_picture_overrides.js" line: 26}] +05-26 11:45:25.311 1666 1666 D mozac-webcompat: Installed WebCompat webextension: webcompat@mozilla.com +05-26 11:45:25.381 1666 1791 E GeckoConsole: [JavaScript Error: "can't access property "startupData", state is undefined" {file: "resource://gre/modules/addons/XPIProvider.jsm" line: 3079}] +05-26 11:45:25.381 1666 1791 E GeckoConsole: setStartupData@resource://gre/modules/addons/XPIProvider.jsm:3079:5 +05-26 11:45:25.381 1666 1791 E GeckoConsole: saveStartupData@resource://gre/modules/Extension.jsm:2035:17 +05-26 11:45:25.381 1666 1791 E GeckoConsole: _writePersistentListeners@resource://gre/modules/ExtensionCommon.jsm:2271:15 +05-26 11:45:25.381 1666 1791 E GeckoConsole: savePersistentListener@resource://gre/modules/ExtensionCommon.jsm:2362:18 +05-26 11:45:25.381 1666 1791 E GeckoConsole: addListener@resource://gre/modules/ExtensionCommon.jsm:2495:20 +05-26 11:45:25.381 1666 1791 E GeckoConsole: addListener@resource://gre/modules/ExtensionCommon.jsm:2550:38 +05-26 11:45:25.381 1666 1791 E GeckoConsole: recvAddListener@resource://gre/modules/ExtensionParent.jsm:1079:13 +05-26 11:45:25.381 1666 1791 E GeckoConsole: observe@resource://gre/modules/AsyncShutdown.jsm:554:16 +05-26 11:45:25.401 1666 1791 I chatty : uid=10091(org.mozilla.fenix.debug) Gecko identical 24 lines +05-26 11:45:25.478 1666 1791 E GeckoConsole: [JavaScript Error: "can't access property "startupData", state is undefined" {file: "resource://gre/modules/addons/XPIProvider.jsm" line: 3079}] +05-26 11:45:25.478 1666 1791 E GeckoConsole: setStartupData@resource://gre/modules/addons/XPIProvider.jsm:3079:5 +05-26 11:45:25.478 1666 1791 E GeckoConsole: saveStartupData@resource://gre/modules/Extension.jsm:2035:17 +05-26 11:45:25.478 1666 1791 E GeckoConsole: _writePersistentListeners@resource://gre/modules/ExtensionCommon.jsm:2271:15 +05-26 11:45:25.478 1666 1791 E GeckoConsole: savePersistentListener@resource://gre/modules/ExtensionCommon.jsm:2362:18 +05-26 11:45:25.478 1666 1791 E GeckoConsole: addListener@resource://gre/modules/ExtensionCommon.jsm:2495:20 +05-26 11:45:25.478 1666 1791 E GeckoConsole: addListener@resource://gre/modules/ExtensionCommon.jsm:2550:38 +05-26 11:45:25.478 1666 1791 E GeckoConsole: recvAddListener@resource://gre/modules/ExtensionParent.jsm:1079:13 +05-26 11:45:25.478 1666 1791 E GeckoConsole: observe@resource://gre/modules/AsyncShutdown.jsm:554:16 +05-26 11:45:25.499 1876 2204 I GnssLocationProvider: WakeLock acquired by sendMessage(REPORT_SV_STATUS, 0, com.android.server.location.GnssLocationProvider$SvStatusInfo@c8d27c8) +05-26 11:45:25.500 1876 1890 I GnssLocationProvider: WakeLock released by handleMessage(REPORT_SV_STATUS, 0, com.android.server.location.GnssLocationProvider$SvStatusInfo@c8d27c8) +05-26 11:45:25.518 1666 1791 I Gecko : 1590507925518 Marionette TRACE Received observer notification xpcom-will-shutdown +05-26 11:45:25.537 1666 1666 I DefaultSupportedAddonsChecker: Register check for new supported add-ons +05-26 11:45:25.662 1666 1732 I WM-WorkerWrapper: Work [ id=aa9d958b-bd64-47de-ad98-331e40daa20b, tags={ mozilla.components.feature.addons.migration.DefaultSupportedAddonsChecker.periodicWork, mozilla.components.feature.addons.migration.SupportedAddonsWorker } ] was cancelled +05-26 11:45:25.662 1666 1732 I WM-WorkerWrapper: java.util.concurrent.CancellationException: Task was cancelled. +05-26 11:45:25.662 1666 1732 I WM-WorkerWrapper: at androidx.work.impl.utils.futures.AbstractFuture.cancellationExceptionWithCause(AbstractFuture.java:1184) +05-26 11:45:25.662 1666 1732 I WM-WorkerWrapper: at androidx.work.impl.utils.futures.AbstractFuture.getDoneValue(AbstractFuture.java:514) +05-26 11:45:25.662 1666 1732 I WM-WorkerWrapper: at androidx.work.impl.utils.futures.AbstractFuture.get(AbstractFuture.java:475) +05-26 11:45:25.662 1666 1732 I WM-WorkerWrapper: at androidx.work.impl.WorkerWrapper$2.run(WorkerWrapper.java:284) +05-26 11:45:25.662 1666 1732 I WM-WorkerWrapper: at androidx.work.impl.utils.SerialExecutor$Task.run(SerialExecutor.java:91) +05-26 11:45:25.662 1666 1732 I WM-WorkerWrapper: at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1167) +05-26 11:45:25.662 1666 1732 I WM-WorkerWrapper: at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:641) +05-26 11:45:25.662 1666 1732 I WM-WorkerWrapper: at java.lang.Thread.run(Thread.java:764) +05-26 11:45:25.723 1666 1769 E SupportedAddonsWorker: An exception happened trying to check for new supported add-ons, re-schedule Job was cancelled +05-26 11:45:25.723 1666 1769 E SupportedAddonsWorker: kotlinx.coroutines.JobCancellationException: Job was cancelled; job=JobImpl{Cancelling}@1e7bb6 +05-26 11:45:25.725 1666 1769 I SupportedAddonsWorker: Trying to check for new supported add-ons +05-26 11:45:25.737 1922 1791 W google-breakpad: ExceptionHandler::WaitForContinueSignal waiting for continue signal... +05-26 11:45:25.738 1666 1791 W google-breakpad: ExceptionHandler::GenerateDump cloned child +05-26 11:45:25.739 1666 1791 W google-breakpad: 1922 +05-26 11:45:25.739 1666 1791 W google-breakpad: +05-26 11:45:25.739 1666 1791 W google-breakpad: ExceptionHandler::SendContinueSignalToChild sent continue signal to child +05-26 11:45:26.025 1876 17867 I ActivityManager: Process org.mozilla.fenix.debug (pid 1666) has died: vis TRNB +05-26 11:45:26.025 1876 1894 W libprocessgroup: kill(-1666, 9) failed: No such process +05-26 11:45:26.025 1876 1894 I libprocessgroup: Successfully killed process cgroup uid 10091 pid 1666 in 0ms +05-26 11:45:26.025 1734 1734 I Zygote : Process 1666 exited due to signal (11) +05-26 11:45:26.026 1831 1831 I ServiceChildProcess: Service has been unbound. Stopping. +05-26 11:45:26.027 1876 17867 W ActivityManager: Scheduling restart of crashed service org.mozilla.fenix.debug/androidx.work.impl.background.systemjob.SystemJobService in 1000ms +05-26 11:45:26.042 11979 11979 D SessionManager: onTrimMemory(5): clearThumbnails=false, closeEngineSessions=false +05-26 11:45:26.047 1831 1831 I Process : Sending signal. PID: 1831 SIG: 9 +05-26 11:45:26.075 1734 1734 I Zygote : Process 1831 exited due to signal (9) +05-26 11:45:26.075 1876 17867 I ActivityManager: Process org.mozilla.fenix.debug:tab0 (pid 1831) has died: fore SVC +05-26 11:45:26.075 1876 1894 W libprocessgroup: kill(-1831, 9) failed: No such process +05-26 11:45:26.075 1876 1894 I libprocessgroup: Successfully killed process cgroup uid 10091 pid 1831 in 0ms +05-26 11:45:26.245 1876 17867 D WificondControl: Scan result ready event +05-26 11:45:26.499 1876 2204 I GnssLocationProvider: WakeLock acquired by sendMessage(REPORT_SV_STATUS, 0, com.android.server.location.GnssLocationProvider$SvStatusInfo@5bd01e3) +05-26 11:45:26.500 1876 1890 I GnssLocationProvider: WakeLock released by handleMessage(REPORT_SV_STATUS, 0, com.android.server.location.GnssLocationProvider$SvStatusInfo@5bd01e3) +05-26 11:45:27.503 1876 2204 I GnssLocationProvider: WakeLock acquired by sendMessage(REPORT_SV_STATUS, 0, com.android.server.location.GnssLocationProvider$SvStatusInfo@9f27e0) +05-26 11:45:27.503 1876 1890 I GnssLocationProvider: WakeLock released by handleMessage(REPORT_SV_STATUS, 0, com.android.server.location.GnssLocationProvider$SvStatusInfo@9f27e0) +05-26 11:45:28.503 1876 2204 I GnssLocationProvider: WakeLock acquired by sendMessage(REPORT_SV_STATUS, 0, com.android.server.location.GnssLocationProvider$SvStatusInfo@92a6a99) +05-26 11:45:28.504 1876 1890 I GnssLocationProvider: WakeLock released by handleMessage(REPORT_SV_STATUS, 0, com.android.server.location.GnssLocationProvider$SvStatusInfo@92a6a99) +05-26 11:45:28.509 2482 7043 W ctxmgr : [AclManager]No 2 for (accnt=account#-517948760#, com.google.android.gms(10008):IndoorOutdoorProducer, vrsn=13280000, 0, 3pPkg = null , 3pMdlId = null , pid = 2482). Was: 3 for 57, account#-517948760# +05-26 11:45:28.888 1876 1884 I system_server: Background concurrent copying GC freed 100792(4MB) AllocSpace objects, 26(1616KB) LOS objects, 15% free, 33MB/39MB, paused 489us total 136.582ms +05-26 11:45:29.506 1876 2204 I GnssLocationProvider: WakeLock acquired by sendMessage(REPORT_SV_STATUS, 0, com.android.server.location.GnssLocationProvider$SvStatusInfo@ee0315e) +05-26 11:45:29.507 1876 1890 I GnssLocationProvider: WakeLock released by handleMessage(REPORT_SV_STATUS, 0, com.android.server.location.GnssLocationProvider$SvStatusInfo@ee0315e) +05-26 11:45:30.506 1876 2204 I GnssLocationProvider: WakeLock acquired by sendMessage(REPORT_SV_STATUS, 0, com.android.server.location.GnssLocationProvider$SvStatusInfo@133d93f) +05-26 11:45:30.507 1876 1890 I GnssLocationProvider: WakeLock released by handleMessage(REPORT_SV_STATUS, 0, com.android.server.location.GnssLocationProvider$SvStatusInfo@133d93f) +05-26 11:45:31.506 1876 2204 I GnssLocationProvider: WakeLock acquired by sendMessage(REPORT_SV_STATUS, 0, com.android.server.location.GnssLocationProvider$SvStatusInfo@4fee20c) +05-26 11:45:31.508 1876 1890 I GnssLocationProvider: WakeLock released by handleMessage(REPORT_SV_STATUS, 0, com.android.server.location.GnssLocationProvider$SvStatusInfo@4fee20c) +05-26 11:45:32.191 1876 4539 W system_server: Long monitor contention with owner PackageInstaller (1938) at boolean com.android.server.pm.PackageInstallerSession$3.handleMessage(android.os.Message)(PackageInstallerSession.java:292) waiters=0 in void com.android.server.pm.PackageInstallerSession.write(org.xmlpull.v1.XmlSerializer, java.io.File) for 944ms +05-26 11:45:32.196 1928 1928 W id.defcontaine: Unexpected CPU variant for X86 using defaults: x86 +05-26 11:45:32.199 1876 1893 I ActivityManager: Start proc 1928:com.android.defcontainer/u0a13 for service com.android.defcontainer/.DefaultContainerService +05-26 11:45:32.202 1876 2208 W system_server: Long monitor contention with owner Binder:1876_14 (4539) at void com.android.server.pm.PackageInstallerService$InternalCallback.onSessionSealedBlocking(com.android.server.pm.PackageInstallerSession)(PackageInstallerService.java:1136) waiters=0 in android.content.pm.PackageInstaller$SessionInfo com.android.server.pm.PackageInstallerService.getSessionInfo(int) for 958ms +05-26 11:45:32.238 1928 1928 I id.defcontaine: The ClassLoaderContext is a special shared library. +05-26 11:45:32.450 1876 1891 I ActivityManager: Force stopping org.mozilla.fennec_aurora appid=10092 user=-1: installPackageLI +05-26 11:45:32.453 1876 1891 I ActivityManager: Killing 12055:org.mozilla.fennec_aurora:tab0/u0a92 (adj 100): stop org.mozilla.fennec_aurora +05-26 11:45:32.454 1876 1891 W ActivityManager: Scheduling restart of crashed service org.mozilla.fennec_aurora/org.mozilla.gecko.process.GeckoChildProcessServices$tab0 in 1000ms +05-26 11:45:32.454 1876 1894 W libprocessgroup: kill(-12055, 9) failed: No such process +05-26 11:45:32.458 1876 1891 I ActivityManager: Killing 11979:org.mozilla.fennec_aurora/u0a92 (adj 0): stop org.mozilla.fennec_aurora +05-26 11:45:32.471 1876 1891 W ActivityManager: Force removing ActivityRecord{f1cab5f u0 org.mozilla.fennec_aurora/org.mozilla.fenix.HomeActivity t281}: app died, no saved state +05-26 11:45:32.494 1876 1894 W libprocessgroup: kill(-12055, 9) failed: No such process +05-26 11:45:32.505 1734 1734 I Zygote : Process 12055 exited due to signal (9) +05-26 11:45:32.506 1876 2204 I GnssLocationProvider: WakeLock acquired by sendMessage(REPORT_SV_STATUS, 0, com.android.server.location.GnssLocationProvider$SvStatusInfo@191d7c2) +05-26 11:45:32.507 1876 1890 I GnssLocationProvider: WakeLock released by handleMessage(REPORT_SV_STATUS, 0, com.android.server.location.GnssLocationProvider$SvStatusInfo@191d7c2) +05-26 11:45:32.509 1876 1914 I PackageManager: Update package org.mozilla.fennec_aurora code path from /data/app/org.mozilla.fennec_aurora-gZjm3mMAvE9P4O2xmylTiQ== to /data/app/org.mozilla.fennec_aurora-0Iby3PCtt7bInD2AjVGM2A==; Retain data and using new +05-26 11:45:32.510 1876 1914 I PackageManager: Update package org.mozilla.fennec_aurora resource path from /data/app/org.mozilla.fennec_aurora-gZjm3mMAvE9P4O2xmylTiQ== to /data/app/org.mozilla.fennec_aurora-0Iby3PCtt7bInD2AjVGM2A==; Retain data and using new +05-26 11:45:32.531 1734 1734 I Zygote : Process 11979 exited due to signal (9) +05-26 11:45:32.534 1876 1895 E BatteryExternalStatsWorker: no controller energy info supplied for wifi +05-26 11:45:32.534 1876 1961 W InputDispatcher: channel '2ce2f5d org.mozilla.fennec_aurora/org.mozilla.fenix.HomeActivity (server)' ~ Consumer closed input channel or an error occurred. events=0x9 +05-26 11:45:32.534 1876 1961 E InputDispatcher: channel '2ce2f5d org.mozilla.fennec_aurora/org.mozilla.fenix.HomeActivity (server)' ~ Channel is unrecoverably broken and will be disposed! +05-26 11:45:32.536 1876 1894 W libprocessgroup: kill(-12055, 9) failed: No such process +05-26 11:45:32.536 1876 1894 I libprocessgroup: Successfully killed process cgroup uid 10092 pid 12055 in 81ms +05-26 11:45:32.536 1876 1894 W libprocessgroup: kill(-11979, 9) failed: No such process +05-26 11:45:32.536 1876 1894 I libprocessgroup: Successfully killed process cgroup uid 10092 pid 11979 in 0ms +05-26 11:45:32.552 1904 16172 D gralloc_ranchu: gralloc_unregister_buffer: exiting HostConnection (is buffer-handling thread) +05-26 11:45:32.554 1904 16172 D : HostConnection::get() New Host Connection established 0xe69102c0, tid 16172 +05-26 11:45:32.554 1904 16172 D gralloc_ranchu: gralloc_unregister_buffer: exiting HostConnection (is buffer-handling thread) +05-26 11:45:32.555 1904 16172 D : HostConnection::get() New Host Connection established 0xe69102c0, tid 16172 +05-26 11:45:32.555 1904 16172 D gralloc_ranchu: gralloc_unregister_buffer: exiting HostConnection (is buffer-handling thread) +05-26 11:45:32.555 1904 16172 D : HostConnection::get() New Host Connection established 0xe69102c0, tid 16172 +05-26 11:45:32.555 1904 16172 D gralloc_ranchu: gralloc_unregister_buffer: exiting HostConnection (is buffer-handling thread) +05-26 11:45:32.556 1904 16172 D : HostConnection::get() New Host Connection established 0xe69102c0, tid 16172 +05-26 11:45:32.556 1904 16172 D gralloc_ranchu: gralloc_unregister_buffer: exiting HostConnection (is buffer-handling thread) +05-26 11:45:32.556 1904 16172 D : HostConnection::get() New Host Connection established 0xe69102c0, tid 16172 +05-26 11:45:32.556 1904 16172 D gralloc_ranchu: gralloc_unregister_buffer: exiting HostConnection (is buffer-handling thread) +05-26 11:45:32.560 1876 2445 I WindowManager: WIN DEATH: Window{2ce2f5d u0 org.mozilla.fennec_aurora/org.mozilla.fenix.HomeActivity} +05-26 11:45:32.561 1904 16172 D : HostConnection::get() New Host Connection established 0xe69102c0, tid 16172 +05-26 11:45:32.561 1876 2445 W InputDispatcher: Attempted to unregister already unregistered input channel '2ce2f5d org.mozilla.fennec_aurora/org.mozilla.fenix.HomeActivity (server)' +05-26 11:45:32.568 1733 1967 W SurfaceFlinger: Attempting to destroy on removed layer: AppWindowToken{5d38675 token=Token{5e619ac ActivityRecord{f1cab5f u0 org.mozilla.fennec_aurora/org.mozilla.fenix.HomeActivity t281}}}#0 +05-26 11:45:32.583 1738 4197 D installd: Detected label change from u:object_r:app_data_file:s0 to u:object_r:app_data_file:s0:c92,c256,c512,c768 at /data/data/org.mozilla.fennec_aurora/code_cache; running recursive restorecon +05-26 11:45:32.585 1738 4197 D installd: Detected label change from u:object_r:app_data_file:s0 to u:object_r:app_data_file:s0:c92,c256,c512,c768 at /data/user_de/0/org.mozilla.fennec_aurora/cache; running recursive restorecon +05-26 11:45:32.589 1876 1914 I PackageManager.DexOptimizer: Running dexopt (dexoptNeeded=1) on: /data/app/org.mozilla.fennec_aurora-0Iby3PCtt7bInD2AjVGM2A==/base.apk pkg=org.mozilla.fennec_aurora isa=x86 dexoptFlags=boot_complete,profile_guided,public,enable_hidden_api_checks targetFilter=speed-profile oatDir=/data/app/org.mozilla.fennec_aurora-0Iby3PCtt7bInD2AjVGM2A==/oat classLoaderContext=PCL[/system/framework/org.apache.http.legacy.boot.jar] +05-26 11:45:32.590 1738 4197 V installed: DexInv: --- BEGIN '/data/app/org.mozilla.fennec_aurora-0Iby3PCtt7bInD2AjVGM2A==/base.apk' --- +05-26 11:45:32.613 1876 1899 W ActivityManager: setHasOverlayUi called on unknown pid: 11979 +05-26 11:45:32.629 1876 1892 W Looper : Slow dispatch took 171ms android.ui h=com.android.server.am.ActivityManagerService$UiHandler c=null m=53 +05-26 11:45:32.636 1623 5774 D gralloc_ranchu: gralloc_alloc: Creating ashmem region of size 9334784 +05-26 11:45:32.649 1623 5774 D gralloc_ranchu: gralloc_alloc: Creating ashmem region of size 9334784 +05-26 11:45:32.654 2002 2002 W dex2oat : Unexpected CPU variant for X86 using defaults: x86 +05-26 11:45:32.655 2002 2002 W dex2oat : Mismatch between dex2oat instruction set features (ISA: X86 Feature string: -ssse3,-sse4.1,-sse4.2,-avx,-avx2,-popcnt) and those of dex2oat executable (ISA: X86 Feature string: ssse3,-sse4.1,-sse4.2,-avx,-avx2,-popcnt) for the command line: +05-26 11:45:32.655 2002 2002 W dex2oat : /system/bin/dex2oat --zip-fd=8 --zip-location=base.apk --input-vdex-fd=-1 --output-vdex-fd=10 --oat-fd=9 --oat-location=/data/app/org.mozilla.fennec_aurora-0Iby3PCtt7bInD2AjVGM2A==/oat/x86/base.odex --instruction-set=x86 --instruction-set-variant=x86 --instruction-set-features=default --runtime-arg -Xms64m --runtime-arg -Xmx512m --compiler-filter=speed-profile --swap-fd=11 --app-image-fd=12 --image-format=lz4 --classpath-dir=/data/app/org.mozilla.fennec_aurora-0Iby3PCtt7bInD2AjVGM2A== --class-loader-context=PCL[/system/framework/org.apache.http.legacy.boot.jar] --generate-mini-debug-info --compact-dex-level=none --runtime-arg -Xtarget-sdk-version:28 --runtime-arg -Xhidden-api-checks --compilation-reason=install +05-26 11:45:32.655 2002 2002 I dex2oat : /system/bin/dex2oat --input-vdex-fd=-1 --output-vdex-fd=10 --compiler-filter=speed-profile --classpath-dir=/data/app/org.mozilla.fennec_aurora-0Iby3PCtt7bInD2AjVGM2A== --class-loader-context=PCL[/system/framework/org.apache.http.legacy.boot.jar] --generate-mini-debug-info --compact-dex-level=none --compilation-reason=install +05-26 11:45:32.663 1623 5774 D gralloc_ranchu: gralloc_alloc: Creating ashmem region of size 9334784 +05-26 11:45:32.689 1733 1733 D SurfaceFlinger: duplicate layer name: changing com.google.android.apps.nexuslauncher/com.google.android.apps.nexuslauncher.NexusLauncherActivity to com.google.android.apps.nexuslauncher/com.google.android.apps.nexuslauncher.NexusLauncherActivity#1 +05-26 11:45:32.691 1623 5774 D gralloc_ranchu: gralloc_alloc: Creating ashmem region of size 9334784 +05-26 11:45:32.703 1623 5774 I chatty : uid=1000(system) HwBinder:1623_3 identical 1 line +05-26 11:45:32.712 1623 5774 D gralloc_ranchu: gralloc_alloc: Creating ashmem region of size 9334784 +05-26 11:45:32.734 2000 2000 I GoogleInputMethod: onFinishInput() : Dummy InputConnection bound +05-26 11:45:32.748 2499 2681 D EGL_emulation: eglMakeCurrent: 0xd35359e0: ver 3 0 (tinfo 0xd353b4f0) +05-26 11:45:32.762 2000 2000 I GoogleInputMethod: onStartInput() : Dummy InputConnection bound +05-26 11:45:32.792 2012 2265 D EGL_emulation: eglMakeCurrent: 0xe8b05420: ver 3 0 (tinfo 0xe8b03980) +05-26 11:45:32.794 2534 2825 D EGL_emulation: eglMakeCurrent: 0xe8b06aa0: ver 3 0 (tinfo 0xe8b03b50) +05-26 11:45:32.812 2012 2265 D EGL_emulation: eglMakeCurrent: 0xe8b05420: ver 3 0 (tinfo 0xe8b03980) +05-26 11:45:32.821 2012 2265 D EGL_emulation: eglMakeCurrent: 0xe8b05420: ver 3 0 (tinfo 0xe8b03980) +05-26 11:45:32.823 2534 2534 W SessionLifecycleManager: Handover failed. Creating new session controller. +05-26 11:45:32.855 2012 2265 D EGL_emulation: eglMakeCurrent: 0xe8b05420: ver 3 0 (tinfo 0xe8b03980) +05-26 11:45:32.985 2012 2265 I chatty : uid=10024(com.android.systemui) RenderThread identical 12 lines +05-26 11:45:32.990 2012 2265 D EGL_emulation: eglMakeCurrent: 0xe8b05420: ver 3 0 (tinfo 0xe8b03980) +05-26 11:45:33.096 2534 2034 W LocationOracle: No location history returned by ContextManager +05-26 11:45:33.263 2534 2534 I MicroDetectionWorker: #startMicroDetector [speakerMode: 0] +05-26 11:45:33.267 2534 2534 I AudioController: Using mInputStreamFactoryBuilder +05-26 11:45:33.268 2534 2534 I AudioController: Created new AudioSource +05-26 11:45:33.275 2534 2534 I MicroDetectionWorker: onReady +05-26 11:45:33.303 2012 2265 D EGL_emulation: eglMakeCurrent: 0xe8b05420: ver 3 0 (tinfo 0xe8b03980) +05-26 11:45:33.311 1876 2445 I GnssLocationProvider: WakeLock acquired by sendMessage(SET_REQUEST, 0, com.android.server.location.GnssLocationProvider$GpsRequest@69389c9) +05-26 11:45:33.314 2482 6319 W ctxmgr : [AclManager]No 3 for (accnt=account#-517948760#, com.google.android.gms(10008):UserVelocityProducer, vrsn=13280022, 0, 3pPkg = null , 3pMdlId = null , pid = 2482). Was: 3 for 1, account#-517948760# +05-26 11:45:33.333 1876 2204 I GnssLocationProvider: WakeLock acquired by sendMessage(REPORT_SV_STATUS, 0, com.android.server.location.GnssLocationProvider$SvStatusInfo@b4318ce) +05-26 11:45:33.340 1876 1890 I GnssLocationProvider: WakeLock released by handleMessage(SET_REQUEST, 0, com.android.server.location.GnssLocationProvider$GpsRequest@69389c9) +05-26 11:45:33.341 1876 1890 I GnssLocationProvider: WakeLock released by handleMessage(REPORT_SV_STATUS, 0, com.android.server.location.GnssLocationProvider$SvStatusInfo@b4318ce) +05-26 11:45:33.344 1876 2204 I GnssLocationProvider: WakeLock acquired by sendMessage(REPORT_LOCATION, 1, Location[gps 37.421998,-122.084000 hAcc=20 et=?!? alt=5.0 vel=0.0 bear=0.0 vAcc=??? sAcc=??? bAcc=???]) +05-26 11:45:33.346 1876 1890 I GnssLocationProvider: WakeLock released by handleMessage(REPORT_LOCATION, 1, Location[gps 37.421998,-122.084000 hAcc=20 et=+2d5h0m53s542ms alt=5.0 vel=0.0 bear=0.0 vAcc=??? sAcc=??? bAcc=??? {Bundle[{satellites=0, maxCn0=0, meanCn0=0}]}]) +05-26 11:45:33.347 2534 2038 I MicroRecognitionRunner: Starting detection. +05-26 11:45:33.357 2534 2010 I MicrophoneInputStream: mic_starting SR : 16000 CC : 16 SO : 6 +05-26 11:45:33.367 1631 1682 E : Request requires android.permission.RECORD_AUDIO +05-26 11:45:33.367 1631 1682 E AudioPolicyIntefaceImpl: getInputForAttr permission denied: recording not allowed for uid 10039 pid 2534 +05-26 11:45:33.367 1631 1682 E AudioFlinger: createRecord() checkRecordThread_l failed +05-26 11:45:33.367 2534 2010 E IAudioFlinger: createRecord returned error -22 +05-26 11:45:33.367 2534 2010 E AudioRecord: AudioFlinger could not create record track, status: -22 +05-26 11:45:33.367 2534 2010 E AudioRecord-JNI: Error creating AudioRecord instance: initialization check failed with status -22. +05-26 11:45:33.370 2534 2010 E android.media.AudioRecord: Error code -20 when initializing native AudioRecord object. +05-26 11:45:33.370 2534 2010 I MicrophoneInputStream: mic_started SR : 16000 CC : 16 SO : 6 +05-26 11:45:33.371 2534 2010 E ActivityThread: Failed to find provider info for com.google.android.apps.gsa.testing.ui.audio.recorded +05-26 11:45:33.372 2534 2534 I MicroDetectionWorker: onReady +05-26 11:45:33.373 2534 2038 W SpeechLevelGenerator: Really low audio levels detected. The audio input may have issues. +05-26 11:45:33.376 2534 2010 I MicrophoneInputStream: mic_close SR : 16000 CC : 16 SO : 6 +05-26 11:45:33.383 2534 2038 I MicroRecognitionRunner: Detection finished +05-26 11:45:33.383 2534 2038 W ErrorReporter: reportError [type: 211, code: 524300]: Error reading from input stream +05-26 11:45:33.384 2534 2954 I MicroRecognitionRunner: Stopping hotword detection. +05-26 11:45:33.390 2482 3056 I Places : Converted 0 out of 1 WiFi scans +05-26 11:45:33.398 2534 2038 W ErrorProcessor: onFatalError, processing error from engine(4) +05-26 11:45:33.398 2534 2038 W ErrorProcessor: com.google.android.apps.gsa.shared.speech.b.g: Error reading from input stream +05-26 11:45:33.398 2534 2038 W ErrorProcessor: at com.google.android.apps.gsa.staticplugins.microdetection.d.k.a(SourceFile:91) +05-26 11:45:33.398 2534 2038 W ErrorProcessor: at com.google.android.apps.gsa.staticplugins.microdetection.d.l.run(Unknown Source:14) +05-26 11:45:33.398 2534 2038 W ErrorProcessor: at com.google.android.libraries.gsa.runner.a.a.b(SourceFile:32) +05-26 11:45:33.398 2534 2038 W ErrorProcessor: at com.google.android.libraries.gsa.runner.a.c.call(Unknown Source:4) +05-26 11:45:33.398 2534 2038 W ErrorProcessor: at java.util.concurrent.FutureTask.run(FutureTask.java:266) +05-26 11:45:33.398 2534 2038 W ErrorProcessor: at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:458) +05-26 11:45:33.398 2534 2038 W ErrorProcessor: at java.util.concurrent.FutureTask.run(FutureTask.java:266) +05-26 11:45:33.398 2534 2038 W ErrorProcessor: at com.google.android.apps.gsa.shared.util.concurrent.b.g.run(Unknown Source:4) +05-26 11:45:33.398 2534 2038 W ErrorProcessor: at com.google.android.apps.gsa.shared.util.concurrent.b.aw.run(SourceFile:4) +05-26 11:45:33.398 2534 2038 W ErrorProcessor: at com.google.android.apps.gsa.shared.util.concurrent.b.aw.run(SourceFile:4) +05-26 11:45:33.398 2534 2038 W ErrorProcessor: at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1167) +05-26 11:45:33.398 2534 2038 W ErrorProcessor: at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:641) +05-26 11:45:33.398 2534 2038 W ErrorProcessor: at java.lang.Thread.run(Thread.java:764) +05-26 11:45:33.398 2534 2038 W ErrorProcessor: at com.google.android.apps.gsa.shared.util.concurrent.b.i.run(SourceFile:6) +05-26 11:45:33.398 2534 2038 W ErrorProcessor: Caused by: com.google.android.apps.gsa.shared.exception.GsaIOException: Error code: 393238 | Buffer overflow, no available space. +05-26 11:45:33.398 2534 2038 W ErrorProcessor: at com.google.android.apps.gsa.speech.audio.Tee.j(SourceFile:103) +05-26 11:45:33.398 2534 2038 W ErrorProcessor: at com.google.android.apps.gsa.speech.audio.au.read(SourceFile:2) +05-26 11:45:33.398 2534 2038 W ErrorProcessor: at java.io.InputStream.read(InputStream.java:101) +05-26 11:45:33.398 2534 2038 W ErrorProcessor: at com.google.android.apps.gsa.speech.audio.ao.run(SourceFile:17) +05-26 11:45:33.398 2534 2038 W ErrorProcessor: at com.google.android.apps.gsa.speech.audio.an.run(SourceFile:2) +05-26 11:45:33.398 2534 2038 W ErrorProcessor: at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:458) +05-26 11:45:33.398 2534 2038 W ErrorProcessor: ... 10 more +05-26 11:45:33.398 2534 2038 I AudioController: internalShutdown +05-26 11:45:33.402 2534 2534 I MicroDetector: Keeping mic open: false +05-26 11:45:33.402 2534 2534 I MicroDetectionWorker: #onError(false) +05-26 11:45:33.404 2534 2034 I DeviceStateChecker: DeviceStateChecker cancelled +05-26 11:45:33.419 2482 2043 I PlaceInferenceEngine: No beacon scan available - ignoring candidates. +05-26 11:45:33.447 2482 6319 W ctxmgr : [AclManager]No 2 for (accnt=account#-517948760#, com.google.android.gms(10008):UserLocationProducer, vrsn=13280000, 0, 3pPkg = null , 3pMdlId = null , pid = 2482). Was: 3 for 1, account#-517948760# +05-26 11:45:33.468 2482 2508 I .gms.persisten: Background concurrent copying GC freed 164538(5MB) AllocSpace objects, 1(20KB) LOS objects, 41% free, 8MB/14MB, paused 8.204ms total 129.449ms +05-26 11:45:33.506 1876 2204 I GnssLocationProvider: WakeLock acquired by sendMessage(REPORT_SV_STATUS, 0, com.android.server.location.GnssLocationProvider$SvStatusInfo@41f985) +05-26 11:45:33.508 1876 1890 I GnssLocationProvider: WakeLock released by handleMessage(REPORT_SV_STATUS, 0, com.android.server.location.GnssLocationProvider$SvStatusInfo@41f985) +05-26 11:45:33.516 2482 2044 W ctxmgr : [AclManager]No 2 for (accnt=account#-517948760#, com.google.android.gms(10008):IndoorOutdoorProducer, vrsn=13280000, 0, 3pPkg = null , 3pMdlId = null , pid = 2482). Was: 3 for 57, account#-517948760# +05-26 11:45:33.520 1876 2204 I GnssLocationProvider: WakeLock acquired by sendMessage(REPORT_LOCATION, 1, Location[gps 37.421998,-122.084000 hAcc=20 et=?!? alt=5.0 vel=0.0 bear=0.0 vAcc=??? sAcc=??? bAcc=???]) +05-26 11:45:33.521 1876 1890 I GnssLocationProvider: WakeLock released by handleMessage(REPORT_LOCATION, 1, Location[gps 37.421998,-122.084000 hAcc=20 et=+2d5h0m53s716ms alt=5.0 vel=0.0 bear=0.0 vAcc=??? sAcc=??? bAcc=??? {Bundle[{satellites=0, maxCn0=0, meanCn0=0}]}]) +05-26 11:45:33.575 2482 6319 W ctxmgr : [AclManager]No 2 for (accnt=account#-517948760#, com.google.android.gms(10008):UserLocationProducer, vrsn=13280000, 0, 3pPkg = null , 3pMdlId = null , pid = 2482). Was: 3 for 1, account#-517948760# +05-26 11:45:33.591 2482 3056 I Places : ?: PlacesBleScanner start() with priority 2 +05-26 11:45:33.601 2482 3056 I Places : ?: PlacesBleScanner start() with priority 2 +05-26 11:45:33.602 2482 3056 I PlaceInferenceEngine: [anon] Changed inference mode: 1 +05-26 11:45:33.613 2482 3056 I Places : Converted 0 out of 1 WiFi scans +05-26 11:45:33.642 2482 3056 I Places : ?: PlacesBleScanner start() with priority 2 +05-26 11:45:33.658 2482 3056 I Places : ?: PlacesBleScanner start() with priority 2 +05-26 11:45:33.658 2482 3056 I PlaceInferenceEngine: [anon] Changed inference mode: 1 +05-26 11:45:33.662 2482 6319 I PlaceInferenceEngine: No beacon scan available - ignoring candidates. +05-26 11:45:33.681 2002 2002 W dex2oat : Accessing hidden method Landroid/content/res/Resources$Theme;->rebase()V (dark greylist, linking) +05-26 11:45:33.699 2482 3056 I Places : Converted 0 out of 1 WiFi scans +05-26 11:45:33.718 2482 2043 I PlaceInferenceEngine: No beacon scan available - ignoring candidates. +05-26 11:45:33.764 2482 6321 W ctxmgr : [AclManager]No 2 for (accnt=account#-517948760#, com.google.android.gms(10008):PlacesProducer, vrsn=13280000, 0, 3pPkg = null , 3pMdlId = null , pid = 2482). Was: 3 for 18, account#-517948760# +05-26 11:45:34.506 1876 2204 I GnssLocationProvider: WakeLock acquired by sendMessage(REPORT_SV_STATUS, 0, com.android.server.location.GnssLocationProvider$SvStatusInfo@b6301e7) +05-26 11:45:34.507 1876 1890 I GnssLocationProvider: WakeLock released by handleMessage(REPORT_SV_STATUS, 0, com.android.server.location.GnssLocationProvider$SvStatusInfo@b6301e7) +05-26 11:45:34.507 1876 2204 I GnssLocationProvider: WakeLock acquired by sendMessage(REPORT_LOCATION, 1, Location[gps 37.421998,-122.084000 hAcc=20 et=?!? alt=5.0 vel=0.0 bear=0.0 vAcc=??? sAcc=??? bAcc=???]) +05-26 11:45:34.507 1876 1890 I GnssLocationProvider: WakeLock released by handleMessage(REPORT_LOCATION, 1, Location[gps 37.421998,-122.084000 hAcc=20 et=+2d5h0m54s703ms alt=5.0 vel=0.0 bear=0.0 vAcc=??? sAcc=??? bAcc=??? {Bundle[{satellites=0, maxCn0=0, meanCn0=0}]}]) +05-26 11:45:34.534 2482 7043 W ctxmgr : [AclManager]No 2 for (accnt=account#-517948760#, com.google.android.gms(10008):UserLocationProducer, vrsn=13280000, 0, 3pPkg = null , 3pMdlId = null , pid = 2482). Was: 3 for 1, account#-517948760# +05-26 11:45:34.675 2002 2040 W dex2oat : Accessing hidden method Landroid/view/View;->setTransitionVisibility(I)V (dark greylist, linking) +05-26 11:45:34.788 2002 2041 W dex2oat : Accessing hidden method Landroid/view/View;->setTransitionVisibility(I)V (dark greylist, linking) +05-26 11:45:35.507 1876 2204 I GnssLocationProvider: WakeLock acquired by sendMessage(REPORT_SV_STATUS, 0, com.android.server.location.GnssLocationProvider$SvStatusInfo@3666194) +05-26 11:45:35.508 1876 1890 I GnssLocationProvider: WakeLock released by handleMessage(REPORT_SV_STATUS, 0, com.android.server.location.GnssLocationProvider$SvStatusInfo@3666194) +05-26 11:45:35.509 1876 2204 I GnssLocationProvider: WakeLock acquired by sendMessage(REPORT_LOCATION, 1, Location[gps 37.421998,-122.084000 hAcc=20 et=?!? alt=5.0 vel=0.0 bear=0.0 vAcc=??? sAcc=??? bAcc=???]) +05-26 11:45:35.510 1876 1890 I GnssLocationProvider: WakeLock released by handleMessage(REPORT_LOCATION, 1, Location[gps 37.421998,-122.084000 hAcc=20 et=+2d5h0m55s706ms alt=5.0 vel=0.0 bear=0.0 vAcc=??? sAcc=??? bAcc=??? {Bundle[{satellites=0, maxCn0=0, meanCn0=0}]}]) +05-26 11:45:35.522 1876 3809 I GnssLocationProvider: WakeLock acquired by sendMessage(SET_REQUEST, 0, com.android.server.location.GnssLocationProvider$GpsRequest@cad43d) +05-26 11:45:35.522 1876 2204 I GnssLocationProvider: WakeLock acquired by sendMessage(REPORT_SV_STATUS, 0, com.android.server.location.GnssLocationProvider$SvStatusInfo@7352432) +05-26 11:45:35.522 1876 1890 I GnssLocationProvider: WakeLock released by handleMessage(SET_REQUEST, 0, com.android.server.location.GnssLocationProvider$GpsRequest@cad43d) +05-26 11:45:35.524 1876 1890 I GnssLocationProvider: WakeLock released by handleMessage(REPORT_SV_STATUS, 0, com.android.server.location.GnssLocationProvider$SvStatusInfo@7352432) +05-26 11:45:35.534 2482 7043 W ctxmgr : [AclManager]No 2 for (accnt=account#-517948760#, com.google.android.gms(10008):UserLocationProducer, vrsn=13280000, 0, 3pPkg = null , 3pMdlId = null , pid = 2482). Was: 3 for 1, account#-517948760# +05-26 11:45:36.509 1876 2204 I GnssLocationProvider: WakeLock acquired by sendMessage(REPORT_SV_STATUS, 0, com.android.server.location.GnssLocationProvider$SvStatusInfo@353d583) +05-26 11:45:36.510 1876 1890 I GnssLocationProvider: WakeLock released by handleMessage(REPORT_SV_STATUS, 0, com.android.server.location.GnssLocationProvider$SvStatusInfo@353d583) +05-26 11:45:37.510 1876 2204 I GnssLocationProvider: WakeLock acquired by sendMessage(REPORT_SV_STATUS, 0, com.android.server.location.GnssLocationProvider$SvStatusInfo@c120300) +05-26 11:45:37.510 1876 1890 I GnssLocationProvider: WakeLock released by handleMessage(REPORT_SV_STATUS, 0, com.android.server.location.GnssLocationProvider$SvStatusInfo@c120300) +05-26 11:45:37.759 2002 2002 W dex2oat : Accessing hidden method Landroid/content/res/Resources$Theme;->rebase()V (dark greylist, linking) +05-26 11:45:37.797 2002 2002 I dex2oat : Explicit concurrent copying GC freed 51169(7MB) AllocSpace objects, 0(0B) LOS objects, 99% free, 1232B/1537KB, paused 882us total 4.299ms +05-26 11:45:37.952 2002 2002 I dex2oat : dex2oat took 5.306s (15.105s cpu) (threads: 4) arena alloc=2832B (2832B) java alloc=17KB (17616B) native alloc=11MB (12219416B) free=3MB (3509224B) +05-26 11:45:37.959 1738 4197 V installed: DexInv: --- END '/data/app/org.mozilla.fennec_aurora-0Iby3PCtt7bInD2AjVGM2A==/base.apk' (success) --- +05-26 11:45:37.961 1876 1914 D PackageManager: Instant App installer not found with android.intent.action.INSTALL_INSTANT_APP_PACKAGE +05-26 11:45:37.962 1876 1914 D PackageManager: Clear ephemeral installer activity +05-26 11:45:38.079 1876 1914 I system_server: Explicit concurrent copying GC freed 97404(5MB) AllocSpace objects, 27(1336KB) LOS objects, 18% free, 26MB/32MB, paused 1.291ms total 116.530ms +05-26 11:45:38.115 1738 4197 E : Couldn't opendir /data/app/vmdl1342695088.tmp: No such file or directory +05-26 11:45:38.116 1738 4197 E installd: Failed to delete /data/app/vmdl1342695088.tmp: No such file or directory +05-26 11:45:38.120 1876 1914 I ActivityManager: Force stopping org.mozilla.fennec_aurora appid=10092 user=0: pkg removed +05-26 11:45:38.129 1876 1891 W BroadcastQueue: Background execution not allowed: receiving Intent { act=android.intent.action.PACKAGE_REMOVED dat=package:org.mozilla.fennec_aurora flg=0x4000010 (has extras) } to com.android.musicfx/.Compatibility$Receiver +05-26 11:45:38.151 1876 1890 E system_server: No package ID 7f found for ID 0x7f08019f. +05-26 11:45:38.151 1876 1890 E system_server: No package ID 7f found for ID 0x7f130122. +05-26 11:45:38.151 1876 1890 E system_server: No package ID 7f found for ID 0x7f130122. +05-26 11:45:38.153 1876 1890 E system_server: No package ID 7f found for ID 0x7f08019d. +05-26 11:45:38.153 1876 1890 E system_server: No package ID 7f found for ID 0x7f130121. +05-26 11:45:38.153 1876 1890 E system_server: No package ID 7f found for ID 0x7f130121. +05-26 11:45:38.155 2054 2054 W ndroid.keychai: Unexpected CPU variant for X86 using defaults: x86 +05-26 11:45:38.158 1876 1893 I ActivityManager: Start proc 2054:com.android.keychain/1000 for service com.android.keychain/.KeyChainService +05-26 11:45:38.176 1876 3809 W BroadcastQueue: Background execution not allowed: receiving Intent { act=android.intent.action.PACKAGE_REMOVED dat=package:org.mozilla.fennec_aurora flg=0x4000010 (has extras) } to com.google.android.googlequicksearchbox/com.google.android.apps.gsa.googlequicksearchbox.GelStubAppWatcher +05-26 11:45:38.178 1876 1891 W BroadcastQueue: Background execution not allowed: receiving Intent { act=android.intent.action.PACKAGE_ADDED dat=package:org.mozilla.fennec_aurora flg=0x4000010 (has extras) } to com.android.musicfx/.Compatibility$Receiver +05-26 11:45:38.179 2534 2034 I EventLogSendingHelper: Sending log events. +05-26 11:45:38.215 2054 2054 I ndroid.keychai: The ClassLoaderContext is a special shared library. +05-26 11:45:38.217 1876 3809 W BroadcastQueue: Background execution not allowed: receiving Intent { act=android.intent.action.PACKAGE_ADDED dat=package:org.mozilla.fennec_aurora flg=0x4000010 (has extras) } to com.google.android.googlequicksearchbox/com.google.android.apps.gsa.googlequicksearchbox.GelStubAppWatcher +05-26 11:45:38.217 1876 1891 W BroadcastQueue: Background execution not allowed: receiving Intent { act=android.intent.action.PACKAGE_REPLACED dat=package:org.mozilla.fennec_aurora flg=0x4000010 (has extras) } to com.android.musicfx/.Compatibility$Receiver +05-26 11:45:38.218 1876 1891 W BroadcastQueue: Background execution not allowed: receiving Intent { act=android.intent.action.PACKAGE_REPLACED dat=package:org.mozilla.fennec_aurora flg=0x4000010 (has extras) } to com.google.android.apps.photos/.account.full.FetchAccountPropertiesAppUpgradeBroadcastReceiver +05-26 11:45:38.218 1876 1891 W BroadcastQueue: Background execution not allowed: receiving Intent { act=android.intent.action.PACKAGE_REPLACED dat=package:org.mozilla.fennec_aurora flg=0x4000010 (has extras) } to com.google.android.apps.photos/.account.full.SyncAccountsForLoginBroadcastReceiver +05-26 11:45:38.218 1876 1891 W BroadcastQueue: Background execution not allowed: receiving Intent { act=android.intent.action.PACKAGE_REPLACED dat=package:org.mozilla.fennec_aurora flg=0x4000010 (has extras) } to com.google.android.apps.photos/.experiments.phenotype.full.PhenotypeAppUpgradeBroadcastReceiver +05-26 11:45:38.218 1876 1891 W BroadcastQueue: Background execution not allowed: receiving Intent { act=android.intent.action.PACKAGE_REPLACED dat=package:org.mozilla.fennec_aurora flg=0x4000010 (has extras) } to com.google.android.apps.photos/.notificationchannels.AppUpdateBroadcastReceiver +05-26 11:45:38.241 1876 4916 W BroadcastQueue: Background execution not allowed: receiving Intent { act=android.intent.action.PACKAGE_REPLACED dat=package:org.mozilla.fennec_aurora flg=0x4000010 (has extras) } to com.google.android.googlequicksearchbox/com.google.android.apps.gsa.googlequicksearchbox.GelStubAppWatcher +05-26 11:45:38.264 2534 2034 I EventLogSendingHelper: Sending log events. +05-26 11:45:38.281 1876 1962 I InputReader: Reconfiguring input devices. changes=0x00000010 +05-26 11:45:38.296 7086 2100 I Auth : [SupervisedAccountIntentOperation] onHandleIntent(): android.intent.action.PACKAGE_ADDED +05-26 11:45:38.299 7086 2100 I Auth : [SupervisedAccountIntentOperation] This operation is disabled +05-26 11:45:38.309 7086 2100 I ChromeSync: [Sync,SyncIntentOperation] Handling the intent: Intent { act=android.intent.action.PACKAGE_ADDED dat=package:org.mozilla.fennec_aurora flg=0x4000010 cmp=com.google.android.gms/.chimera.GmsIntentOperationService (has extras) }. +05-26 11:45:38.339 1876 1962 I InputReader: Reconfiguring input devices. changes=0x00000010 +05-26 11:45:38.370 1876 1876 W Looper : Slow dispatch took 130ms main h=android.app.ActivityThread$H c=android.app.-$$Lambda$LoadedApk$ReceiverDispatcher$Args$_BumDX2UKsnxLVrE6UJsJZkotuA@a0fbbe1 m=0 +05-26 11:45:38.370 1876 1876 W Looper : Slow delivery took 235ms main h=android.app.ActivityThread$H c=android.app.-$$Lambda$LoadedApk$ReceiverDispatcher$Args$_BumDX2UKsnxLVrE6UJsJZkotuA@4f7bd06 m=0 +05-26 11:45:38.366 1876 1962 I InputReader: Reconfiguring input devices. changes=0x00000010 +05-26 11:45:38.375 7086 2094 W PeopleContactsSync: CP2 sync disabled by gservices. +05-26 11:45:38.405 2534 2534 I MicroDetectionWorker: #startMicroDetector [speakerMode: 0] +05-26 11:45:38.406 2534 2534 I AudioController: Using mInputStreamFactoryBuilder +05-26 11:45:38.406 2534 2534 I AudioController: Created new AudioSource +05-26 11:45:38.407 2534 2534 I MicroDetectionWorker: onReady +05-26 11:45:38.412 2131 2131 D CarrierSvcBindHelper: No carrier app for: 0 +05-26 11:45:38.426 2131 2131 D CarrierSvcBindHelper: No carrier app for: 0 +05-26 11:45:38.488 2534 2034 I MicroRecognitionRunner: Starting detection. +05-26 11:45:38.488 2534 2010 I MicrophoneInputStream: mic_starting SR : 16000 CC : 16 SO : 6 +05-26 11:45:38.492 1631 1682 E : Request requires android.permission.RECORD_AUDIO +05-26 11:45:38.492 1631 1682 E AudioPolicyIntefaceImpl: getInputForAttr permission denied: recording not allowed for uid 10039 pid 2534 +05-26 11:45:38.492 1631 1682 E AudioFlinger: createRecord() checkRecordThread_l failed +05-26 11:45:38.492 2534 2010 E IAudioFlinger: createRecord returned error -22 +05-26 11:45:38.492 2534 2010 E AudioRecord: AudioFlinger could not create record track, status: -22 +05-26 11:45:38.497 2534 2010 E AudioRecord-JNI: Error creating AudioRecord instance: initialization check failed with status -22. +05-26 11:45:38.499 2131 2131 D ImsResolver: maybeAddedImsService, packageName: org.mozilla.fennec_aurora +05-26 11:45:38.500 2534 2010 E android.media.AudioRecord: Error code -20 when initializing native AudioRecord object. +05-26 11:45:38.500 2534 2010 I MicrophoneInputStream: mic_started SR : 16000 CC : 16 SO : 6 +05-26 11:45:38.502 2534 2010 E ActivityThread: Failed to find provider info for com.google.android.apps.gsa.testing.ui.audio.recorded +05-26 11:45:38.502 2534 2534 I MicroDetectionWorker: onReady +05-26 11:45:38.503 2131 2131 D CarrierConfigLoader: mHandler: 9 phoneId: 0 +05-26 11:45:38.506 2534 2010 I MicrophoneInputStream: mic_close SR : 16000 CC : 16 SO : 6 +05-26 11:45:38.515 2534 2034 I MicroRecognitionRunner: Detection finished +05-26 11:45:38.515 2534 2034 W ErrorReporter: reportError [type: 211, code: 524300]: Error reading from input stream +05-26 11:45:38.516 2534 2954 I MicroRecognitionRunner: Stopping hotword detection. +05-26 11:45:38.516 1876 2204 I GnssLocationProvider: WakeLock acquired by sendMessage(REPORT_SV_STATUS, 0, com.android.server.location.GnssLocationProvider$SvStatusInfo@3c2a392) +05-26 11:45:38.517 2534 2034 W ErrorProcessor: onFatalError, processing error from engine(4) +05-26 11:45:38.517 2534 2034 W ErrorProcessor: com.google.android.apps.gsa.shared.speech.b.g: Error reading from input stream +05-26 11:45:38.517 2534 2034 W ErrorProcessor: at com.google.android.apps.gsa.staticplugins.microdetection.d.k.a(SourceFile:91) +05-26 11:45:38.517 2534 2034 W ErrorProcessor: at com.google.android.apps.gsa.staticplugins.microdetection.d.l.run(Unknown Source:14) +05-26 11:45:38.517 2534 2034 W ErrorProcessor: at com.google.android.libraries.gsa.runner.a.a.b(SourceFile:32) +05-26 11:45:38.517 2534 2034 W ErrorProcessor: at com.google.android.libraries.gsa.runner.a.c.call(Unknown Source:4) +05-26 11:45:38.517 2534 2034 W ErrorProcessor: at java.util.concurrent.FutureTask.run(FutureTask.java:266) +05-26 11:45:38.517 2534 2034 W ErrorProcessor: at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:458) +05-26 11:45:38.517 2534 2034 W ErrorProcessor: at java.util.concurrent.FutureTask.run(FutureTask.java:266) +05-26 11:45:38.517 2534 2034 W ErrorProcessor: at com.google.android.apps.gsa.shared.util.concurrent.b.g.run(Unknown Source:4) +05-26 11:45:38.517 2534 2034 W ErrorProcessor: at com.google.android.apps.gsa.shared.util.concurrent.b.aw.run(SourceFile:4) +05-26 11:45:38.517 2534 2034 W ErrorProcessor: at com.google.android.apps.gsa.shared.util.concurrent.b.aw.run(SourceFile:4) +05-26 11:45:38.517 2534 2034 W ErrorProcessor: at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1167) +05-26 11:45:38.517 2534 2034 W ErrorProcessor: at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:641) +05-26 11:45:38.517 2534 2034 W ErrorProcessor: at java.lang.Thread.run(Thread.java:764) +05-26 11:45:38.517 2534 2034 W ErrorProcessor: at com.google.android.apps.gsa.shared.util.concurrent.b.i.run(SourceFile:6) +05-26 11:45:38.517 2534 2034 W ErrorProcessor: Caused by: com.google.android.apps.gsa.shared.exception.GsaIOException: Error code: 393238 | Buffer overflow, no available space. +05-26 11:45:38.517 2534 2034 W ErrorProcessor: at com.google.android.apps.gsa.speech.audio.Tee.j(SourceFile:103) +05-26 11:45:38.517 2534 2034 W ErrorProcessor: at com.google.android.apps.gsa.speech.audio.au.read(SourceFile:2) +05-26 11:45:38.517 2534 2034 W ErrorProcessor: at java.io.InputStream.read(InputStream.java:101) +05-26 11:45:38.517 2534 2034 W ErrorProcessor: at com.google.android.apps.gsa.speech.audio.ao.run(SourceFile:17) +05-26 11:45:38.517 2534 2034 W ErrorProcessor: at com.google.android.apps.gsa.speech.audio.an.run(SourceFile:2) +05-26 11:45:38.517 2534 2034 W ErrorProcessor: at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:458) +05-26 11:45:38.517 2534 2034 W ErrorProcessor: ... 10 more +05-26 11:45:38.517 2534 2034 I AudioController: internalShutdown +05-26 11:45:38.531 2534 2534 I MicroDetector: Keeping mic open: false +05-26 11:45:38.531 2534 2534 I MicroDetectionWorker: #onError(false) +05-26 11:45:38.531 2534 2038 I DeviceStateChecker: DeviceStateChecker cancelled +05-26 11:45:38.590 7086 2099 W gle.android.gm: Long monitor contention with owner [dko] processing com.google.android.gms.growth.service.PackageActionReceiver for action android.intent.action.PACKAGE_REMOVED (2077) at boolean android.os.BinderProxy.transactNative(int, android.os.Parcel, android.os.Parcel, int)(Binder.java:-2) waiters=0 in void dkr.run() for 276ms +05-26 11:45:38.714 7086 7246 I Icing : IndexChimeraService.getServiceInterface callingPackage=com.google.android.gms componentName=AppsCorpus serviceId=36 +05-26 11:45:38.720 7086 7237 I Icing : IndexChimeraService.getServiceInterface callingPackage=com.google.android.gms componentName=AppsCorpus serviceId=32 +05-26 11:45:38.866 1876 1876 W system_server: Long monitor contention with owner android.bg (1890) at android.content.res.Resources android.app.ResourcesManager.getOrCreateResources(android.os.IBinder, android.content.res.ResourcesKey, java.lang.ClassLoader)(ResourcesManager.java:736) waiters=0 in android.content.res.Resources android.app.ResourcesManager.getOrCreateResources(android.os.IBinder, android.content.res.ResourcesKey, java.lang.ClassLoader) for 110ms +05-26 11:45:38.869 7086 7256 I Icing : Usage reports ok 1, Failed Usage reports 0, indexed 0, rejected 0, imm upload false +05-26 11:45:38.889 7086 7256 I Icing : Usage reports ok 0, Failed Usage reports 0, indexed 0, rejected 0, imm upload false +05-26 11:45:38.952 1876 1876 W Looper : Slow dispatch took 532ms main h=android.app.ActivityThread$H c=android.app.-$$Lambda$LoadedApk$ReceiverDispatcher$Args$_BumDX2UKsnxLVrE6UJsJZkotuA@4adfab m=0 +05-26 11:45:38.963 1876 1876 I Telecom : DefaultDialerCache: Refreshing default dialer for user 0: now com.google.android.dialer: DDC.oR@AYE +05-26 11:45:38.977 1876 1892 D AutofillUI: destroySaveUiUiThread(): already destroyed +05-26 11:45:38.982 1876 1890 D AutofillManagerServiceImpl: Set component for user 0 as AutofillServiceInfo[ServiceInfo{d54b1a1 com.google.android.gms.autofill.service.AutofillService}, settings:com.google.android.gms.autofill.ui.AutofillSettingsActivity, hasCompatPckgs:false] +05-26 11:45:39.008 1876 1890 I GnssLocationProvider: WakeLock released by handleMessage(REPORT_SV_STATUS, 0, com.android.server.location.GnssLocationProvider$SvStatusInfo@3c2a392) +05-26 11:45:39.009 7086 7246 I Icing : IndexChimeraService.getServiceInterface callingPackage=com.google.android.gms componentName=AppsCorpus serviceId=32 +05-26 11:45:39.010 7086 7237 I Icing : IndexChimeraService.getServiceInterface callingPackage=com.google.android.gms componentName=AppsCorpus serviceId=36 +05-26 11:45:39.019 2482 6321 W ctxmgr : [AclManager]No 2 for (accnt=account#-517948760#, com.google.android.gms(10008):IndoorOutdoorProducer, vrsn=13280000, 0, 3pPkg = null , 3pMdlId = null , pid = 2482). Was: 3 for 57, account#-517948760# +05-26 11:45:39.050 7086 7256 I Icing : Usage reports ok 0, Failed Usage reports 0, indexed 0, rejected 0, imm upload false +05-26 11:45:39.066 7086 7256 I Icing : Usage reports ok 0, Failed Usage reports 0, indexed 0, rejected 0, imm upload false +05-26 11:45:39.509 1876 2204 I GnssLocationProvider: WakeLock acquired by sendMessage(REPORT_SV_STATUS, 0, com.android.server.location.GnssLocationProvider$SvStatusInfo@eb4dfc6) +05-26 11:45:39.510 1876 1890 I GnssLocationProvider: WakeLock released by handleMessage(REPORT_SV_STATUS, 0, com.android.server.location.GnssLocationProvider$SvStatusInfo@eb4dfc6) +05-26 11:45:39.943 7086 11609 I Icing : Indexing com.google.android.gms-apps from com.google.android.gms +05-26 11:45:40.042 7086 11609 I Icing : Indexing com.google.android.gms-internal.3p:MobileApplication from com.google.android.gms +05-26 11:45:40.052 7086 11609 I Icing : Indexing done com.google.android.gms-apps +05-26 11:45:40.056 7086 11609 I Icing : Indexing done com.google.android.gms-internal.3p:MobileApplication +05-26 11:45:40.109 7086 11609 I Icing : Indexing com.google.android.gms-apps from com.google.android.gms +05-26 11:45:40.112 7086 11609 I Icing : Indexing done com.google.android.gms-apps +05-26 11:45:40.123 2000 2000 I IcingNotification: Received intent: Intent { act=com.google.android.gms.icing.IME_NOTIFICATION flg=0x10 pkg=com.google.android.inputmethod.latin (has extras) } +05-26 11:45:40.126 2000 2000 I IcingNotification: Received intent: Intent { act=com.google.android.gms.icing.IME_NOTIFICATION flg=0x10 pkg=com.google.android.inputmethod.latin (has extras) } +05-26 11:45:40.510 1876 2204 I GnssLocationProvider: WakeLock acquired by sendMessage(REPORT_SV_STATUS, 0, com.android.server.location.GnssLocationProvider$SvStatusInfo@855cb87) +05-26 11:45:40.511 1876 1890 I GnssLocationProvider: WakeLock released by handleMessage(REPORT_SV_STATUS, 0, com.android.server.location.GnssLocationProvider$SvStatusInfo@855cb87) +05-26 11:45:40.936 1876 1888 I ActivityManager: Force stopping org.mozilla.fennec_aurora appid=10092 user=0: clear data +05-26 11:45:40.937 1876 1891 I ActivityManager: Force stopping org.mozilla.fennec_aurora appid=10092 user=-1: clearApplicationUserData +05-26 11:45:40.941 1876 1876 W Looper : Drained +05-26 11:45:40.946 1876 1888 D ZenLog : config: removeAutomaticZenRules,ZenModeConfig[user=0,allowAlarms=true,allowMedia=true,allowSystem=false,allowReminders=false,allowEvents=false,allowCalls=true,allowRepeatCallers=true,allowMessages=false,allowCallsFrom=stars,allowMessagesFrom=contacts,suppressedVisualEffects=511,areChannelsBypassingDnd=false,automaticRules={EVENTS_DEFAULT_RULE=ZenRule[enabled=false,snoozing=false,name=Event,zenMode=ZEN_MODE_IMPORTANT_INTERRUPTIONS,conditionId=condition://android/event?userId=-10000&calendar=&reply=1,condition=Condition[id=condition://android/event?userId=-10000&calendar=&reply=1,summary=...,line1=...,line2=...,icon=0,state=STATE_FALSE,flags=2],component=ComponentInfo{android/com.android.server.notification.EventConditionProvider},id=EVENTS_DEFAULT_RULE,creationTime=1587308662810,enabler=null], EVERY_NIGHT_DEFAULT_RULE=ZenRule[enabled=false,snoozing=false,name=Sleeping,zenMode=ZEN_MODE_IMPORTANT_INTERRUPTIONS,conditionId=condition://android/schedule?days=1.2.3.4.5.6.7&start=22.0&end=7.0&exitAtAlarm=true,condition=Condition[id=condition://android/schedule?days=1.2.3.4.5.6.7&start=22.0&end=7.0&exitAtAlarm=true,summary=...,line1=...,line2=...,icon=0,state=STATE_FALSE,flags=2],component=ComponentInfo{android/com.android.server.notification.ScheduleConditionProvider},id=EVERY_NIGHT_DEFAULT_RULE,creationTime=1587308662810,enabler=null]},manualRule=null],Diff[] +05-26 11:45:40.946 1876 1888 I ConditionProviders: Disallowing condition provider org.mozilla.fennec_aurora +05-26 11:45:40.946 1876 1876 D ZenLog : set_zen_mode: off,removeAutomaticZenRules +05-26 11:45:40.971 1739 1739 I keystore: clear_uid 10092 +05-26 11:45:41.009 2482 2482 I GeofencerStateMachine: removeGeofences: removeRequest=RemoveGeofencingRequest[REMOVE_ALL packageName=org.mozilla.fennec_aurora] +05-26 11:45:41.010 2131 2131 D CarrierSvcBindHelper: No carrier app for: 0 +05-26 11:45:41.011 1876 1890 E system_server: No package ID 7f found for ID 0x7f08019f. +05-26 11:45:41.011 1876 1890 E system_server: No package ID 7f found for ID 0x7f130122. +05-26 11:45:41.011 1876 1890 E system_server: No package ID 7f found for ID 0x7f130122. +05-26 11:45:41.011 1876 1890 E system_server: No package ID 7f found for ID 0x7f08019d. +05-26 11:45:41.011 1876 1890 E system_server: No package ID 7f found for ID 0x7f130121. +05-26 11:45:41.011 1876 1890 E system_server: No package ID 7f found for ID 0x7f130121. +05-26 11:45:41.020 2116 2116 W oid.documentsu: Unexpected CPU variant for X86 using defaults: x86 +05-26 11:45:41.023 1876 1893 I ActivityManager: Start proc 2116:com.android.documentsui/u0a37 for broadcast com.android.documentsui/.PackageReceiver +05-26 11:45:41.031 1876 1876 I GnssLocationProvider: WakeLock acquired by sendMessage(SET_REQUEST, 0, com.android.server.location.GnssLocationProvider$GpsRequest@8410e20) +05-26 11:45:41.032 1876 1890 I GnssLocationProvider: WakeLock released by handleMessage(SET_REQUEST, 0, com.android.server.location.GnssLocationProvider$GpsRequest@8410e20) +05-26 11:45:41.034 1560 1573 D vold : Remounting 10092 as mode read +05-26 11:45:41.066 1560 1573 D vold : Remounting 10092 as mode write +05-26 11:45:41.067 1876 1876 I GnssLocationProvider: WakeLock acquired by sendMessage(SET_REQUEST, 0, com.android.server.location.GnssLocationProvider$GpsRequest@902a47f) +05-26 11:45:41.068 1876 1890 I GnssLocationProvider: WakeLock released by handleMessage(SET_REQUEST, 0, com.android.server.location.GnssLocationProvider$GpsRequest@902a47f) +05-26 11:45:41.073 2116 2116 I oid.documentsu: The ClassLoaderContext is a special shared library. +05-26 11:45:41.158 2171 2171 W oid.apps.photo: Unexpected CPU variant for X86 using defaults: x86 +05-26 11:45:41.160 1876 1893 I ActivityManager: Start proc 2171:com.google.android.apps.photos/u0a61 for broadcast com.google.android.apps.photos/com.google.android.libraries.social.mediastoresync.reset.impl.MediaStoreClearedReceiver +05-26 11:45:41.178 1876 3809 I ActivityManager: Force stopping org.mozilla.fennec_aurora appid=10092 user=-1: set debug app +05-26 11:45:41.214 1876 1893 I ActivityManager: Start proc 2211:com.google.android.apps.docs/u0a69 for content provider com.google.android.apps.docs/.storagebackend.StorageBackendContentProvider +05-26 11:45:41.215 2211 2211 W droid.apps.doc: Unexpected CPU variant for X86 using defaults: x86 +05-26 11:45:41.221 2171 2171 I oid.apps.photo: The ClassLoaderContext is a special shared library. +05-26 11:45:41.226 1876 1888 I ActivityManager: START u0 {flg=0x10000000 cmp=org.mozilla.fennec_aurora/org.mozilla.fenix.HomeActivity (has extras)} from uid 0 +05-26 11:45:41.263 1876 2453 I ActivityManager: Killing 21133:com.google.android.dialer/u0a28 (adj 906): empty for 3589s +05-26 11:45:41.264 1876 1894 W libprocessgroup: kill(-21133, 9) failed: No such process +05-26 11:45:41.278 2211 2211 I droid.apps.doc: The ClassLoaderContext is a special shared library. +05-26 11:45:41.286 1623 5774 D gralloc_ranchu: gralloc_alloc: Creating ashmem region of size 9334784 +05-26 11:45:41.290 1876 1893 I ActivityManager: Start proc 2233:org.mozilla.fennec_aurora/u0a92 for activity org.mozilla.fennec_aurora/org.mozilla.fenix.HomeActivity +05-26 11:45:41.292 2211 2211 I droid.apps.doc: The ClassLoaderContext is a special shared library. +05-26 11:45:41.295 2233 2233 W a.fennec_auror: Unexpected CPU variant for X86 using defaults: x86 +05-26 11:45:41.301 1733 2119 D : HostConnection::get() New Host Connection established 0xede98140, tid 2119 +05-26 11:45:41.303 1876 1940 D : HostConnection::get() New Host Connection established 0xd3ab0cc0, tid 1940 +05-26 11:45:41.305 1876 1894 W libprocessgroup: kill(-21133, 9) failed: No such process +05-26 11:45:41.324 1734 1734 I Zygote : Process 21133 exited due to signal (9) +05-26 11:45:41.344 1876 1894 W libprocessgroup: kill(-21133, 9) failed: No such process +05-26 11:45:41.344 1876 1894 I libprocessgroup: Successfully killed process cgroup uid 10028 pid 21133 in 80ms +05-26 11:45:41.379 2233 2233 W ActivityThread: Application org.mozilla.fennec_aurora can be debugged on port 8100... +05-26 11:45:41.382 2233 2233 I a.fennec_auror: The ClassLoaderContext is a special shared library. +05-26 11:45:41.408 1904 1911 D gralloc_ranchu: gralloc_unregister_buffer: exiting HostConnection (is buffer-handling thread) +05-26 11:45:41.409 1904 1911 D : HostConnection::get() New Host Connection established 0xe6d43140, tid 1911 +05-26 11:45:41.409 1904 1911 D gralloc_ranchu: gralloc_unregister_buffer: exiting HostConnection (is buffer-handling thread) +05-26 11:45:41.410 1904 1911 D : HostConnection::get() New Host Connection established 0xe6d43140, tid 1911 +05-26 11:45:41.410 1904 1911 D gralloc_ranchu: gralloc_unregister_buffer: exiting HostConnection (is buffer-handling thread) +05-26 11:45:41.410 1904 1911 D : HostConnection::get() New Host Connection established 0xe6d43140, tid 1911 +05-26 11:45:41.410 1904 1911 D gralloc_ranchu: gralloc_unregister_buffer: exiting HostConnection (is buffer-handling thread) +05-26 11:45:41.412 2534 2825 D EGL_emulation: eglMakeCurrent: 0xe8b06aa0: ver 3 0 (tinfo 0xe8b03b50) +05-26 11:45:41.415 1733 1749 D : HostConnection::get() New Host Connection established 0xede98980, tid 1749 +05-26 11:45:41.415 1904 1911 D : HostConnection::get() New Host Connection established 0xe6d43140, tid 1911 +05-26 11:45:41.415 1733 1749 D gralloc_ranchu: gralloc_unregister_buffer: exiting HostConnection (is buffer-handling thread) +05-26 11:45:41.415 2012 2265 D EGL_emulation: eglMakeCurrent: 0xe8b05420: ver 3 0 (tinfo 0xe8b03980) +05-26 11:45:41.416 1733 1749 D : HostConnection::get() New Host Connection established 0xede98980, tid 1749 +05-26 11:45:41.416 1733 1749 D gralloc_ranchu: gralloc_unregister_buffer: exiting HostConnection (is buffer-handling thread) +05-26 11:45:41.416 1733 1749 D : HostConnection::get() New Host Connection established 0xede98980, tid 1749 +05-26 11:45:41.417 1733 1749 D gralloc_ranchu: gralloc_unregister_buffer: exiting HostConnection (is buffer-handling thread) +05-26 11:45:41.417 1733 1749 D : HostConnection::get() New Host Connection established 0xede98980, tid 1749 +05-26 11:45:41.417 1733 1749 D gralloc_ranchu: gralloc_unregister_buffer: exiting HostConnection (is buffer-handling thread) +05-26 11:45:41.426 2012 2265 D EGL_emulation: eglMakeCurrent: 0xe8b05420: ver 3 0 (tinfo 0xe8b03980) +05-26 11:45:41.429 2499 2681 D EGL_emulation: eglMakeCurrent: 0xd35359e0: ver 3 0 (tinfo 0xd353b4f0) +05-26 11:45:41.431 1733 2119 D gralloc_ranchu: gralloc_unregister_buffer: exiting HostConnection (is buffer-handling thread) +05-26 11:45:41.431 1733 2119 D : HostConnection::get() New Host Connection established 0xede98140, tid 2119 +05-26 11:45:41.431 1733 2119 D gralloc_ranchu: gralloc_unregister_buffer: exiting HostConnection (is buffer-handling thread) +05-26 11:45:41.432 1733 2119 D : HostConnection::get() New Host Connection established 0xede98140, tid 2119 +05-26 11:45:41.432 1733 2119 D gralloc_ranchu: gralloc_unregister_buffer: exiting HostConnection (is buffer-handling thread) +05-26 11:45:41.432 1733 2119 D : HostConnection::get() New Host Connection established 0xede98140, tid 2119 +05-26 11:45:41.433 1733 2119 D gralloc_ranchu: gralloc_unregister_buffer: exiting HostConnection (is buffer-handling thread) +05-26 11:45:41.435 2012 2265 D EGL_emulation: eglMakeCurrent: 0xe8b05420: ver 3 0 (tinfo 0xe8b03980) +05-26 11:45:41.479 2012 2265 I chatty : uid=10024(com.android.systemui) RenderThread identical 5 lines +05-26 11:45:41.486 2012 2265 D EGL_emulation: eglMakeCurrent: 0xe8b05420: ver 3 0 (tinfo 0xe8b03980) +05-26 11:45:41.496 2233 2233 D FirebaseApp: com.google.firebase.auth.FirebaseAuth is not linked. Skipping initialization. +05-26 11:45:41.496 2233 2233 D FirebaseApp: com.google.firebase.crash.FirebaseCrash is not linked. Skipping initialization. +05-26 11:45:41.496 2233 2233 I FirebaseInitProvider: FirebaseApp initialization successful +05-26 11:45:41.496 2012 2265 D EGL_emulation: eglMakeCurrent: 0xe8b05420: ver 3 0 (tinfo 0xe8b03980) +05-26 11:45:41.505 2012 2265 D EGL_emulation: eglMakeCurrent: 0xe8b05420: ver 3 0 (tinfo 0xe8b03980) +05-26 11:45:41.516 1876 2204 I GnssLocationProvider: WakeLock acquired by sendMessage(REPORT_SV_STATUS, 0, com.android.server.location.GnssLocationProvider$SvStatusInfo@c8be314) +05-26 11:45:41.517 1876 1890 I GnssLocationProvider: WakeLock released by handleMessage(REPORT_SV_STATUS, 0, com.android.server.location.GnssLocationProvider$SvStatusInfo@c8be314) +05-26 11:45:41.521 2012 2265 D EGL_emulation: eglMakeCurrent: 0xe8b05420: ver 3 0 (tinfo 0xe8b03980) +05-26 11:45:41.533 2012 2265 I chatty : uid=10024(com.android.systemui) RenderThread identical 2 lines +05-26 11:45:41.538 2012 2265 D EGL_emulation: eglMakeCurrent: 0xe8b05420: ver 3 0 (tinfo 0xe8b03980) +05-26 11:45:41.541 2233 2282 W a.fennec_auror: Accessing hidden method Landroid/content/res/Resources$Theme;->rebase()V (dark greylist, linking) +05-26 11:45:41.573 2233 2233 D FennecProfile: profiles.ini: false +05-26 11:45:41.573 2233 2233 D FennecProfile: No profiles found +05-26 11:45:41.580 1876 16736 I ActivityManager: Killing 12513:com.google.android.partnersetup/u0a23 (adj 906): empty for 2263s +05-26 11:45:41.580 1876 1894 W libprocessgroup: kill(-12513, 9) failed: No such process +05-26 11:45:41.580 2233 2233 D FennecMigrator: No migrations to run. Fennec install - false. +05-26 11:45:41.590 7086 2094 I LocationSettingsChecker: Removing dialog suppression flag for package org.mozilla.fennec_aurora +05-26 11:45:41.592 2233 2233 D FenixApplication: Initializing Glean (uploadEnabled=true, isFennec=true) +05-26 11:45:41.610 7086 11609 I Icing : doRemovePackageData org.mozilla.fennec_aurora +05-26 11:45:41.625 1876 1894 W libprocessgroup: kill(-12513, 9) failed: No such process +05-26 11:45:41.635 1734 1734 I Zygote : Process 12513 exited due to signal (9) +05-26 11:45:41.647 2233 2306 D RustNativeSupport: findMegazordLibraryName(viaduct, 0.58.1 +05-26 11:45:41.647 2233 2306 D RustNativeSupport: lib in use: none +05-26 11:45:41.647 2233 2306 D RustNativeSupport: lib configured: megazord +05-26 11:45:41.647 2233 2306 D RustNativeSupport: lib version configured: 0.58.1 +05-26 11:45:41.647 2233 2306 D RustNativeSupport: settled on megazord +05-26 11:45:41.668 1876 1894 W libprocessgroup: kill(-12513, 9) failed: No such process +05-26 11:45:41.668 1876 1894 I libprocessgroup: Successfully killed process cgroup uid 10023 pid 12513 in 87ms +05-26 11:45:41.708 2211 2321 I GAv4 : Google Analytics 10.2.98 is starting up. To enable debug logging on a device run: +05-26 11:45:41.708 2211 2321 I GAv4 : adb shell setprop log.tag.GAv4 DEBUG +05-26 11:45:41.708 2211 2321 I GAv4 : adb logcat -s GAv4 +05-26 11:45:41.723 2211 2325 W GAv4 : AnalyticsReceiver is not registered or is disabled. Register the receiver for reliable dispatching on non-Google Play devices. See http://goo.gl/8Rd3yj for instructions. +05-26 11:45:41.742 2233 2233 W ActivityThread: ClassLoader.loadClass: The class loader returned by Thread.getContextClassLoader() may fail for processes that host multiple applications. You should explicitly specify a context class loader. For example: Thread.setContextClassLoader(getClass().getClassLoader()); +05-26 11:45:41.756 2233 2233 I GeckoRuntime: Adding debug configuration from: /data/local/tmp/org.mozilla.fennec_aurora-geckoview-config.yaml +05-26 11:45:41.756 2233 2233 D GeckoDebugConfig: Adding environment variables from debug config: {MOZ_CRASHREPORTER=1, MOZ_CRASHREPORTER_NO_REPORT=1, MOZ_CRASHREPORTER_SHUTDOWN=1} +05-26 11:45:41.757 2233 2233 D GeckoDebugConfig: Adding arguments from debug config: [-marionette, -profile, /mnt/sdcard/org.mozilla.fennec_aurora-geckodriver-profile] +05-26 11:45:41.757 2233 2233 D GeckoThread: State changed to LAUNCHED +05-26 11:45:41.758 2233 2328 I GeckoThread: preparing to run Gecko +05-26 11:45:41.760 2233 2282 I FA : Collection disabled with firebase_analytics_collection_enabled=0 +05-26 11:45:41.760 2233 2328 D GeckoThread: env var: MOZ_CRASHREPORTER=1 +05-26 11:45:41.760 2233 2328 D GeckoThread: env var: MOZ_CRASHREPORTER_NO_REPORT=1 +05-26 11:45:41.760 2233 2328 D GeckoThread: env var: MOZ_CRASHREPORTER_SHUTDOWN=1 +05-26 11:45:41.768 2211 2211 W FieldDefinition: Ignoring isIndexed constraint as field also has uniqueness constraint (on just this field, and therefore SQLite will have to create an index on that. For field: com.google.android.apps.docs.database.common.FieldDefinition$a@caa0d29 +05-26 11:45:41.774 2233 2282 I FA : App measurement is starting up, version: 12780 +05-26 11:45:41.774 2233 2282 I FA : To enable debug logging run: adb shell setprop log.tag.FA VERBOSE +05-26 11:45:41.777 2233 2282 I FA : To enable faster debug mode event logging run: +05-26 11:45:41.777 2233 2282 I FA : adb shell setprop debug.firebase.analytics.app org.mozilla.fennec_aurora +05-26 11:45:41.781 2211 2325 W GAv4 : CampaignTrackingReceiver is not registered, not exported or is disabled. Installation campaign tracking is not possible. See http://goo.gl/8Rd3yj for instructions. +05-26 11:45:41.784 2233 2233 D GeckoRuntime: Lifecycle: onCreate +05-26 11:45:41.788 2211 2325 W GAv4 : AnalyticsService not registered in the app manifest. Hits might not be delivered reliably. See http://goo.gl/8Rd3yj for instructions. +05-26 11:45:41.836 2211 2228 W droid.apps.doc: Long wait of 3.298ms for Thread[14,tid=2325,Suspended,Thread*=0xe8b5c000,peer=0x1354c3e0,"measurement-1"] suspension! +05-26 11:45:41.904 2233 2306 D RustNativeSupport: findMegazordLibraryName(rustlog, 0.58.1 +05-26 11:45:41.904 2233 2306 D RustNativeSupport: lib in use: none +05-26 11:45:41.904 2233 2306 D RustNativeSupport: lib configured: megazord +05-26 11:45:41.904 2233 2306 D RustNativeSupport: lib version configured: 0.58.1 +05-26 11:45:41.904 2233 2306 D RustNativeSupport: settled on megazord +05-26 11:45:41.904 2233 2295 D libglean_ffi: glean_ffi: Android logging should be hooked up! +05-26 11:45:41.905 2233 2295 I glean/Glean: Registering pings for mozilla.telemetry.glean.GleanMetrics.Pings +05-26 11:45:41.906 2233 2295 I libglean_ffi: glean_core: Creating new Glean +05-26 11:45:41.906 2233 2295 D libglean_ffi: glean_core::database: Database path: "/data/user/0/org.mozilla.fennec_aurora/glean_data/db" +05-26 11:45:41.907 2233 2295 I libglean_ffi: glean_core::database: Database initialized +05-26 11:45:41.907 2233 2328 D GeckoThread: State changed to MOZGLUE_READY +05-26 11:45:41.912 2233 2306 I rc_log_ffi::ios: rc_log adapter initialized! +05-26 11:45:41.915 2233 2233 D GleanMetricsService: Enabling Glean. +05-26 11:45:41.917 2233 2233 I AdjustMetricsService: No adjust token defined +05-26 11:45:41.918 2233 2233 D PushConfig: Creating push configuration for autopush. +05-26 11:45:41.927 2233 2233 I App : AutoPushFeature is configured, initializing it... +05-26 11:45:41.928 2233 2233 I AutoPushFeature: Checking validity of push subscriptions. +05-26 11:45:41.932 2233 2233 D FennecProfile: profiles.ini: false +05-26 11:45:41.932 2233 2233 D FennecProfile: No profiles found +05-26 11:45:41.942 2233 2328 W Settings: Setting animator_duration_scale has moved from android.provider.Settings.System to android.provider.Settings.Global, returning read-only global URI. +05-26 11:45:41.944 2233 2328 E GeckoLibLoad: Load sqlite start +05-26 11:45:41.980 2233 2306 W [WARNING][Leanplum]: [com.leanplum.internal.ActionManager::getLocationManager::8]: Geofencing support requires leanplum-location module and Google Play Services v8.1 and higher. +05-26 11:45:41.980 2233 2306 W [WARNING][Leanplum]: Add this to your build.gradle file: +05-26 11:45:41.980 2233 2306 W [WARNING][Leanplum]: implementation 'com.google.android.gms:play-services-location:8.3.0+' +05-26 11:45:41.980 2233 2306 W [WARNING][Leanplum]: implementation 'com.leanplum:leanplum-location:+' +05-26 11:45:41.986 2233 2328 E GeckoLibLoad: Load sqlite done +05-26 11:45:41.986 2233 2328 E GeckoLibLoad: Load nss start +05-26 11:45:41.986 2233 2328 E GeckoLibLoad: Load nss done +05-26 11:45:41.991 2233 2295 I libglean_ffi: glean_ffi: Glean initialized +05-26 11:45:42.007 2233 2306 I [INFO][Leanplum]: [com.leanplum.monitoring.ExceptionHandler::setContext::6]: LeanplumExceptionHandler could not initialize Exception Reporting.This is expected if you have not included the leanplum-monitoring module +05-26 11:45:42.049 2116 2158 I ProvidersCache: Provider returned no roots. Possibly naughty: com.google.android.apps.docs.storage +05-26 11:45:42.057 2233 2233 D FennecMigrator: This is not a Fennec installation. No migration needed. +05-26 11:45:42.070 2233 2270 I a.fennec_auror: Background concurrent copying GC freed 13546(2032KB) AllocSpace objects, 4(208KB) LOS objects, 49% free, 2MB/4MB, paused 1.316ms total 192.952ms +05-26 11:45:42.101 2233 2233 W a.fennec_auror: Accessing hidden method Landroid/content/res/Resources$Theme;->rebase()V (dark greylist, reflection) +05-26 11:45:42.105 2233 2233 I ResourcesCompat: Failed to retrieve rebase() method +05-26 11:45:42.105 2233 2233 I ResourcesCompat: java.lang.NoSuchMethodException: rebase [] +05-26 11:45:42.105 2233 2233 I ResourcesCompat: at java.lang.Class.getMethod(Class.java:2068) +05-26 11:45:42.105 2233 2233 I ResourcesCompat: at java.lang.Class.getDeclaredMethod(Class.java:2047) +05-26 11:45:42.105 2233 2233 I ResourcesCompat: at androidx.core.content.res.ResourcesCompat$ThemeCompat$ImplApi23.rebase(ResourcesCompat.java:3) +05-26 11:45:42.105 2233 2233 I ResourcesCompat: at androidx.appcompat.app.AppCompatActivity.attachBaseContext(AppCompatActivity.java:80) +05-26 11:45:42.105 2233 2233 I ResourcesCompat: at mozilla.components.support.locale.LocaleAwareAppCompatActivity.attachBaseContext(LocaleAwareAppCompatActivity.kt:2) +05-26 11:45:42.105 2233 2233 I ResourcesCompat: at android.app.Activity.attach(Activity.java:7051) +05-26 11:45:42.105 2233 2233 I ResourcesCompat: at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2873) +05-26 11:45:42.105 2233 2233 I ResourcesCompat: at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3048) +05-26 11:45:42.105 2233 2233 I ResourcesCompat: at android.app.servertransaction.LaunchActivityItem.execute(LaunchActivityItem.java:78) +05-26 11:45:42.105 2233 2233 I ResourcesCompat: at android.app.servertransaction.TransactionExecutor.executeCallbacks(TransactionExecutor.java:108) +05-26 11:45:42.105 2233 2233 I ResourcesCompat: at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:68) +05-26 11:45:42.105 2233 2233 I ResourcesCompat: at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1808) +05-26 11:45:42.105 2233 2233 I ResourcesCompat: at android.os.Handler.dispatchMessage(Handler.java:106) +05-26 11:45:42.105 2233 2233 I ResourcesCompat: at android.os.Looper.loop(Looper.java:193) +05-26 11:45:42.105 2233 2233 I ResourcesCompat: at android.app.ActivityThread.main(ActivityThread.java:6669) +05-26 11:45:42.105 2233 2233 I ResourcesCompat: at java.lang.reflect.Method.invoke(Native Method) +05-26 11:45:42.105 2233 2233 I ResourcesCompat: at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:493) +05-26 11:45:42.105 2233 2233 I ResourcesCompat: at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:858) +05-26 11:45:42.139 2233 2347 I [INFO][Leanplum]: [com.leanplum.LeanplumFcmProvider::isManifestSetup::11]: Firebase Messaging is setup correctly. +05-26 11:45:42.314 2233 2328 E GeckoLibLoad: Loaded libs in 328.210000ms total, 10ms(260ms) user, 140ms(330ms) system, 9(42) faults +05-26 11:45:42.314 2233 2328 D GeckoThread: State changed to LIBS_READY +05-26 11:45:42.316 2233 2328 W GeckoThread: zerdatime 190862512 - runGecko +05-26 11:45:42.317 2233 2328 D GeckoProfile: Loading profile at: null name: default +05-26 11:45:42.317 2233 2328 D GeckoProfile: Created new profile dir. +05-26 11:45:42.321 2233 2328 I GeckoProfile: Enqueuing profile init. +05-26 11:45:42.327 2233 2328 D GeckoProfile: Found profile dir: /data/user/0/org.mozilla.fennec_aurora/files/mozilla/wftld4kh.default +05-26 11:45:42.327 2233 2328 D GeckoProfile: Attempting to write new client ID properties +05-26 11:45:42.329 2233 2328 D GeckoProfile: Creating profile dir: /data/user/0/org.mozilla.fennec_aurora/files/mozilla/wftld4kh.default +05-26 11:45:42.338 1876 3809 I ActivityManager: Killing 27012:com.google.android.youtube/u0a72 (adj 906): empty for 1936s +05-26 11:45:42.340 1876 1894 W libprocessgroup: kill(-27012, 9) failed: No such process +05-26 11:45:42.384 1876 1894 W libprocessgroup: kill(-27012, 9) failed: No such process +05-26 11:45:42.391 2233 2328 I Gecko:DumpUtils: Fifo watcher disabled via pref. +05-26 11:45:42.401 2233 2295 I glean/MetricsPingSched: The application just updated. Send metrics ping now. +05-26 11:45:42.402 2233 2295 I glean/MetricsPingSched: Collecting the 'metrics' ping, now = Tue May 26 11:45:42 EDT 2020, startup = true, reason = upgrade +05-26 11:45:42.403 2233 2295 I libglean_ffi: glean_core::ping: Collecting metrics +05-26 11:45:42.403 2233 2295 I libglean_ffi: glean_core::ping: Storage for metrics empty. Bailing out. +05-26 11:45:42.403 2233 2295 I libglean_ffi: glean_core: No content for ping 'metrics', therefore no ping queued. +05-26 11:45:42.404 2233 2295 D glean/MetricsPingSched: Scheduling the 'metrics' ping in 58457608ms +05-26 11:45:42.407 1876 2734 D ConnectivityService: ConnectivityService NetworkRequestInfo binderDied(NetworkRequest [ LISTEN id=233, [ Capabilities: INTERNET&NOT_RESTRICTED&TRUSTED Unwanted: Uid: 10072] ], android.os.BinderProxy@f0d2037) +05-26 11:45:42.408 1734 1734 I Zygote : Process 27012 exited due to signal (9) +05-26 11:45:42.430 1876 1894 W libprocessgroup: kill(-27012, 9) failed: No such process +05-26 11:45:42.430 1876 1894 I libprocessgroup: Successfully killed process cgroup uid 10072 pid 27012 in 89ms +05-26 11:45:42.438 1740 16222 W MediaAnalyticsItem: Failed to record: [1:drm.vendor.Google.WidevineCDM:5770:-1:com.google.android.youtube:0:-1:1:0:0:] [forcenew=0] +05-26 11:45:42.438 1740 16222 E PluginMetricsReporting: selfrecord() returned false. sessioId 5770 +05-26 11:45:42.487 2233 2233 I FirefoxAccountStateMachine: Enabling/updating sync with a new SyncConfig: SyncConfig(supportedEngines=[mozilla.components.service.fxa.SyncEngine$History@83c4938, mozilla.components.service.fxa.SyncEngine$Bookmarks@94a6d11, mozilla.components.service.fxa.SyncEngine$Passwords@e11ce76], syncPeriodInMinutes=240) +05-26 11:45:42.491 2233 2233 I BgSyncManager: Periodic syncing enabled at a 240 interval +05-26 11:45:42.492 2233 2233 I FirefoxAccountStateMachine: Sync is enabled +05-26 11:45:42.496 2233 2328 D GeckoSysInfo: System memory: 1494MB. +05-26 11:45:42.499 2233 2328 D GeckoThread: State changed to JNI_READY +05-26 11:45:42.510 2233 2384 I FirefoxAccountStateMachine: Processing event Event$Init for state Start. Next state is Start +05-26 11:45:42.513 1876 2204 I GnssLocationProvider: WakeLock acquired by sendMessage(REPORT_SV_STATUS, 0, com.android.server.location.GnssLocationProvider$SvStatusInfo@fb8e6c5) +05-26 11:45:42.514 1876 1890 I GnssLocationProvider: WakeLock released by handleMessage(REPORT_SV_STATUS, 0, com.android.server.location.GnssLocationProvider$SvStatusInfo@fb8e6c5) +05-26 11:45:42.530 2233 2233 E ActivityThread: Failed to find provider info for org.mozilla.fennec_aurora.fxa.auth +05-26 11:45:42.536 2233 2383 D ServiceAllocator: org.mozilla.gecko.process.GeckoChildProcessServices$tab0 updateBindings: BACKGROUND priority, 0 importance, 2 successful binds, 0 failed binds, 0 successful unbinds, 0 failed unbinds +05-26 11:45:42.542 2393 2393 W nec_aurora:tab: Unexpected CPU variant for X86 using defaults: x86 +05-26 11:45:42.543 1876 1893 I ActivityManager: Start proc 2393:org.mozilla.fennec_aurora:tab0/u0a92 for service org.mozilla.fennec_aurora/org.mozilla.gecko.process.GeckoChildProcessServices$tab0 +05-26 11:45:42.567 2233 2233 D GeckoRuntime: Lifecycle: onStart +05-26 11:45:42.578 2233 2233 D GeckoRuntime: Lifecycle: onResume +05-26 11:45:42.581 2393 2393 I nec_aurora:tab: The ClassLoaderContext is a special shared library. +05-26 11:45:42.582 1739 1739 I keystore: del USRPKEY_org.mozilla.fennec_aurora 10092 +05-26 11:45:42.582 2233 2233 D GeckoNetworkManager: Incoming event start for state OffNoListeners -> OnNoListeners +05-26 11:45:42.583 1739 1739 I keystore: del USRCERT_org.mozilla.fennec_aurora 10092 +05-26 11:45:42.584 1739 1739 I keystore: del CACERT_org.mozilla.fennec_aurora 10092 +05-26 11:45:42.584 2233 2233 D GeckoNetworkManager: New network state: UP, WIFI, WIFI +05-26 11:45:42.585 2233 2233 D OpenGLRenderer: Skia GL Pipeline +05-26 11:45:42.599 2233 2347 D NetworkSecurityConfig: No Network Security Config specified, using platform default +05-26 11:45:42.603 1733 2205 E SurfaceFlinger: ro.sf.lcd_density must be defined as a build property +05-26 11:45:42.639 2233 2384 I FirefoxAccountStateMachine: Ran 'Event$Init' side-effects for state Start, got successive event Event$AccountNotFound +05-26 11:45:42.640 2233 2384 I FirefoxAccountStateMachine: Processing event Event$AccountNotFound for state Start. Next state is NotAuthenticated +05-26 11:45:42.641 2233 2384 D RustNativeSupport: findMegazordLibraryName(fxaclient, 0.58.1 +05-26 11:45:42.641 2233 2384 D RustNativeSupport: lib in use: none +05-26 11:45:42.641 2233 2384 D RustNativeSupport: lib configured: megazord +05-26 11:45:42.641 2233 2384 D RustNativeSupport: lib version configured: 0.58.1 +05-26 11:45:42.641 2233 2384 D RustNativeSupport: settled on megazord +05-26 11:45:42.642 2233 2384 D fxaclient_ffi: fxa_new +05-26 11:45:42.668 2233 2295 I libglean_ffi: glean_core::ping: Collecting baseline +05-26 11:45:42.678 2393 2393 D GeckoThread: State changed to LAUNCHED +05-26 11:45:42.684 2233 2384 W FirefoxAccountStateMachine: Got invalid event Event$Init for state NotAuthenticated. +05-26 11:45:42.685 2233 2233 D GeckoNetworkManager: Incoming event receivedUpdate for state OnNoListeners -> OnNoListeners +05-26 11:45:42.688 2233 2233 D GeckoNetworkManager: New network state: UP, WIFI, WIFI +05-26 11:45:42.692 2393 2429 I GeckoThread: preparing to run Gecko +05-26 11:45:42.696 2233 2295 D libglean_ffi: glean_core::ping: Storing ping '61b99eaa-d33b-4833-b80d-f6b14990a92f' at '/data/user/0/org.mozilla.fennec_aurora/glean_data/pending_pings/61b99eaa-d33b-4833-b80d-f6b14990a92f' +05-26 11:45:42.696 2233 2295 I libglean_ffi: glean_core: The ping 'baseline' was submitted and will be sent as soon as possible +05-26 11:45:42.707 7086 7097 I gle.android.gm: Background concurrent copying GC freed 3920(431KB) AllocSpace objects, 12(624KB) LOS objects, 49% free, 3MB/6MB, paused 5.464ms total 61.729ms +05-26 11:45:42.756 1876 2734 D ConnectivityService: requestNetwork for uid/pid:10092/2233 NetworkRequest [ TRACK_DEFAULT id=234, [ Capabilities: INTERNET&NOT_RESTRICTED&TRUSTED Unwanted: Uid: 10092] ] +05-26 11:45:42.756 1876 1975 D WIFI : got request NetworkRequest [ TRACK_DEFAULT id=234, [ Capabilities: INTERNET&NOT_RESTRICTED&TRUSTED Unwanted: Uid: 10092] ] with score 60 +05-26 11:45:42.757 1876 1975 D WIFI_UT : got request NetworkRequest [ TRACK_DEFAULT id=234, [ Capabilities: INTERNET&NOT_RESTRICTED&TRUSTED Unwanted: Uid: 10092] ] with score 60 +05-26 11:45:42.763 2131 2131 D PhoneSwitcherNetworkRequstListener: got request NetworkRequest [ TRACK_DEFAULT id=234, [ Capabilities: INTERNET&NOT_RESTRICTED&TRUSTED Unwanted: Uid: 10092] ] with score 60 +05-26 11:45:42.795 1623 5774 D gralloc_ranchu: gralloc_alloc: Creating ashmem region of size 9334784 +05-26 11:45:42.807 1623 1623 D gralloc_ranchu: gralloc_alloc: Creating ashmem region of size 9334784 +05-26 11:45:42.816 1623 5774 D gralloc_ranchu: gralloc_alloc: Creating ashmem region of size 9334784 +05-26 11:45:42.822 2233 2270 I a.fennec_auror: Background concurrent copying GC freed 9948(1151KB) AllocSpace objects, 18(936KB) LOS objects, 49% free, 3MB/6MB, paused 1.727ms total 105.781ms +05-26 11:45:42.856 2233 2233 D MigrationPushRenewer: Migration state: NONE +05-26 11:45:42.856 2233 2233 D MigrationTelemetryListener: Migration state: NONE +05-26 11:45:42.859 2233 2419 D : HostConnection::get() New Host Connection established 0xd0db54c0, tid 2419 +05-26 11:45:42.869 2233 2419 I ConfigStore: android::hardware::configstore::V1_0::ISurfaceFlingerConfigs::hasWideColorDisplay retrieved: 0 +05-26 11:45:42.870 2233 2419 I ConfigStore: android::hardware::configstore::V1_0::ISurfaceFlingerConfigs::hasHDRDisplay retrieved: 0 +05-26 11:45:42.870 2233 2419 I OpenGLRenderer: Initialized EGL, version 1.4 +05-26 11:45:42.870 2233 2419 D OpenGLRenderer: Swap behavior 1 +05-26 11:45:42.870 2233 2419 W OpenGLRenderer: Failed to choose config with EGL_SWAP_BEHAVIOR_PRESERVED, retrying without... +05-26 11:45:42.870 2233 2419 D OpenGLRenderer: Swap behavior 0 +05-26 11:45:42.873 2233 2419 D EGL_emulation: eglCreateContext: 0xc8c71840: maj 3 min 0 rcv 3 +05-26 11:45:42.875 2233 2419 D EGL_emulation: eglMakeCurrent: 0xc8c71840: ver 3 0 (tinfo 0xc8c501c0) +05-26 11:45:42.879 1733 2205 E SurfaceFlinger: ro.sf.lcd_density must be defined as a build property +05-26 11:45:42.960 2233 2419 D EGL_emulation: eglMakeCurrent: 0xc8c71840: ver 3 0 (tinfo 0xc8c501c0) +05-26 11:45:43.006 2233 2468 D glean/PingUploadWorker: Processing persisted pings at /data/user/0/org.mozilla.fennec_aurora/glean_data/pending_pings +05-26 11:45:43.008 1876 1899 I ActivityManager: Displayed org.mozilla.fennec_aurora/org.mozilla.fenix.HomeActivity: +1s743ms +05-26 11:45:43.014 2000 2000 I GoogleInputMethod: onFinishInput() : Dummy InputConnection bound +05-26 11:45:43.015 2000 2000 I GoogleInputMethod: onStartInput() : Dummy InputConnection bound +05-26 11:45:43.018 2233 2468 D glean/PingUploadWorker: Processing ping: 61b99eaa-d33b-4833-b80d-f6b14990a92f +05-26 11:45:43.018 2233 2233 D GeckoNetworkManager: Incoming event enableNotifications for state OnNoListeners -> OnWithListeners +05-26 11:45:43.020 2233 2468 D glean/ConceptFetchHttpUploader: Submitting ping to: https://incoming.telemetry.mozilla.org/submit/org-mozilla-fennec-aurora/baseline/1/61b99eaa-d33b-4833-b80d-f6b14990a92f +05-26 11:45:43.020 2233 2233 D GeckoNetworkManager: New network state: UP, WIFI, WIFI +05-26 11:45:43.021 1876 1888 W ActivityManager: Receiver with filter android.content.IntentFilter@ffe2a5d already registered for pid 2233, callerPackage is org.mozilla.fennec_aurora +05-26 11:45:43.031 4313 4313 E adbd : failed to connect to socket 'tcp:2829': Connection refused +05-26 11:45:43.033 2233 2233 E ActivityThread: Failed to find provider info for org.mozilla.fennec_aurora.fxa.auth +05-26 11:45:43.044 2233 2233 D GeckoNetworkManager: Incoming event receivedUpdate for state OnWithListeners -> OnWithListeners +05-26 11:45:43.049 2233 2233 D GeckoNetworkManager: New network state: UP, WIFI, WIFI +05-26 11:45:43.133 4313 4313 E adbd : failed to connect to socket 'tcp:2829': Connection refused +05-26 11:45:43.180 2534 2038 I EventLogSendingHelper: Sending log events. +05-26 11:45:43.191 1876 1940 D gralloc_ranchu: gralloc_unregister_buffer: exiting HostConnection (is buffer-handling thread) +05-26 11:45:43.192 1876 1940 D : HostConnection::get() New Host Connection established 0xd3ab0cc0, tid 1940 +05-26 11:45:43.194 1876 1940 D gralloc_ranchu: gralloc_unregister_buffer: exiting HostConnection (is buffer-handling thread) +05-26 11:45:43.194 1733 1749 W SurfaceFlinger: Attempting to set client state on removed layer: Splash Screen org.mozilla.fennec_aurora#0 +05-26 11:45:43.194 1733 1749 W SurfaceFlinger: Attempting to destroy on removed layer: Splash Screen org.mozilla.fennec_aurora#0 +05-26 11:45:43.207 1904 16172 D gralloc_ranchu: gralloc_unregister_buffer: exiting HostConnection (is buffer-handling thread) +05-26 11:45:43.208 1904 16172 D : HostConnection::get() New Host Connection established 0xe69102c0, tid 16172 +05-26 11:45:43.208 1904 16172 D gralloc_ranchu: gralloc_unregister_buffer: exiting HostConnection (is buffer-handling thread) +05-26 11:45:43.215 1904 16172 D : HostConnection::get() New Host Connection established 0xe69102c0, tid 16172 +05-26 11:45:43.239 4313 4313 E adbd : failed to connect to socket 'tcp:2829': Connection refused +05-26 11:45:43.259 2534 2038 I EventLogSendingHelper: Sending log events. +05-26 11:45:43.342 4313 4313 E adbd : failed to connect to socket 'tcp:2829': Connection refused +05-26 11:45:43.344 2233 2233 I [INFO][Leanplum]: [com.leanplum.LeanplumCloudMessagingProvider::onRegistrationIdReceived::3]: Device registered for push notifications with registration token, erw6jzriO4Q:APA91bGwMfmPLEEo-IkdAvopxKRRxGkhNuoO0bTDwwhHPSQAPWUmrt76JeND8tsHPVb2qmlqFBOwOjLA9BrSWDJDtFrMAQ_yujW2xnawPYawyHt1AanpWHGqbi8rQmoX_D4DVLXwLNqm +05-26 11:45:43.368 1733 1733 W SurfaceFlinger: couldn't log to binary event log: overflow. +05-26 11:45:43.448 4313 4313 E adbd : failed to connect to socket 'tcp:2829': Connection refused +05-26 11:45:43.468 2233 2486 I [INFO][Leanplum]: [com.leanplum.LeanplumCloudMessagingProvider::onRegistrationIdReceived::3]: Device registered for push notifications with registration token, erw6jzriO4Q:APA91bGwMfmPLEEo-IkdAvopxKRRxGkhNuoO0bTDwwhHPSQAPWUmrt76JeND8tsHPVb2qmlqFBOwOjLA9BrSWDJDtFrMAQ_yujW2xnawPYawyHt1AanpWHGqbi8rQmoX_D4DVLXwLNqm +05-26 11:45:43.469 2233 2488 I AutoPushFeature: Received a new registration token from push service. +05-26 11:45:43.473 2233 2488 D RustNativeSupport: findMegazordLibraryName(push, 0.58.1 +05-26 11:45:43.473 2233 2488 D RustNativeSupport: lib in use: none +05-26 11:45:43.473 2233 2488 D RustNativeSupport: lib configured: megazord +05-26 11:45:43.473 2233 2488 D RustNativeSupport: lib version configured: 0.58.1 +05-26 11:45:43.473 2233 2488 D RustNativeSupport: settled on megazord +05-26 11:45:43.483 2233 2328 D GeckoThread: State changed to PROFILE_READY +05-26 11:45:43.516 1876 2204 I GnssLocationProvider: WakeLock acquired by sendMessage(REPORT_SV_STATUS, 0, com.android.server.location.GnssLocationProvider$SvStatusInfo@e1dd1fc) +05-26 11:45:43.518 1876 1890 I GnssLocationProvider: WakeLock released by handleMessage(REPORT_SV_STATUS, 0, com.android.server.location.GnssLocationProvider$SvStatusInfo@e1dd1fc) +05-26 11:45:43.530 2534 2006 I PBSessionCacheImpl: Deleted sessionId[290782929457] from persistence. +05-26 11:45:43.550 4313 4313 E adbd : failed to connect to socket 'tcp:2829': Connection refused +05-26 11:45:43.553 2534 2534 W SearchService: Abort, client detached. +05-26 11:45:43.563 2233 2328 D GeckoThread: State changed to RUNNING +05-26 11:45:43.571 2233 2328 I Gecko : -*- nsDNSServiceDiscovery.js : nsDNSServiceDiscovery +05-26 11:45:43.597 2534 2034 I WorkController: WorkProxy is not enqueued because WorkController is disposed: WorkProxy{Name=context::j, WorkerId=context, id=b8d54f6} +05-26 11:45:43.597 2534 2034 I WorkController: WorkProxy is not enqueued because WorkController is disposed: WorkProxy{Name=context::m, WorkerId=context, id=75450f7} +05-26 11:45:43.598 2534 2034 I WorkController: WorkProxy is not enqueued because WorkController is disposed: WorkProxy{Name=context::n, WorkerId=context, id=59beb64} +05-26 11:45:43.598 2233 2328 I Gecko : 1590507943598 Marionette TRACE Marionette enabled +05-26 11:45:43.599 2534 2034 I WorkController: WorkProxy is not enqueued because WorkController is disposed: WorkProxy{Name=context::p, WorkerId=context, id=873e1cd} +05-26 11:45:43.605 2012 2265 D EGL_emulation: eglMakeCurrent: 0xe8b05420: ver 3 0 (tinfo 0xe8b03980) +05-26 11:45:43.656 4313 4313 E adbd : failed to connect to socket 'tcp:2829': Connection refused +05-26 11:45:43.751 2233 2233 I DefaultSupportedAddonsChecker: Register check for new supported add-ons +05-26 11:45:43.761 4313 4313 E adbd : failed to connect to socket 'tcp:2829': Connection refused +05-26 11:45:43.764 2233 2328 I Gecko : 1590507943764 Marionette TRACE Received observer notification marionette-startup-requested +05-26 11:45:43.765 2233 2328 I Gecko : 1590507943765 Marionette TRACE Waiting until startup recorder finished recording startup scripts... +05-26 11:45:43.786 2233 2351 I SupportedAddonsWorker: Trying to check for new supported add-ons +05-26 11:45:43.865 4313 4313 E adbd : failed to connect to socket 'tcp:2829': Connection refused +05-26 11:45:43.968 4313 4313 E adbd : failed to connect to socket 'tcp:2829': Connection refused +05-26 11:45:43.992 2233 2233 D App : Installed browser-icons extension +05-26 11:45:44.040 2233 2328 D : HostConnection::get() New Host Connection established 0xd0dc10c0, tid 2328 +05-26 11:45:44.042 2233 2328 E EGL_emulation: tid 2328: eglBindAPI(1259): error 0x300c (EGL_BAD_PARAMETER) +05-26 11:45:44.043 2233 2328 D EGL_emulation: eglCreateContext: 0xe5e99040: maj 3 min 0 rcv 3 +05-26 11:45:44.045 2233 2328 D EGL_emulation: eglMakeCurrent: 0xe5e99040: ver 3 0 (tinfo 0xe71134f0) +05-26 11:45:44.074 4313 4313 E adbd : failed to connect to socket 'tcp:2829': Connection refused +05-26 11:45:44.180 4313 4313 I chatty : uid=0(root) /system/bin/adbd identical 1 line +05-26 11:45:44.282 4313 4313 E adbd : failed to connect to socket 'tcp:2829': Connection refused +05-26 11:45:44.353 2233 2468 D glean/ConceptFetchHttpUploader: Ping successfully sent (200) +05-26 11:45:44.354 2233 2468 D glean/PingUploadWorker: 61b99eaa-d33b-4833-b80d-f6b14990a92f was deleted: true +05-26 11:45:44.361 2233 2378 I WM-WorkerWrapper: Worker result SUCCESS for Work [ id=6de17969-b2aa-4d55-8d3d-9d1360d3ed18, tags={ mozilla.telemetry.glean.scheduler.PingUploadWorker, mozac_service_glean_ping_upload_worker } ] +05-26 11:45:44.386 4313 4313 E adbd : failed to connect to socket 'tcp:2829': Connection refused +05-26 11:45:44.400 1876 1978 D ConnectivityService: releasing NetworkRequest [ TRACK_DEFAULT id=234, [ Capabilities: INTERNET&NOT_RESTRICTED&TRUSTED Unwanted: Uid: 10092] ] (release request) +05-26 11:45:44.489 4313 4313 E adbd : failed to connect to socket 'tcp:2829': Connection refused +05-26 11:45:44.517 1876 2204 I GnssLocationProvider: WakeLock acquired by sendMessage(REPORT_SV_STATUS, 0, com.android.server.location.GnssLocationProvider$SvStatusInfo@8c7f483) +05-26 11:45:44.517 1876 1890 I GnssLocationProvider: WakeLock released by handleMessage(REPORT_SV_STATUS, 0, com.android.server.location.GnssLocationProvider$SvStatusInfo@8c7f483) +05-26 11:45:44.523 2482 7043 W ctxmgr : [AclManager]No 2 for (accnt=account#-517948760#, com.google.android.gms(10008):IndoorOutdoorProducer, vrsn=13280000, 0, 3pPkg = null , 3pMdlId = null , pid = 2482). Was: 3 for 57, account#-517948760# +05-26 11:45:44.592 4313 4313 E adbd : failed to connect to socket 'tcp:2829': Connection refused +05-26 11:45:44.694 4313 4313 E adbd : failed to connect to socket 'tcp:2829': Connection refused +05-26 11:45:44.782 2211 2323 I droid.apps.doc: The ClassLoaderContext is a special shared library. +05-26 11:45:44.785 2211 2323 I chatty : uid=10069(com.google.android.apps.docs) TaskSchedulerLo identical 1 line +05-26 11:45:44.790 2211 2323 I droid.apps.doc: The ClassLoaderContext is a special shared library. +05-26 11:45:44.797 4313 4313 E adbd : failed to connect to socket 'tcp:2829': Connection refused +05-26 11:45:44.798 2211 2323 I droid.apps.doc: The ClassLoaderContext is a special shared library. +05-26 11:45:44.826 2211 2323 V NativeCrypto: Registering com/google/android/gms/org/conscrypt/NativeCrypto's 284 native methods... +05-26 11:45:44.863 2211 2323 D NetworkSecurityConfig: No Network Security Config specified, using platform default +05-26 11:45:44.872 2211 2323 I ProviderInstaller: Installed default security provider GmsCore_OpenSSL +05-26 11:45:44.899 4313 4313 E adbd : failed to connect to socket 'tcp:2829': Connection refused +05-26 11:45:44.976 2233 2233 D mozac-webcompat: Installed WebCompat webextension: webcompat@mozilla.com +05-26 11:45:45.001 4313 4313 E adbd : failed to connect to socket 'tcp:2829': Connection refused +05-26 11:45:45.107 4313 4313 E adbd : failed to connect to socket 'tcp:2829': Connection refused +05-26 11:45:45.108 2233 2328 I Gecko : 1590507945108 Marionette TRACE All scripts recorded. +05-26 11:45:45.109 2233 2328 I Gecko : 1590507945109 Marionette DEBUG Setting recommended pref apz.content_response_timeout to 60000 +05-26 11:45:45.109 2233 2328 I Gecko : 1590507945109 Marionette DEBUG Setting recommended pref browser.contentblocking.introCount to 99 +05-26 11:45:45.110 2233 2328 I Gecko : 1590507945109 Marionette DEBUG Setting recommended pref browser.download.panel.shown to true +05-26 11:45:45.110 2233 2328 I Gecko : 1590507945110 Marionette DEBUG Setting recommended pref browser.newtabpage.enabled to false +05-26 11:45:45.110 2233 2328 I Gecko : 1590507945110 Marionette DEBUG Setting recommended pref browser.safebrowsing.malware.enabled to false +05-26 11:45:45.115 2233 2328 I Gecko : 1590507945115 Marionette DEBUG Setting recommended pref browser.safebrowsing.phishing.enabled to false +05-26 11:45:45.118 2233 2328 I Gecko : 1590507945118 Marionette DEBUG Setting recommended pref browser.search.update to false +05-26 11:45:45.118 2233 2328 I Gecko : 1590507945118 Marionette DEBUG Setting recommended pref browser.tabs.disableBackgroundZombification to false +05-26 11:45:45.118 2233 2328 I Gecko : 1590507945118 Marionette DEBUG Setting recommended pref browser.tabs.remote.separatePrivilegedContentProcess to false +05-26 11:45:45.119 2233 2328 I Gecko : 1590507945119 Marionette DEBUG Setting recommended pref browser.tabs.unloadOnLowMemory to false +05-26 11:45:45.119 2233 2328 I Gecko : 1590507945119 Marionette DEBUG Setting recommended pref browser.tabs.warnOnCloseOtherTabs to false +05-26 11:45:45.119 2233 2328 I Gecko : 1590507945119 Marionette DEBUG Setting recommended pref browser.tabs.warnOnOpen to false +05-26 11:45:45.119 2233 2328 I Gecko : 1590507945119 Marionette DEBUG Setting recommended pref browser.usedOnWindows10.introURL to +05-26 11:45:45.120 2233 2328 I Gecko : 1590507945120 Marionette DEBUG Setting recommended pref browser.urlbar.suggest.searches to false +05-26 11:45:45.120 2233 2328 I Gecko : 1590507945120 Marionette DEBUG Setting recommended pref dom.disable_beforeunload to true +05-26 11:45:45.120 2233 2328 I Gecko : 1590507945120 Marionette DEBUG Setting recommended pref dom.file.createInChild to true +05-26 11:45:45.121 2233 2328 I Gecko : 1590507945121 Marionette DEBUG Setting recommended pref extensions.getAddons.cache.enabled to false +05-26 11:45:45.121 2233 2328 I Gecko : 1590507945121 Marionette DEBUG Setting recommended pref network.http.prompt-temp-redirect to false +05-26 11:45:45.121 2233 2328 I Gecko : 1590507945121 Marionette DEBUG Setting recommended pref security.notification_enable_delay to 0 +05-26 11:45:45.122 2233 2328 I Gecko : 1590507945121 Marionette DEBUG Setting recommended pref signon.autofillForms to false +05-26 11:45:45.122 2233 2328 I Gecko : 1590507945122 Marionette DEBUG Setting recommended pref signon.rememberSignons to false +05-26 11:45:45.122 2233 2328 I Gecko : 1590507945122 Marionette DEBUG Setting recommended pref toolkit.cosmeticAnimations.enabled to false +05-26 11:45:45.187 2233 2328 I Gecko : 1590507945187 Marionette INFO Listening on port 2829 +05-26 11:45:45.188 2233 2328 I Gecko : 1590507945188 Marionette DEBUG Marionette is listening +05-26 11:45:45.213 2233 2328 I Gecko : 1590507945213 Marionette DEBUG Accepted connection 0 from 127.0.0.1:56174 +05-26 11:45:45.219 2233 2328 I Gecko : 1590507945219 Marionette DEBUG 0 -> [0,1,"WebDriver:NewSession",{"browserName":"firefox","pageLoadStrategy":"none"}] +05-26 11:45:45.518 1876 2204 I GnssLocationProvider: WakeLock acquired by sendMessage(REPORT_SV_STATUS, 0, com.android.server.location.GnssLocationProvider$SvStatusInfo@9f53600) +05-26 11:45:45.519 1876 1890 I GnssLocationProvider: WakeLock released by handleMessage(REPORT_SV_STATUS, 0, com.android.server.location.GnssLocationProvider$SvStatusInfo@9f53600) +05-26 11:45:45.589 2233 2318 I WM-WorkerWrapper: Worker result SUCCESS for Work [ id=5f498c6b-af92-4b6b-8e5b-2a362b3bd663, tags={ mozilla.components.feature.addons.migration.DefaultSupportedAddonsChecker.periodicWork, mozilla.components.feature.addons.migration.SupportedAddonsWorker } ] +05-26 11:45:46.522 1876 2204 I GnssLocationProvider: WakeLock acquired by sendMessage(REPORT_SV_STATUS, 0, com.android.server.location.GnssLocationProvider$SvStatusInfo@7eb3c7e) +05-26 11:45:46.524 1876 1890 I GnssLocationProvider: WakeLock released by handleMessage(REPORT_SV_STATUS, 0, com.android.server.location.GnssLocationProvider$SvStatusInfo@7eb3c7e) +05-26 11:45:47.524 1876 2204 I GnssLocationProvider: WakeLock acquired by sendMessage(REPORT_SV_STATUS, 0, com.android.server.location.GnssLocationProvider$SvStatusInfo@30b55df) +05-26 11:45:47.525 1876 1890 I GnssLocationProvider: WakeLock released by handleMessage(REPORT_SV_STATUS, 0, com.android.server.location.GnssLocationProvider$SvStatusInfo@30b55df) +05-26 11:45:47.838 2233 2233 I glean/Glean: Registering pings for org.mozilla.fenix.GleanMetrics.Pings +05-26 11:45:47.883 2233 2233 I FenixApplication: Kicking-off account manager... +05-26 11:45:47.883 2233 2233 I FenixApplication: 'Kicking-off account manager' took 0 ms +05-26 11:45:47.886 2233 2305 I FenixApplication: Running post-visual completeness tasks... +05-26 11:45:47.886 2233 2305 I FenixApplication: Storage initialization... +05-26 11:45:47.890 2233 2305 I PlacesHistoryStorage: Warming up places storage... +05-26 11:45:47.903 2233 2305 D RustNativeSupport: findMegazordLibraryName(places, 0.58.1 +05-26 11:45:47.903 2233 2305 D RustNativeSupport: lib in use: none +05-26 11:45:47.903 2233 2305 D RustNativeSupport: lib configured: megazord +05-26 11:45:47.903 2233 2305 D RustNativeSupport: lib version configured: 0.58.1 +05-26 11:45:47.903 2233 2305 D RustNativeSupport: settled on megazord +05-26 11:45:47.908 2233 2305 D places_ffi: places_api_new +05-26 11:45:47.945 2233 2305 D places::db::schema: Creating schema +05-26 11:45:48.023 2233 2351 I App : ActivationPing - generating ping with the hashed id +05-26 11:45:48.024 2233 2351 I App : ActivationPing - generating ping (has `identifier`: true) +05-26 11:45:48.034 2233 2305 D sql_support::conn_ext: Transaction commited after 87.947ms +05-26 11:45:48.041 2233 2305 D places_ffi: places_connection_new +05-26 11:45:48.041 2233 2295 I libglean_ffi: glean_core::ping: Collecting activation +05-26 11:45:48.046 2233 2305 D places_ffi: places_connection_new +05-26 11:45:48.056 2233 2305 I PlacesHistoryStorage: 'Warming up places storage' took 166 ms +05-26 11:45:48.059 2233 2305 I PlacesBookmarksStorage: Warming up places storage... +05-26 11:45:48.062 2233 2305 D places_ffi: places_connection_new +05-26 11:45:48.072 2233 2305 I PlacesBookmarksStorage: 'Warming up places storage' took 13 ms +05-26 11:45:48.075 2233 2295 D libglean_ffi: glean_core::ping: Storing ping 'bc58f9d5-110e-442c-ae4f-6dbee99fe25d' at '/data/user/0/org.mozilla.fennec_aurora/glean_data/pending_pings/bc58f9d5-110e-442c-ae4f-6dbee99fe25d' +05-26 11:45:48.077 2233 2295 I libglean_ffi: glean_core: The ping 'activation' was submitted and will be sent as soon as possible +05-26 11:45:48.111 1739 1739 I keystore: 1 0 +05-26 11:45:48.134 2233 2305 I SyncableLoginsStorage: Warming up storage... +05-26 11:45:48.166 1876 4289 D ConnectivityService: requestNetwork for uid/pid:10092/2233 NetworkRequest [ TRACK_DEFAULT id=235, [ Capabilities: INTERNET&NOT_RESTRICTED&TRUSTED Unwanted: Uid: 10092] ] +05-26 11:45:48.170 1876 1975 D WIFI : got request NetworkRequest [ TRACK_DEFAULT id=235, [ Capabilities: INTERNET&NOT_RESTRICTED&TRUSTED Unwanted: Uid: 10092] ] with score 60 +05-26 11:45:48.170 1876 1975 D WIFI_UT : got request NetworkRequest [ TRACK_DEFAULT id=235, [ Capabilities: INTERNET&NOT_RESTRICTED&TRUSTED Unwanted: Uid: 10092] ] with score 60 +05-26 11:45:48.174 2233 2305 D RustNativeSupport: findMegazordLibraryName(logins, 0.58.1 +05-26 11:45:48.190 2233 2305 D RustNativeSupport: lib in use: none +05-26 11:45:48.190 2131 2131 D PhoneSwitcherNetworkRequstListener: got request NetworkRequest [ TRACK_DEFAULT id=235, [ Capabilities: INTERNET&NOT_RESTRICTED&TRUSTED Unwanted: Uid: 10092] ] with score 60 +05-26 11:45:48.191 2233 2305 D RustNativeSupport: lib configured: megazord +05-26 11:45:48.191 2233 2305 D RustNativeSupport: lib version configured: 0.58.1 +05-26 11:45:48.191 2233 2305 D RustNativeSupport: settled on megazord +05-26 11:45:48.193 2233 2305 D logins_ffi: sync15_passwords_state_new +05-26 11:45:48.219 2233 2601 D glean/PingUploadWorker: Processing persisted pings at /data/user/0/org.mozilla.fennec_aurora/glean_data/pending_pings +05-26 11:45:48.227 2233 2601 D glean/PingUploadWorker: Processing ping: bc58f9d5-110e-442c-ae4f-6dbee99fe25d +05-26 11:45:48.230 2233 2601 D glean/ConceptFetchHttpUploader: Submitting ping to: https://incoming.telemetry.mozilla.org/submit/org-mozilla-fennec-aurora/activation/1/bc58f9d5-110e-442c-ae4f-6dbee99fe25d +05-26 11:45:48.230 2233 2305 D logins::schema: Creating schema +05-26 11:45:48.526 2233 2305 I SyncableLoginsStorage: 'Warming up storage' took 391 ms +05-26 11:45:48.526 1876 2204 I GnssLocationProvider: WakeLock acquired by sendMessage(REPORT_SV_STATUS, 0, com.android.server.location.GnssLocationProvider$SvStatusInfo@2ea12e1) +05-26 11:45:48.527 2233 2305 I FenixApplication: 'Storage initialization' took 640 ms +05-26 11:45:48.527 1876 1890 I GnssLocationProvider: WakeLock released by handleMessage(REPORT_SV_STATUS, 0, com.android.server.location.GnssLocationProvider$SvStatusInfo@2ea12e1) +05-26 11:45:48.749 2233 2601 D glean/ConceptFetchHttpUploader: Ping successfully sent (200) +05-26 11:45:48.750 2233 2601 D glean/PingUploadWorker: bc58f9d5-110e-442c-ae4f-6dbee99fe25d was deleted: true +05-26 11:45:48.753 2233 2318 I WM-WorkerWrapper: Worker result SUCCESS for Work [ id=bc69b5a8-e4e5-43bf-b478-16556bcd27b1, tags={ mozilla.telemetry.glean.scheduler.PingUploadWorker, mozac_service_glean_ping_upload_worker } ] +05-26 11:45:48.760 1876 1978 D ConnectivityService: releasing NetworkRequest [ TRACK_DEFAULT id=235, [ Capabilities: INTERNET&NOT_RESTRICTED&TRUSTED Unwanted: Uid: 10092] ] (release request) +05-26 11:45:48.903 1876 1893 I ActivityManager: Start proc 2605:com.google.android.dialer/u0a28 for service com.google.android.dialer/com.google.android.apps.dialer.spam.inapp.SpamJobService +05-26 11:45:48.904 2605 2605 W .android.diale: Unexpected CPU variant for X86 using defaults: x86 +05-26 11:45:48.955 2605 2605 W System : ClassLoader referenced unknown path: /system/framework/com.google.android.dialer.support.jar +05-26 11:45:49.180 2605 2605 I Dialer : GoogleDialerApplication.onCreate - enter +05-26 11:45:49.202 2605 2605 I Dialer : DialerExecutorModule.newThread - creating low priority thread +05-26 11:45:49.244 2605 2605 I Dialer : SpamModule.provideSpam - using in-app spam +05-26 11:45:49.252 2605 2605 I Dialer : SpamModule.provideSpam - using in-app spam +05-26 11:45:49.254 2605 2605 I Dialer : CallLogConfigImpl.schedulePollingJob - scheduling +05-26 11:45:49.260 2605 2605 I Dialer : DialerApplication.initializeAnnotatedCallLog - framework not enabled +05-26 11:45:49.302 2605 2605 E .android.diale: The String#value field is not present on Android versions >= 6.0 +05-26 11:45:49.311 2605 2605 I Dialer : NonUiTaskBuilder.newThread - creating serial thread +05-26 11:45:49.312 2605 2605 I Dialer : DialerExecutorModule.newThread - creating low priority thread +05-26 11:45:49.313 2605 2605 I Dialer : ShortcutsJobScheduler.scheduleAllJobs - enter +05-26 11:45:49.321 2605 2605 I Dialer : ShortcutsJobScheduler.scheduleAllJobs - enabling shortcuts +05-26 11:45:49.321 2605 2605 I Dialer : PeriodicJobService.schedulePeriodicJob - enter +05-26 11:45:49.323 2605 2605 I Dialer : PeriodicJobService.schedulePeriodicJob - job already scheduled. +05-26 11:45:49.325 2605 2630 I Dialer : SpamJobScheduler.scheduleJob - job with id SPAM_JOB_WIFI is already scheduled +05-26 11:45:49.326 2605 2605 I Dialer : GoogleDialerApplication.onCreate - register new client +05-26 11:45:49.329 2605 2630 I Dialer : SpamJobScheduler.scheduleJob - job with id SPAM_JOB_ANY_NETWORK is already scheduled +05-26 11:45:49.361 2605 2605 I Dialer : GoogleDialerApplication.onCreate - registered new client +05-26 11:45:49.376 2605 2605 I Dialer : SpamJobScheduler.scheduleJob - job with id SPAM_JOB_WIFI is already scheduled +05-26 11:45:49.528 1876 2204 I GnssLocationProvider: WakeLock acquired by sendMessage(REPORT_SV_STATUS, 0, com.android.server.location.GnssLocationProvider$SvStatusInfo@e013eb6) +05-26 11:45:49.529 1876 1890 I GnssLocationProvider: WakeLock released by handleMessage(REPORT_SV_STATUS, 0, com.android.server.location.GnssLocationProvider$SvStatusInfo@e013eb6) +05-26 11:45:49.552 2482 6321 W ctxmgr : [AclManager]No 2 for (accnt=account#-517948760#, com.google.android.gms(10008):IndoorOutdoorProducer, vrsn=13280000, 0, 3pPkg = null , 3pMdlId = null , pid = 2482). Was: 3 for 57, account#-517948760# +05-26 11:45:49.570 2605 2605 I Dialer : Flags.register - phenotype register status: true +05-26 11:45:49.668 1876 1884 I system_server: Background concurrent copying GC freed 116473(5MB) AllocSpace objects, 53(2MB) LOS objects, 19% free, 25MB/31MB, paused 2.716ms total 271.820ms +05-26 11:45:49.675 2605 2629 I Dialer : DialerExecutorModule.newThread - creating low priority thread +05-26 11:45:49.678 2605 2605 I Dialer : Flags.register - commit succeeded: true +05-26 11:45:50.530 1876 2204 I GnssLocationProvider: WakeLock acquired by sendMessage(REPORT_SV_STATUS, 0, com.android.server.location.GnssLocationProvider$SvStatusInfo@e6757b7) +05-26 11:45:50.532 1876 1890 I GnssLocationProvider: WakeLock released by handleMessage(REPORT_SV_STATUS, 0, com.android.server.location.GnssLocationProvider$SvStatusInfo@e6757b7) +05-26 11:45:50.931 1876 4289 I ActivityManager: Force stopping org.mozilla.fennec_aurora appid=10092 user=0: clear data +05-26 11:45:50.932 1876 4289 I ActivityManager: Killing 2393:org.mozilla.fennec_aurora:tab0/u0a92 (adj 100): stop org.mozilla.fennec_aurora +05-26 11:45:50.933 1876 4289 W ActivityManager: Scheduling restart of crashed service org.mozilla.fennec_aurora/org.mozilla.gecko.process.GeckoChildProcessServices$tab0 in 1000ms +05-26 11:45:50.934 1876 1894 W libprocessgroup: kill(-2393, 9) failed: No such process +05-26 11:45:50.939 1876 4289 I ActivityManager: Killing 2233:org.mozilla.fennec_aurora/u0a92 (adj 0): stop org.mozilla.fennec_aurora +05-26 11:45:50.946 1876 4289 W ActivityManager: Force removing ActivityRecord{a5ac676 u0 org.mozilla.fennec_aurora/org.mozilla.fenix.HomeActivity t282}: app died, no saved state +05-26 11:45:50.971 1904 1911 D gralloc_ranchu: gralloc_unregister_buffer: exiting HostConnection (is buffer-handling thread) +05-26 11:45:50.972 1904 1911 D : HostConnection::get() New Host Connection established 0xe6d43140, tid 1911 +05-26 11:45:50.973 1904 1911 D gralloc_ranchu: gralloc_unregister_buffer: exiting HostConnection (is buffer-handling thread) +05-26 11:45:50.973 1904 1911 D : HostConnection::get() New Host Connection established 0xe6d43140, tid 1911 +05-26 11:45:50.974 1904 1911 D gralloc_ranchu: gralloc_unregister_buffer: exiting HostConnection (is buffer-handling thread) +05-26 11:45:50.974 1904 1911 D : HostConnection::get() New Host Connection established 0xe6d43140, tid 1911 +05-26 11:45:50.975 1904 1911 D gralloc_ranchu: gralloc_unregister_buffer: exiting HostConnection (is buffer-handling thread) +05-26 11:45:50.975 1904 1911 D : HostConnection::get() New Host Connection established 0xe6d43140, tid 1911 +05-26 11:45:50.975 1904 1911 D gralloc_ranchu: gralloc_unregister_buffer: exiting HostConnection (is buffer-handling thread) +05-26 11:45:50.976 1876 1894 W libprocessgroup: kill(-2393, 9) failed: No such process +05-26 11:45:50.976 1904 1911 D : HostConnection::get() New Host Connection established 0xe6d43140, tid 1911 +05-26 11:45:50.976 1904 1911 D gralloc_ranchu: gralloc_unregister_buffer: exiting HostConnection (is buffer-handling thread) +05-26 11:45:50.983 1904 1911 D : HostConnection::get() New Host Connection established 0xe6d43140, tid 1911 +05-26 11:45:50.993 1876 4289 D ZenLog : config: removeAutomaticZenRules,ZenModeConfig[user=0,allowAlarms=true,allowMedia=true,allowSystem=false,allowReminders=false,allowEvents=false,allowCalls=true,allowRepeatCallers=true,allowMessages=false,allowCallsFrom=stars,allowMessagesFrom=contacts,suppressedVisualEffects=511,areChannelsBypassingDnd=false,automaticRules={EVENTS_DEFAULT_RULE=ZenRule[enabled=false,snoozing=false,name=Event,zenMode=ZEN_MODE_IMPORTANT_INTERRUPTIONS,conditionId=condition://android/event?userId=-10000&calendar=&reply=1,condition=Condition[id=condition://android/event?userId=-10000&calendar=&reply=1,summary=...,line1=...,line2=...,icon=0,state=STATE_FALSE,flags=2],component=ComponentInfo{android/com.android.server.notification.EventConditionProvider},id=EVENTS_DEFAULT_RULE,creationTime=1587308662810,enabler=null], EVERY_NIGHT_DEFAULT_RULE=ZenRule[enabled=false,snoozing=false,name=Sleeping,zenMode=ZEN_MODE_IMPORTANT_INTERRUPTIONS,conditionId=condition://android/schedule?days=1.2.3.4.5.6.7&start=22.0&end=7.0&exitAtAlarm=true,condition=Condition[id=condition://android/schedule?days=1.2.3.4.5.6.7&start=22.0&end=7.0&exitAtAlarm=true,summary=...,line1=...,line2=...,icon=0,state=STATE_FALSE,flags=2],component=ComponentInfo{android/com.android.server.notification.ScheduleConditionProvider},id=EVERY_NIGHT_DEFAULT_RULE,creationTime=1587308662810,enabler=null]},manualRule=null],Diff[] +05-26 11:45:50.993 1876 4289 I ConditionProviders: Disallowing condition provider org.mozilla.fennec_aurora +05-26 11:45:50.997 1734 1734 I Zygote : Process 2393 exited due to signal (9) +05-26 11:45:50.999 1876 1876 D ZenLog : set_zen_mode: off,removeAutomaticZenRules +05-26 11:45:51.015 1876 1894 W libprocessgroup: kill(-2393, 9) failed: No such process +05-26 11:45:51.015 1876 1894 I libprocessgroup: Successfully killed process cgroup uid 10092 pid 2393 in 81ms +05-26 11:45:51.016 1876 1894 W libprocessgroup: kill(-2233, 9) failed: No such process +05-26 11:45:51.039 1623 5774 D gralloc_ranchu: gralloc_alloc: Creating ashmem region of size 9334784 +05-26 11:45:51.056 1876 1894 W libprocessgroup: kill(-2233, 9) failed: No such process +05-26 11:45:51.058 1733 1759 D : HostConnection::get() New Host Connection established 0xed960600, tid 1759 +05-26 11:45:51.059 1623 5774 D gralloc_ranchu: gralloc_alloc: Creating ashmem region of size 9334784 +05-26 11:45:51.071 1623 5774 D gralloc_ranchu: gralloc_alloc: Creating ashmem region of size 9334784 +05-26 11:45:51.096 1876 1894 W libprocessgroup: kill(-2233, 9) failed: No such process +05-26 11:45:51.102 1739 1739 I keystore: clear_uid 10092 +05-26 11:45:51.120 1733 1733 D SurfaceFlinger: duplicate layer name: changing com.google.android.apps.nexuslauncher/com.google.android.apps.nexuslauncher.NexusLauncherActivity to com.google.android.apps.nexuslauncher/com.google.android.apps.nexuslauncher.NexusLauncherActivity#1 +05-26 11:45:51.131 1623 5774 D gralloc_ranchu: gralloc_alloc: Creating ashmem region of size 9334784 +05-26 11:45:51.135 1876 1894 W libprocessgroup: kill(-2233, 9) failed: No such process +05-26 11:45:51.150 2534 2825 D EGL_emulation: eglMakeCurrent: 0xe8b06aa0: ver 3 0 (tinfo 0xe8b03b50) +05-26 11:45:51.150 1876 1961 W InputDispatcher: channel '894e079 org.mozilla.fennec_aurora/org.mozilla.fenix.HomeActivity (server)' ~ Consumer closed input channel or an error occurred. events=0x9 +05-26 11:45:51.151 1876 1961 E InputDispatcher: channel '894e079 org.mozilla.fennec_aurora/org.mozilla.fenix.HomeActivity (server)' ~ Channel is unrecoverably broken and will be disposed! +05-26 11:45:51.155 1733 1749 D : HostConnection::get() New Host Connection established 0xed960a40, tid 1749 +05-26 11:45:51.165 1623 5774 D gralloc_ranchu: gralloc_alloc: Creating ashmem region of size 9334784 +05-26 11:45:51.175 1876 1894 W libprocessgroup: kill(-2233, 9) failed: No such process +05-26 11:45:51.182 1623 1623 D gralloc_ranchu: gralloc_alloc: Creating ashmem region of size 9334784 +05-26 11:45:51.193 1876 1891 I ActivityManager: Force stopping org.mozilla.fennec_aurora appid=10092 user=-1: clearApplicationUserData +05-26 11:45:51.198 1733 1759 D gralloc_ranchu: gralloc_unregister_buffer: exiting HostConnection (is buffer-handling thread) +05-26 11:45:51.199 1733 1759 D : HostConnection::get() New Host Connection established 0xed960600, tid 1759 +05-26 11:45:51.202 1733 1759 D gralloc_ranchu: gralloc_unregister_buffer: exiting HostConnection (is buffer-handling thread) +05-26 11:45:51.203 1733 1759 D : HostConnection::get() New Host Connection established 0xede98480, tid 1759 +05-26 11:45:51.203 1733 1759 D gralloc_ranchu: gralloc_unregister_buffer: exiting HostConnection (is buffer-handling thread) +05-26 11:45:51.204 1733 1759 D : HostConnection::get() New Host Connection established 0xede98480, tid 1759 +05-26 11:45:51.214 1733 1759 D gralloc_ranchu: gralloc_unregister_buffer: exiting HostConnection (is buffer-handling thread) +05-26 11:45:51.215 1876 1894 W libprocessgroup: kill(-2233, 9) failed: No such process +05-26 11:45:51.218 1876 7720 I WindowManager: WIN DEATH: Window{894e079 u0 org.mozilla.fennec_aurora/org.mozilla.fenix.HomeActivity} +05-26 11:45:51.219 1876 7720 W InputDispatcher: Attempted to unregister already unregistered input channel '894e079 org.mozilla.fennec_aurora/org.mozilla.fenix.HomeActivity (server)' +05-26 11:45:51.235 1733 2205 W SurfaceFlinger: Attempting to destroy on removed layer: Task=282#0 +05-26 11:45:51.249 1734 1734 I Zygote : Process 2233 exited due to signal (9) +05-26 11:45:51.254 1876 1894 W libprocessgroup: kill(-2233, 9) failed: No such process +05-26 11:45:51.254 1876 1894 I libprocessgroup: Successfully killed process cgroup uid 10092 pid 2233 in 238ms +05-26 11:45:51.260 1876 1899 W ActivityManager: setHasOverlayUi called on unknown pid: 2233 +05-26 11:45:51.263 2000 2000 I GoogleInputMethod: onFinishInput() : Dummy InputConnection bound +05-26 11:45:51.263 2499 2681 D EGL_emulation: eglMakeCurrent: 0xd35359e0: ver 3 0 (tinfo 0xd353b4f0) +05-26 11:45:51.265 2000 2000 I GoogleInputMethod: onStartInput() : Dummy InputConnection bound +05-26 11:45:51.300 2012 2265 D EGL_emulation: eglMakeCurrent: 0xe8b05420: ver 3 0 (tinfo 0xe8b03980) +05-26 11:45:51.327 2012 2265 I chatty : uid=10024(com.android.systemui) RenderThread identical 1 line +05-26 11:45:51.403 2012 2265 D EGL_emulation: eglMakeCurrent: 0xe8b05420: ver 3 0 (tinfo 0xe8b03980) +05-26 11:45:51.428 2482 2482 I GeofencerStateMachine: removeGeofences: removeRequest=RemoveGeofencingRequest[REMOVE_ALL packageName=org.mozilla.fennec_aurora] +05-26 11:45:51.433 2131 2131 D CarrierSvcBindHelper: No carrier app for: 0 +05-26 11:45:51.438 2012 2265 D EGL_emulation: eglMakeCurrent: 0xe8b05420: ver 3 0 (tinfo 0xe8b03980) +05-26 11:45:51.463 2012 2265 I chatty : uid=10024(com.android.systemui) RenderThread identical 3 lines +05-26 11:45:51.479 2012 2265 D EGL_emulation: eglMakeCurrent: 0xe8b05420: ver 3 0 (tinfo 0xe8b03980) +05-26 11:45:51.481 1876 1890 E system_server: No package ID 7f found for ID 0x7f08019f. +05-26 11:45:51.481 1876 1890 E system_server: No package ID 7f found for ID 0x7f130122. +05-26 11:45:51.481 1876 1890 E system_server: No package ID 7f found for ID 0x7f130122. +05-26 11:45:51.481 1876 1890 E system_server: No package ID 7f found for ID 0x7f08019d. +05-26 11:45:51.481 1876 1890 E system_server: No package ID 7f found for ID 0x7f130121. +05-26 11:45:51.481 1876 1890 E system_server: No package ID 7f found for ID 0x7f130121. +05-26 11:45:51.484 2012 2265 D EGL_emulation: eglMakeCurrent: 0xe8b05420: ver 3 0 (tinfo 0xe8b03980) +05-26 11:45:51.493 2534 2534 W SessionLifecycleManager: Handover failed. Creating new session controller. +05-26 11:45:51.499 2012 2265 D EGL_emulation: eglMakeCurrent: 0xe8b05420: ver 3 0 (tinfo 0xe8b03980) +05-26 11:45:51.508 2012 2265 D EGL_emulation: eglMakeCurrent: 0xe8b05420: ver 3 0 (tinfo 0xe8b03980) +05-26 11:45:51.538 1876 2204 I GnssLocationProvider: WakeLock acquired by sendMessage(REPORT_SV_STATUS, 0, com.android.server.location.GnssLocationProvider$SvStatusInfo@8dd9b95) +05-26 11:45:51.540 1876 1890 I GnssLocationProvider: WakeLock released by handleMessage(REPORT_SV_STATUS, 0, com.android.server.location.GnssLocationProvider$SvStatusInfo@8dd9b95) +05-26 11:45:51.542 1876 5181 I ActivityManager: Force stopping org.mozilla.fennec_aurora appid=10092 user=0: from pid 2663 +05-26 11:45:51.557 2131 2131 D CarrierSvcBindHelper: No carrier app for: 0 +05-26 11:45:51.590 1560 1573 D vold : Remounting 10092 as mode read +05-26 11:45:51.600 1876 1876 I GnssLocationProvider: WakeLock acquired by sendMessage(SET_REQUEST, 0, com.android.server.location.GnssLocationProvider$GpsRequest@4971377) +05-26 11:45:51.602 1876 1890 I GnssLocationProvider: WakeLock released by handleMessage(SET_REQUEST, 0, com.android.server.location.GnssLocationProvider$GpsRequest@4971377) +05-26 11:45:51.641 1876 1876 V SettingsProvider: Notifying for 0: content://settings/global/debug_app +05-26 11:45:51.673 1876 1876 I GnssLocationProvider: WakeLock acquired by sendMessage(SET_REQUEST, 0, com.android.server.location.GnssLocationProvider$GpsRequest@dfab250) +05-26 11:45:51.674 1560 1573 D vold : Remounting 10092 as mode write +05-26 11:45:51.676 1876 1890 I GnssLocationProvider: WakeLock released by handleMessage(SET_REQUEST, 0, com.android.server.location.GnssLocationProvider$GpsRequest@dfab250) +05-26 11:45:51.682 2116 2662 I ProvidersCache: Provider returned no roots. Possibly naughty: com.google.android.apps.docs.storage +05-26 11:45:51.691 7086 2683 I LocationSettingsChecker: Removing dialog suppression flag for package org.mozilla.fennec_aurora +05-26 11:45:51.738 7086 7124 I Icing : doRemovePackageData org.mozilla.fennec_aurora +05-26 11:45:51.742 2534 2697 W LocationOracle: No location history returned by ContextManager +05-26 11:45:51.781 2482 11975 W ctxmgr : [AclManager]No 3 for (accnt=account#-517948760#, com.google.android.gms(10008):UserVelocityProducer, vrsn=13280022, 0, 3pPkg = null , 3pMdlId = null , pid = 2482). Was: 3 for 1, account#-517948760# +05-26 11:45:51.791 2534 2534 I MicroDetectionWorker: #startMicroDetector [speakerMode: 0] +05-26 11:45:51.791 2534 2534 I AudioController: Using mInputStreamFactoryBuilder +05-26 11:45:51.791 2534 2534 I AudioController: Created new AudioSource +05-26 11:45:51.793 2534 2534 I MicroDetectionWorker: onReady +05-26 11:45:51.795 2012 2265 D EGL_emulation: eglMakeCurrent: 0xe8b05420: ver 3 0 (tinfo 0xe8b03980) +05-26 11:45:51.808 2534 2016 I MicroRecognitionRunner: Starting detection. +05-26 11:45:51.817 2534 2004 I MicrophoneInputStream: mic_starting SR : 16000 CC : 16 SO : 6 +05-26 11:45:51.819 1631 1683 E : Request requires android.permission.RECORD_AUDIO +05-26 11:45:51.819 1631 1683 E AudioPolicyIntefaceImpl: getInputForAttr permission denied: recording not allowed for uid 10039 pid 2534 +05-26 11:45:51.819 1631 1683 E AudioFlinger: createRecord() checkRecordThread_l failed +05-26 11:45:51.819 2534 2004 E IAudioFlinger: createRecord returned error -22 +05-26 11:45:51.819 2534 2004 E AudioRecord: AudioFlinger could not create record track, status: -22 +05-26 11:45:51.819 2534 2004 E AudioRecord-JNI: Error creating AudioRecord instance: initialization check failed with status -22. +05-26 11:45:51.820 2534 2004 E android.media.AudioRecord: Error code -20 when initializing native AudioRecord object. +05-26 11:45:51.820 2534 2004 I MicrophoneInputStream: mic_started SR : 16000 CC : 16 SO : 6 +05-26 11:45:51.820 2534 2004 E ActivityThread: Failed to find provider info for com.google.android.apps.gsa.testing.ui.audio.recorded +05-26 11:45:51.821 2534 2534 I MicroDetectionWorker: onReady +05-26 11:45:51.830 2534 2016 W SpeechLevelGenerator: Really low audio levels detected. The audio input may have issues. +05-26 11:45:51.833 2534 2004 I MicrophoneInputStream: mic_close SR : 16000 CC : 16 SO : 6 +05-26 11:45:51.838 2534 2016 I MicroRecognitionRunner: Detection finished +05-26 11:45:51.839 2534 2016 W ErrorReporter: reportError [type: 211, code: 524300]: Error reading from input stream +05-26 11:45:51.841 2534 2954 I MicroRecognitionRunner: Stopping hotword detection. +05-26 11:45:51.842 2534 2016 W ErrorProcessor: onFatalError, processing error from engine(4) +05-26 11:45:51.842 2534 2016 W ErrorProcessor: com.google.android.apps.gsa.shared.speech.b.g: Error reading from input stream +05-26 11:45:51.842 2534 2016 W ErrorProcessor: at com.google.android.apps.gsa.staticplugins.microdetection.d.k.a(SourceFile:91) +05-26 11:45:51.842 2534 2016 W ErrorProcessor: at com.google.android.apps.gsa.staticplugins.microdetection.d.l.run(Unknown Source:14) +05-26 11:45:51.842 2534 2016 W ErrorProcessor: at com.google.android.libraries.gsa.runner.a.a.b(SourceFile:32) +05-26 11:45:51.842 2534 2016 W ErrorProcessor: at com.google.android.libraries.gsa.runner.a.c.call(Unknown Source:4) +05-26 11:45:51.842 2534 2016 W ErrorProcessor: at java.util.concurrent.FutureTask.run(FutureTask.java:266) +05-26 11:45:51.842 2534 2016 W ErrorProcessor: at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:458) +05-26 11:45:51.842 2534 2016 W ErrorProcessor: at java.util.concurrent.FutureTask.run(FutureTask.java:266) +05-26 11:45:51.842 2534 2016 W ErrorProcessor: at com.google.android.apps.gsa.shared.util.concurrent.b.g.run(Unknown Source:4) +05-26 11:45:51.842 2534 2016 W ErrorProcessor: at com.google.android.apps.gsa.shared.util.concurrent.b.aw.run(SourceFile:4) +05-26 11:45:51.842 2534 2016 W ErrorProcessor: at com.google.android.apps.gsa.shared.util.concurrent.b.aw.run(SourceFile:4) +05-26 11:45:51.842 2534 2016 W ErrorProcessor: at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1167) +05-26 11:45:51.842 2534 2016 W ErrorProcessor: at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:641) +05-26 11:45:51.842 2534 2016 W ErrorProcessor: at java.lang.Thread.run(Thread.java:764) +05-26 11:45:51.842 2534 2016 W ErrorProcessor: at com.google.android.apps.gsa.shared.util.concurrent.b.i.run(SourceFile:6) +05-26 11:45:51.842 2534 2016 W ErrorProcessor: Caused by: com.google.android.apps.gsa.shared.exception.GsaIOException: Error code: 393238 | Buffer overflow, no available space. +05-26 11:45:51.842 2534 2016 W ErrorProcessor: at com.google.android.apps.gsa.speech.audio.Tee.j(SourceFile:103) +05-26 11:45:51.842 2534 2016 W ErrorProcessor: at com.google.android.apps.gsa.speech.audio.au.read(SourceFile:2) +05-26 11:45:51.842 2534 2016 W ErrorProcessor: at java.io.InputStream.read(InputStream.java:101) +05-26 11:45:51.842 2534 2016 W ErrorProcessor: at com.google.android.apps.gsa.speech.audio.ao.run(SourceFile:17) +05-26 11:45:51.842 2534 2016 W ErrorProcessor: at com.google.android.apps.gsa.speech.audio.an.run(SourceFile:2) +05-26 11:45:51.842 2534 2016 W ErrorProcessor: at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:458) +05-26 11:45:51.842 2534 2016 W ErrorProcessor: ... 10 more +05-26 11:45:51.842 2534 2016 I AudioController: internalShutdown +05-26 11:45:51.846 2534 2534 I MicroDetector: Keeping mic open: false +05-26 11:45:51.846 2534 2534 I MicroDetectionWorker: #onError(false) +05-26 11:45:51.847 2534 2697 I DeviceStateChecker: DeviceStateChecker cancelled +05-26 11:45:51.879 1876 16736 I ActivityManager: Force stopping org.mozilla.fennec_aurora appid=10092 user=-1: set debug app +05-26 11:45:51.879 1876 1876 V SettingsProvider: Notifying for 0: content://settings/global/debug_app +05-26 11:45:51.910 1876 3012 I ActivityManager: START u0 {flg=0x10000000 cmp=org.mozilla.fennec_aurora/org.mozilla.fenix.HomeActivity (has extras)} from uid 0 +05-26 11:45:51.961 1876 1893 I ActivityManager: Start proc 2726:org.mozilla.fennec_aurora/u0a92 for activity org.mozilla.fennec_aurora/org.mozilla.fenix.HomeActivity +05-26 11:45:51.964 1623 1623 D gralloc_ranchu: gralloc_alloc: Creating ashmem region of size 9334784 +05-26 11:45:51.967 2726 2726 W a.fennec_auror: Unexpected CPU variant for X86 using defaults: x86 +05-26 11:45:51.969 2482 3056 I Places : ?: PlacesBleScanner start() with priority 2 +05-26 11:45:51.979 1876 1940 D : HostConnection::get() New Host Connection established 0xcf15cd00, tid 1940 +05-26 11:45:52.016 2482 3056 I Places : ?: PlacesBleScanner start() with priority 2 +05-26 11:45:52.020 2482 3056 I PlaceInferenceEngine: [anon] Changed inference mode: 1 +05-26 11:45:52.033 2726 2726 W ActivityThread: Application org.mozilla.fennec_aurora can be debugged on port 8100... +05-26 11:45:52.036 2726 2726 I a.fennec_auror: The ClassLoaderContext is a special shared library. +05-26 11:45:52.046 2482 3056 I Places : Converted 0 out of 1 WiFi scans +05-26 11:45:52.059 1904 1911 D gralloc_ranchu: gralloc_unregister_buffer: exiting HostConnection (is buffer-handling thread) +05-26 11:45:52.060 1904 1911 D : HostConnection::get() New Host Connection established 0xe6d43140, tid 1911 +05-26 11:45:52.060 1904 1911 D gralloc_ranchu: gralloc_unregister_buffer: exiting HostConnection (is buffer-handling thread) +05-26 11:45:52.061 1904 1911 D : HostConnection::get() New Host Connection established 0xe6d43140, tid 1911 +05-26 11:45:52.061 1904 1911 D gralloc_ranchu: gralloc_unregister_buffer: exiting HostConnection (is buffer-handling thread) +05-26 11:45:52.062 1904 1911 D : HostConnection::get() New Host Connection established 0xe6d43140, tid 1911 +05-26 11:45:52.062 1904 1911 D gralloc_ranchu: gralloc_unregister_buffer: exiting HostConnection (is buffer-handling thread) +05-26 11:45:52.063 1623 1623 D gralloc_ranchu: gralloc_alloc: Creating ashmem region of size 9334784 +05-26 11:45:52.063 2534 2825 D EGL_emulation: eglMakeCurrent: 0xe8b06aa0: ver 3 0 (tinfo 0xe8b03b50) +05-26 11:45:52.066 1733 2119 D : HostConnection::get() New Host Connection established 0xed9604c0, tid 2119 +05-26 11:45:52.067 1733 2119 D gralloc_ranchu: gralloc_unregister_buffer: exiting HostConnection (is buffer-handling thread) +05-26 11:45:52.067 1733 2119 D : HostConnection::get() New Host Connection established 0xed9604c0, tid 2119 +05-26 11:45:52.070 2499 2681 D EGL_emulation: eglMakeCurrent: 0xd35359e0: ver 3 0 (tinfo 0xd353b4f0) +05-26 11:45:52.074 1733 2205 D gralloc_ranchu: gralloc_unregister_buffer: exiting HostConnection (is buffer-handling thread) +05-26 11:45:52.075 1733 2205 D : HostConnection::get() New Host Connection established 0xe9a2f7c0, tid 2205 +05-26 11:45:52.075 1733 2205 D gralloc_ranchu: gralloc_unregister_buffer: exiting HostConnection (is buffer-handling thread) +05-26 11:45:52.075 1733 2205 D : HostConnection::get() New Host Connection established 0xe9a2f7c0, tid 2205 +05-26 11:45:52.076 1733 2205 D gralloc_ranchu: gralloc_unregister_buffer: exiting HostConnection (is buffer-handling thread) +05-26 11:45:52.076 1733 2205 D : HostConnection::get() New Host Connection established 0xe9a2f7c0, tid 2205 +05-26 11:45:52.078 1733 2119 D gralloc_ranchu: gralloc_unregister_buffer: exiting HostConnection (is buffer-handling thread) +05-26 11:45:52.079 1733 2119 D : HostConnection::get() New Host Connection established 0xed9604c0, tid 2119 +05-26 11:45:52.079 2012 2265 D EGL_emulation: eglMakeCurrent: 0xe8b05420: ver 3 0 (tinfo 0xe8b03980) +05-26 11:45:52.079 1733 2119 D gralloc_ranchu: gralloc_unregister_buffer: exiting HostConnection (is buffer-handling thread) +05-26 11:45:52.079 1733 2119 D : HostConnection::get() New Host Connection established 0xed9604c0, tid 2119 +05-26 11:45:52.080 1904 1911 D : HostConnection::get() New Host Connection established 0xe6d43140, tid 1911 +05-26 11:45:52.086 1733 2205 D gralloc_ranchu: gralloc_unregister_buffer: exiting HostConnection (is buffer-handling thread) +05-26 11:45:52.088 1733 2119 D gralloc_ranchu: gralloc_unregister_buffer: exiting HostConnection (is buffer-handling thread) +05-26 11:45:52.090 2012 2265 D EGL_emulation: eglMakeCurrent: 0xe8b05420: ver 3 0 (tinfo 0xe8b03980) +05-26 11:45:52.095 2012 2265 D EGL_emulation: eglMakeCurrent: 0xe8b05420: ver 3 0 (tinfo 0xe8b03980) +05-26 11:45:52.102 2482 6321 I PlaceInferenceEngine: No beacon scan available - ignoring candidates. +05-26 11:45:52.106 2012 2265 D EGL_emulation: eglMakeCurrent: 0xe8b05420: ver 3 0 (tinfo 0xe8b03980) +05-26 11:45:52.128 2012 2265 I chatty : uid=10024(com.android.systemui) RenderThread identical 2 lines +05-26 11:45:52.132 2012 2265 D EGL_emulation: eglMakeCurrent: 0xe8b05420: ver 3 0 (tinfo 0xe8b03980) +05-26 11:45:52.134 2482 3056 I Places : ?: PlacesBleScanner start() with priority 2 +05-26 11:45:52.143 2012 2265 D EGL_emulation: eglMakeCurrent: 0xe8b05420: ver 3 0 (tinfo 0xe8b03980) +05-26 11:45:52.147 2012 2265 D EGL_emulation: eglMakeCurrent: 0xe8b05420: ver 3 0 (tinfo 0xe8b03980) +05-26 11:45:52.155 2482 3056 I Places : ?: PlacesBleScanner start() with priority 2 +05-26 11:45:52.162 2482 3056 I PlaceInferenceEngine: [anon] Changed inference mode: 1 +05-26 11:45:52.163 2726 2726 D FirebaseApp: com.google.firebase.auth.FirebaseAuth is not linked. Skipping initialization. +05-26 11:45:52.164 2726 2726 D FirebaseApp: com.google.firebase.crash.FirebaseCrash is not linked. Skipping initialization. +05-26 11:45:52.165 2726 2726 I FirebaseInitProvider: FirebaseApp initialization successful +05-26 11:45:52.167 2012 2265 D EGL_emulation: eglMakeCurrent: 0xe8b05420: ver 3 0 (tinfo 0xe8b03980) +05-26 11:45:52.179 2012 2265 I chatty : uid=10024(com.android.systemui) RenderThread identical 2 lines +05-26 11:45:52.183 2012 2265 D EGL_emulation: eglMakeCurrent: 0xe8b05420: ver 3 0 (tinfo 0xe8b03980) +05-26 11:45:52.190 2482 3056 I Places : Converted 0 out of 1 WiFi scans +05-26 11:45:52.191 2726 2752 W a.fennec_auror: Accessing hidden method Landroid/content/res/Resources$Theme;->rebase()V (dark greylist, linking) +05-26 11:45:52.199 2012 2265 D EGL_emulation: eglMakeCurrent: 0xe8b05420: ver 3 0 (tinfo 0xe8b03980) +05-26 11:45:52.204 2012 2265 D EGL_emulation: eglMakeCurrent: 0xe8b05420: ver 3 0 (tinfo 0xe8b03980) +05-26 11:45:52.223 2726 2726 D FennecProfile: profiles.ini: false +05-26 11:45:52.223 2726 2726 D FennecProfile: No profiles found +05-26 11:45:52.227 2726 2726 D FennecMigrator: No migrations to run. Fennec install - false. +05-26 11:45:52.235 2726 2726 D FenixApplication: Initializing Glean (uploadEnabled=true, isFennec=true) +05-26 11:45:52.263 2482 6321 I PlaceInferenceEngine: No beacon scan available - ignoring candidates. +05-26 11:45:52.264 2482 6319 W ctxmgr : [AclManager]No 2 for (accnt=account#-517948760#, com.google.android.gms(10008):PlacesProducer, vrsn=13280000, 0, 3pPkg = null , 3pMdlId = null , pid = 2482). Was: 3 for 18, account#-517948760# +05-26 11:45:52.280 2726 2762 D RustNativeSupport: findMegazordLibraryName(viaduct, 0.58.1 +05-26 11:45:52.280 2726 2762 D RustNativeSupport: lib in use: none +05-26 11:45:52.280 2726 2762 D RustNativeSupport: lib configured: megazord +05-26 11:45:52.280 2726 2762 D RustNativeSupport: lib version configured: 0.58.1 +05-26 11:45:52.280 2726 2762 D RustNativeSupport: settled on megazord +05-26 11:45:52.338 2726 2752 I FA : Collection disabled with firebase_analytics_collection_enabled=0 +05-26 11:45:52.339 2726 2752 I FA : App measurement is starting up, version: 12780 +05-26 11:45:52.339 2726 2752 I FA : To enable debug logging run: adb shell setprop log.tag.FA VERBOSE +05-26 11:45:52.342 2726 2752 I FA : To enable faster debug mode event logging run: +05-26 11:45:52.342 2726 2752 I FA : adb shell setprop debug.firebase.analytics.app org.mozilla.fennec_aurora +05-26 11:45:52.366 2726 2726 W ActivityThread: ClassLoader.loadClass: The class loader returned by Thread.getContextClassLoader() may fail for processes that host multiple applications. You should explicitly specify a context class loader. For example: Thread.setContextClassLoader(getClass().getClassLoader()); +05-26 11:45:52.377 2726 2726 I GeckoRuntime: Adding debug configuration from: /data/local/tmp/org.mozilla.fennec_aurora-geckoview-config.yaml +05-26 11:45:52.377 2726 2726 D GeckoDebugConfig: Adding environment variables from debug config: {MOZ_CRASHREPORTER=1, MOZ_CRASHREPORTER_NO_REPORT=1, MOZ_CRASHREPORTER_SHUTDOWN=1} +05-26 11:45:52.377 2726 2726 D GeckoDebugConfig: Adding arguments from debug config: [-marionette, -profile, /mnt/sdcard/org.mozilla.fennec_aurora-geckodriver-profile] +05-26 11:45:52.378 2726 2726 D GeckoThread: State changed to LAUNCHED +05-26 11:45:52.390 2726 2773 I GeckoThread: preparing to run Gecko +05-26 11:45:52.399 2726 2773 D GeckoThread: env var: MOZ_CRASHREPORTER=1 +05-26 11:45:52.399 2726 2773 D GeckoThread: env var: MOZ_CRASHREPORTER_NO_REPORT=1 +05-26 11:45:52.399 2726 2773 D GeckoThread: env var: MOZ_CRASHREPORTER_SHUTDOWN=1 +05-26 11:45:52.409 2726 2726 D GeckoRuntime: Lifecycle: onCreate +05-26 11:45:52.479 2726 2773 D GeckoThread: State changed to MOZGLUE_READY +05-26 11:45:52.480 2726 2744 I a.fennec_auror: Background concurrent copying GC freed 13284(2MB) AllocSpace objects, 9(436KB) LOS objects, 49% free, 1904KB/3MB, paused 3.706ms total 105.789ms +05-26 11:45:52.484 2726 2760 D libglean_ffi: glean_ffi: Android logging should be hooked up! +05-26 11:45:52.485 2726 2762 D RustNativeSupport: findMegazordLibraryName(rustlog, 0.58.1 +05-26 11:45:52.485 2726 2762 D RustNativeSupport: lib in use: none +05-26 11:45:52.485 2726 2760 I glean/Glean: Registering pings for mozilla.telemetry.glean.GleanMetrics.Pings +05-26 11:45:52.485 2726 2762 D RustNativeSupport: lib configured: megazord +05-26 11:45:52.485 2726 2762 D RustNativeSupport: lib version configured: 0.58.1 +05-26 11:45:52.486 2726 2762 D RustNativeSupport: settled on megazord +05-26 11:45:52.486 2726 2760 I libglean_ffi: glean_core: Creating new Glean +05-26 11:45:52.486 2726 2762 I rc_log_ffi::ios: rc_log adapter initialized! +05-26 11:45:52.486 2726 2760 D libglean_ffi: glean_core::database: Database path: "/data/user/0/org.mozilla.fennec_aurora/glean_data/db" +05-26 11:45:52.487 2726 2760 I libglean_ffi: glean_core::database: Database initialized +05-26 11:45:52.488 2726 2726 D GleanMetricsService: Enabling Glean. +05-26 11:45:52.488 2726 2773 W Settings: Setting animator_duration_scale has moved from android.provider.Settings.System to android.provider.Settings.Global, returning read-only global URI. +05-26 11:45:52.490 2726 2726 I AdjustMetricsService: No adjust token defined +05-26 11:45:52.490 2726 2726 D PushConfig: Creating push configuration for autopush. +05-26 11:45:52.497 2726 2773 E GeckoLibLoad: Load sqlite start +05-26 11:45:52.499 2726 2726 I App : AutoPushFeature is configured, initializing it... +05-26 11:45:52.502 2726 2726 I AutoPushFeature: Checking validity of push subscriptions. +05-26 11:45:52.519 2726 2726 D FennecProfile: profiles.ini: false +05-26 11:45:52.520 2726 2726 D FennecProfile: No profiles found +05-26 11:45:52.522 2726 2760 I libglean_ffi: glean_ffi: Glean initialized +05-26 11:45:52.523 2726 2773 E GeckoLibLoad: Load sqlite done +05-26 11:45:52.524 2726 2773 E GeckoLibLoad: Load nss start +05-26 11:45:52.524 2726 2773 E GeckoLibLoad: Load nss done +05-26 11:45:52.530 1876 2204 I GnssLocationProvider: WakeLock acquired by sendMessage(REPORT_SV_STATUS, 0, com.android.server.location.GnssLocationProvider$SvStatusInfo@99c3fe3) +05-26 11:45:52.530 2726 2762 W [WARNING][Leanplum]: [com.leanplum.internal.ActionManager::getLocationManager::8]: Geofencing support requires leanplum-location module and Google Play Services v8.1 and higher. +05-26 11:45:52.530 2726 2762 W [WARNING][Leanplum]: Add this to your build.gradle file: +05-26 11:45:52.530 2726 2762 W [WARNING][Leanplum]: implementation 'com.google.android.gms:play-services-location:8.3.0+' +05-26 11:45:52.530 2726 2762 W [WARNING][Leanplum]: implementation 'com.leanplum:leanplum-location:+' +05-26 11:45:52.530 1876 1890 I GnssLocationProvider: WakeLock released by handleMessage(REPORT_SV_STATUS, 0, com.android.server.location.GnssLocationProvider$SvStatusInfo@99c3fe3) +05-26 11:45:52.533 2726 2762 I [INFO][Leanplum]: [com.leanplum.monitoring.ExceptionHandler::setContext::6]: LeanplumExceptionHandler could not initialize Exception Reporting.This is expected if you have not included the leanplum-monitoring module +05-26 11:45:52.562 2726 2726 D FennecMigrator: This is not a Fennec installation. No migration needed. +05-26 11:45:52.584 2726 2782 I [INFO][Leanplum]: [com.leanplum.LeanplumFcmProvider::isManifestSetup::11]: Firebase Messaging is setup correctly. +05-26 11:45:52.592 2726 2726 W a.fennec_auror: Accessing hidden method Landroid/content/res/Resources$Theme;->rebase()V (dark greylist, reflection) +05-26 11:45:52.595 2726 2726 I ResourcesCompat: Failed to retrieve rebase() method +05-26 11:45:52.595 2726 2726 I ResourcesCompat: java.lang.NoSuchMethodException: rebase [] +05-26 11:45:52.595 2726 2726 I ResourcesCompat: at java.lang.Class.getMethod(Class.java:2068) +05-26 11:45:52.595 2726 2726 I ResourcesCompat: at java.lang.Class.getDeclaredMethod(Class.java:2047) +05-26 11:45:52.595 2726 2726 I ResourcesCompat: at androidx.core.content.res.ResourcesCompat$ThemeCompat$ImplApi23.rebase(ResourcesCompat.java:3) +05-26 11:45:52.595 2726 2726 I ResourcesCompat: at androidx.appcompat.app.AppCompatActivity.attachBaseContext(AppCompatActivity.java:80) +05-26 11:45:52.595 2726 2726 I ResourcesCompat: at mozilla.components.support.locale.LocaleAwareAppCompatActivity.attachBaseContext(LocaleAwareAppCompatActivity.kt:2) +05-26 11:45:52.595 2726 2726 I ResourcesCompat: at android.app.Activity.attach(Activity.java:7051) +05-26 11:45:52.595 2726 2726 I ResourcesCompat: at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2873) +05-26 11:45:52.595 2726 2726 I ResourcesCompat: at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3048) +05-26 11:45:52.595 2726 2726 I ResourcesCompat: at android.app.servertransaction.LaunchActivityItem.execute(LaunchActivityItem.java:78) +05-26 11:45:52.595 2726 2726 I ResourcesCompat: at android.app.servertransaction.TransactionExecutor.executeCallbacks(TransactionExecutor.java:108) +05-26 11:45:52.595 2726 2726 I ResourcesCompat: at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:68) +05-26 11:45:52.595 2726 2726 I ResourcesCompat: at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1808) +05-26 11:45:52.595 2726 2726 I ResourcesCompat: at android.os.Handler.dispatchMessage(Handler.java:106) +05-26 11:45:52.595 2726 2726 I ResourcesCompat: at android.os.Looper.loop(Looper.java:193) +05-26 11:45:52.595 2726 2726 I ResourcesCompat: at android.app.ActivityThread.main(ActivityThread.java:6669) +05-26 11:45:52.595 2726 2726 I ResourcesCompat: at java.lang.reflect.Method.invoke(Native Method) +05-26 11:45:52.595 2726 2726 I ResourcesCompat: at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:493) +05-26 11:45:52.595 2726 2726 I ResourcesCompat: at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:858) +05-26 11:45:52.609 2726 2773 E GeckoLibLoad: Loaded libs in 84.685000ms total, 0ms(60ms) user, 30ms(100ms) system, 0(0) faults +05-26 11:45:52.610 2726 2773 D GeckoThread: State changed to LIBS_READY +05-26 11:45:52.612 2726 2773 W GeckoThread: zerdatime 190872808 - runGecko +05-26 11:45:52.613 2726 2773 D GeckoProfile: Loading profile at: null name: default +05-26 11:45:52.614 2726 2773 D GeckoProfile: Created new profile dir. +05-26 11:45:52.614 2726 2773 I GeckoProfile: Enqueuing profile init. +05-26 11:45:52.616 2726 2773 D GeckoProfile: Found profile dir: /data/user/0/org.mozilla.fennec_aurora/files/mozilla/acwxvl2q.default +05-26 11:45:52.616 2726 2773 D GeckoProfile: Attempting to write new client ID properties +05-26 11:45:52.617 2726 2773 D GeckoProfile: Creating profile dir: /data/user/0/org.mozilla.fennec_aurora/files/mozilla/acwxvl2q.default +05-26 11:45:52.671 2726 2760 I glean/MetricsPingSched: The application just updated. Send metrics ping now. +05-26 11:45:52.672 2726 2760 I glean/MetricsPingSched: Collecting the 'metrics' ping, now = Tue May 26 11:45:52 EDT 2020, startup = true, reason = upgrade +05-26 11:45:52.672 2726 2760 I libglean_ffi: glean_core::ping: Collecting metrics +05-26 11:45:52.672 2726 2760 I libglean_ffi: glean_core::ping: Storage for metrics empty. Bailing out. +05-26 11:45:52.672 2726 2760 I libglean_ffi: glean_core: No content for ping 'metrics', therefore no ping queued. +05-26 11:45:52.673 2726 2760 D glean/MetricsPingSched: Scheduling the 'metrics' ping in 58447335ms +05-26 11:45:52.678 2726 2773 I Gecko:DumpUtils: Fifo watcher disabled via pref. +05-26 11:45:52.738 2726 2773 D GeckoSysInfo: System memory: 1494MB. +05-26 11:45:52.740 2726 2773 D GeckoThread: State changed to JNI_READY +05-26 11:45:52.753 2726 2812 D ServiceAllocator: org.mozilla.gecko.process.GeckoChildProcessServices$tab0 updateBindings: BACKGROUND priority, 0 importance, 2 successful binds, 0 failed binds, 0 successful unbinds, 0 failed unbinds +05-26 11:45:52.759 2819 2819 W nec_aurora:tab: Unexpected CPU variant for X86 using defaults: x86 +05-26 11:45:52.763 1876 1893 I ActivityManager: Start proc 2819:org.mozilla.fennec_aurora:tab0/u0a92 for service org.mozilla.fennec_aurora/org.mozilla.gecko.process.GeckoChildProcessServices$tab0 +05-26 11:45:52.794 2819 2819 I nec_aurora:tab: The ClassLoaderContext is a special shared library. +05-26 11:45:52.803 2726 2726 I FirefoxAccountStateMachine: Enabling/updating sync with a new SyncConfig: SyncConfig(supportedEngines=[mozilla.components.service.fxa.SyncEngine$History@5c45c02, mozilla.components.service.fxa.SyncEngine$Bookmarks@42ff913, mozilla.components.service.fxa.SyncEngine$Passwords@e030750], syncPeriodInMinutes=240) +05-26 11:45:52.806 2726 2726 I BgSyncManager: Periodic syncing enabled at a 240 interval +05-26 11:45:52.807 2726 2726 I FirefoxAccountStateMachine: Sync is enabled +05-26 11:45:52.831 2726 2844 I FirefoxAccountStateMachine: Processing event Event$Init for state Start. Next state is Start +05-26 11:45:52.842 2819 2819 D GeckoThread: State changed to LAUNCHED +05-26 11:45:52.843 2819 2847 I GeckoThread: preparing to run Gecko +05-26 11:45:52.849 2726 2726 E ActivityThread: Failed to find provider info for org.mozilla.fennec_aurora.fxa.auth +05-26 11:45:52.873 1739 1739 I keystore: del USRPKEY_org.mozilla.fennec_aurora 10092 +05-26 11:45:52.874 1739 1739 I keystore: del USRCERT_org.mozilla.fennec_aurora 10092 +05-26 11:45:52.874 1739 1739 I keystore: del CACERT_org.mozilla.fennec_aurora 10092 +05-26 11:45:52.884 2726 2726 D GeckoRuntime: Lifecycle: onStart +05-26 11:45:52.895 2726 2726 D GeckoRuntime: Lifecycle: onResume +05-26 11:45:52.899 2726 2726 D GeckoNetworkManager: Incoming event start for state OffNoListeners -> OnNoListeners +05-26 11:45:52.900 2726 2726 D GeckoNetworkManager: New network state: UP, WIFI, WIFI +05-26 11:45:52.905 2726 2844 I FirefoxAccountStateMachine: Ran 'Event$Init' side-effects for state Start, got successive event Event$AccountNotFound +05-26 11:45:52.905 2726 2844 I FirefoxAccountStateMachine: Processing event Event$AccountNotFound for state Start. Next state is NotAuthenticated +05-26 11:45:52.906 2726 2726 D OpenGLRenderer: Skia GL Pipeline +05-26 11:45:52.911 2726 2844 D RustNativeSupport: findMegazordLibraryName(fxaclient, 0.58.1 +05-26 11:45:52.911 2726 2844 D RustNativeSupport: lib in use: none +05-26 11:45:52.911 2726 2844 D RustNativeSupport: lib configured: megazord +05-26 11:45:52.912 2726 2844 D RustNativeSupport: lib version configured: 0.58.1 +05-26 11:45:52.912 2726 2844 D RustNativeSupport: settled on megazord +05-26 11:45:52.913 2726 2844 D fxaclient_ffi: fxa_new +05-26 11:45:52.920 2726 2782 D NetworkSecurityConfig: No Network Security Config specified, using platform default +05-26 11:45:52.927 1733 2119 E SurfaceFlinger: ro.sf.lcd_density must be defined as a build property +05-26 11:45:52.972 2726 2760 I libglean_ffi: glean_core::ping: Collecting baseline +05-26 11:45:52.979 2726 2726 D GeckoNetworkManager: Incoming event receivedUpdate for state OnNoListeners -> OnNoListeners +05-26 11:45:52.979 2726 2844 W FirefoxAccountStateMachine: Got invalid event Event$Init for state NotAuthenticated. +05-26 11:45:52.981 2726 2726 D GeckoNetworkManager: New network state: UP, WIFI, WIFI +05-26 11:45:52.995 2726 2760 D libglean_ffi: glean_core::ping: Storing ping 'f465c424-af4c-4a9b-bfc4-c1f4a2161777' at '/data/user/0/org.mozilla.fennec_aurora/glean_data/pending_pings/f465c424-af4c-4a9b-bfc4-c1f4a2161777' +05-26 11:45:52.995 2726 2760 I libglean_ffi: glean_core: The ping 'baseline' was submitted and will be sent as soon as possible +05-26 11:45:53.041 2726 2744 I a.fennec_auror: Background concurrent copying GC freed 8507(1030KB) AllocSpace objects, 24(1248KB) LOS objects, 49% free, 3MB/6MB, paused 878us total 103.693ms +05-26 11:45:53.053 1623 1623 D gralloc_ranchu: gralloc_alloc: Creating ashmem region of size 9334784 +05-26 11:45:53.061 1733 2205 D : HostConnection::get() New Host Connection established 0xed960980, tid 2205 +05-26 11:45:53.061 1623 1623 D gralloc_ranchu: gralloc_alloc: Creating ashmem region of size 9334784 +05-26 11:45:53.088 1876 16736 D ConnectivityService: requestNetwork for uid/pid:10092/2726 NetworkRequest [ TRACK_DEFAULT id=236, [ Capabilities: INTERNET&NOT_RESTRICTED&TRUSTED Unwanted: Uid: 10092] ] +05-26 11:45:53.068 1623 1623 D gralloc_ranchu: gralloc_alloc: Creating ashmem region of size 9334784 +05-26 11:45:53.090 1876 1975 D WIFI : got request NetworkRequest [ TRACK_DEFAULT id=236, [ Capabilities: INTERNET&NOT_RESTRICTED&TRUSTED Unwanted: Uid: 10092] ] with score 60 +05-26 11:45:53.090 1876 1975 D WIFI_UT : got request NetworkRequest [ TRACK_DEFAULT id=236, [ Capabilities: INTERNET&NOT_RESTRICTED&TRUSTED Unwanted: Uid: 10092] ] with score 60 +05-26 11:45:53.091 2131 2131 D PhoneSwitcherNetworkRequstListener: got request NetworkRequest [ TRACK_DEFAULT id=236, [ Capabilities: INTERNET&NOT_RESTRICTED&TRUSTED Unwanted: Uid: 10092] ] with score 60 +05-26 11:45:53.139 2726 2853 D : HostConnection::get() New Host Connection established 0xe5eeb400, tid 2853 +05-26 11:45:53.147 2726 2853 I ConfigStore: android::hardware::configstore::V1_0::ISurfaceFlingerConfigs::hasWideColorDisplay retrieved: 0 +05-26 11:45:53.147 2726 2853 I ConfigStore: android::hardware::configstore::V1_0::ISurfaceFlingerConfigs::hasHDRDisplay retrieved: 0 +05-26 11:45:53.147 2726 2853 I OpenGLRenderer: Initialized EGL, version 1.4 +05-26 11:45:53.147 2726 2853 D OpenGLRenderer: Swap behavior 1 +05-26 11:45:53.147 2726 2853 W OpenGLRenderer: Failed to choose config with EGL_SWAP_BEHAVIOR_PRESERVED, retrying without... +05-26 11:45:53.147 2726 2853 D OpenGLRenderer: Swap behavior 0 +05-26 11:45:53.148 2726 2853 D EGL_emulation: eglCreateContext: 0xd25033c0: maj 3 min 0 rcv 3 +05-26 11:45:53.149 2726 2853 D EGL_emulation: eglMakeCurrent: 0xd25033c0: ver 3 0 (tinfo 0xe7113e50) +05-26 11:45:53.152 1733 2205 E SurfaceFlinger: ro.sf.lcd_density must be defined as a build property +05-26 11:45:53.231 2726 2853 D EGL_emulation: eglMakeCurrent: 0xd25033c0: ver 3 0 (tinfo 0xe7113e50) +05-26 11:45:53.271 2726 2726 D MigrationPushRenewer: Migration state: NONE +05-26 11:45:53.271 2726 2726 D MigrationTelemetryListener: Migration state: NONE +05-26 11:45:53.271 2000 2000 I GoogleInputMethod: onFinishInput() : Dummy InputConnection bound +05-26 11:45:53.272 2000 2000 I GoogleInputMethod: onStartInput() : Dummy InputConnection bound +05-26 11:45:53.275 2726 2726 D GeckoNetworkManager: Incoming event enableNotifications for state OnNoListeners -> OnWithListeners +05-26 11:45:53.277 2726 2726 D GeckoNetworkManager: New network state: UP, WIFI, WIFI +05-26 11:45:53.277 1876 16736 W ActivityManager: Receiver with filter android.content.IntentFilter@513011f already registered for pid 2726, callerPackage is org.mozilla.fennec_aurora +05-26 11:45:53.283 2726 2882 D glean/PingUploadWorker: Processing persisted pings at /data/user/0/org.mozilla.fennec_aurora/glean_data/pending_pings +05-26 11:45:53.283 2726 2882 D glean/PingUploadWorker: Processing ping: f465c424-af4c-4a9b-bfc4-c1f4a2161777 +05-26 11:45:53.284 2726 2882 D glean/ConceptFetchHttpUploader: Submitting ping to: https://incoming.telemetry.mozilla.org/submit/org-mozilla-fennec-aurora/baseline/1/f465c424-af4c-4a9b-bfc4-c1f4a2161777 +05-26 11:45:53.285 1876 1899 I ActivityManager: Displayed org.mozilla.fennec_aurora/org.mozilla.fenix.HomeActivity: +1s325ms +05-26 11:45:53.287 2726 2726 E ActivityThread: Failed to find provider info for org.mozilla.fennec_aurora.fxa.auth +05-26 11:45:53.291 4313 4313 E adbd : failed to connect to socket 'tcp:2829': Connection refused +05-26 11:45:53.307 2726 2726 D GeckoNetworkManager: Incoming event receivedUpdate for state OnWithListeners -> OnWithListeners +05-26 11:45:53.307 2726 2726 D GeckoNetworkManager: New network state: UP, WIFI, WIFI +05-26 11:45:53.396 4313 4313 E adbd : failed to connect to socket 'tcp:2829': Connection refused +05-26 11:45:53.462 1876 1940 D gralloc_ranchu: gralloc_unregister_buffer: exiting HostConnection (is buffer-handling thread) +05-26 11:45:53.463 1876 1940 D : HostConnection::get() New Host Connection established 0xcf15cd00, tid 1940 +05-26 11:45:53.463 1876 1940 D gralloc_ranchu: gralloc_unregister_buffer: exiting HostConnection (is buffer-handling thread) +05-26 11:45:53.464 1876 1940 D : HostConnection::get() New Host Connection established 0xcf15cd00, tid 1940 +05-26 11:45:53.465 1876 1940 D gralloc_ranchu: gralloc_unregister_buffer: exiting HostConnection (is buffer-handling thread) +05-26 11:45:53.466 1876 1940 D : HostConnection::get() New Host Connection established 0xcf15cd00, tid 1940 +05-26 11:45:53.467 1876 1940 D gralloc_ranchu: gralloc_unregister_buffer: exiting HostConnection (is buffer-handling thread) +05-26 11:45:53.467 1733 1759 W SurfaceFlinger: Attempting to set client state on removed layer: Splash Screen org.mozilla.fennec_aurora#0 +05-26 11:45:53.467 1733 1759 W SurfaceFlinger: Attempting to destroy on removed layer: Splash Screen org.mozilla.fennec_aurora#0 +05-26 11:45:53.477 1904 1911 D gralloc_ranchu: gralloc_unregister_buffer: exiting HostConnection (is buffer-handling thread) +05-26 11:45:53.478 1904 1911 D : HostConnection::get() New Host Connection established 0xe6d43140, tid 1911 +05-26 11:45:53.478 1904 1911 D gralloc_ranchu: gralloc_unregister_buffer: exiting HostConnection (is buffer-handling thread) +05-26 11:45:53.479 1904 1911 D : HostConnection::get() New Host Connection established 0xe6d43140, tid 1911 +05-26 11:45:53.479 1904 1911 D gralloc_ranchu: gralloc_unregister_buffer: exiting HostConnection (is buffer-handling thread) +05-26 11:45:53.479 1904 1911 D : HostConnection::get() New Host Connection established 0xe6d43140, tid 1911 +05-26 11:45:53.479 1904 1911 D gralloc_ranchu: gralloc_unregister_buffer: exiting HostConnection (is buffer-handling thread) +05-26 11:45:53.487 1904 1911 D : HostConnection::get() New Host Connection established 0xe6d43140, tid 1911 +05-26 11:45:53.498 4313 4313 E adbd : failed to connect to socket 'tcp:2829': Connection refused +05-26 11:45:53.529 1876 2204 I GnssLocationProvider: WakeLock acquired by sendMessage(REPORT_SV_STATUS, 0, com.android.server.location.GnssLocationProvider$SvStatusInfo@ca37570) +05-26 11:45:53.530 1876 1890 I GnssLocationProvider: WakeLock released by handleMessage(REPORT_SV_STATUS, 0, com.android.server.location.GnssLocationProvider$SvStatusInfo@ca37570) +05-26 11:45:53.546 2726 2726 I [INFO][Leanplum]: [com.leanplum.LeanplumCloudMessagingProvider::onRegistrationIdReceived::3]: Device registered for push notifications with registration token, cLw1ufUAypU:APA91bHwfEq1krMCzf_jHv5X8dBYH06lrQ2wpvlxNyYV8_MykbUmRTposZZdoFxensMQrmcByfnWHr-LSb3YUIsBTDKhSf42XmbTB1pI8PFxQQT0aoQU6n1Xba4dyepXUu_1ENC-UDHA +05-26 11:45:53.600 4313 4313 E adbd : failed to connect to socket 'tcp:2829': Connection refused +05-26 11:45:53.669 2726 2744 I a.fennec_auror: Background concurrent copying GC freed 20991(1619KB) AllocSpace objects, 35(892KB) LOS objects, 49% free, 4MB/8MB, paused 2.056ms total 174.646ms +05-26 11:45:53.674 2726 2896 I [INFO][Leanplum]: [com.leanplum.LeanplumCloudMessagingProvider::onRegistrationIdReceived::3]: Device registered for push notifications with registration token, cLw1ufUAypU:APA91bHwfEq1krMCzf_jHv5X8dBYH06lrQ2wpvlxNyYV8_MykbUmRTposZZdoFxensMQrmcByfnWHr-LSb3YUIsBTDKhSf42XmbTB1pI8PFxQQT0aoQU6n1Xba4dyepXUu_1ENC-UDHA +05-26 11:45:53.689 2726 2897 I AutoPushFeature: Received a new registration token from push service. +05-26 11:45:53.691 2726 2897 D RustNativeSupport: findMegazordLibraryName(push, 0.58.1 +05-26 11:45:53.691 2726 2897 D RustNativeSupport: lib in use: none +05-26 11:45:53.691 2726 2897 D RustNativeSupport: lib configured: megazord +05-26 11:45:53.691 2726 2897 D RustNativeSupport: lib version configured: 0.58.1 +05-26 11:45:53.691 2726 2897 D RustNativeSupport: settled on megazord +05-26 11:45:53.702 4313 4313 E adbd : failed to connect to socket 'tcp:2829': Connection refused +05-26 11:45:53.715 1733 1733 W SurfaceFlinger: couldn't log to binary event log: overflow. +05-26 11:45:53.771 2726 2773 D GeckoThread: State changed to PROFILE_READY +05-26 11:45:53.802 2726 2773 D GeckoThread: State changed to RUNNING +05-26 11:45:53.807 4313 4313 E adbd : failed to connect to socket 'tcp:2829': Connection refused +05-26 11:45:53.810 2726 2773 I Gecko : -*- nsDNSServiceDiscovery.js : nsDNSServiceDiscovery +05-26 11:45:53.825 2534 2004 I PBSessionCacheImpl: Deleted sessionId[290782986459] from persistence. +05-26 11:45:53.832 2726 2773 I Gecko : 1590507953832 Marionette TRACE Marionette enabled +05-26 11:45:53.836 2534 2534 W SearchService: Abort, client detached. +05-26 11:45:53.915 4313 4313 E adbd : failed to connect to socket 'tcp:2829': Connection refused +05-26 11:45:53.929 2726 2726 I DefaultSupportedAddonsChecker: Register check for new supported add-ons +05-26 11:45:53.941 2726 2773 I Gecko : 1590507953941 Marionette TRACE Received observer notification marionette-startup-requested +05-26 11:45:53.942 2726 2773 I Gecko : 1590507953942 Marionette TRACE Waiting until startup recorder finished recording startup scripts... +05-26 11:45:53.976 2726 2858 I SupportedAddonsWorker: Trying to check for new supported add-ons +05-26 11:45:54.017 4313 4313 E adbd : failed to connect to socket 'tcp:2829': Connection refused +05-26 11:45:54.125 4313 4313 I chatty : uid=0(root) /system/bin/adbd identical 1 line +05-26 11:45:54.229 4313 4313 E adbd : failed to connect to socket 'tcp:2829': Connection refused +05-26 11:45:54.241 2726 2726 D App : Installed browser-icons extension +05-26 11:45:54.315 2726 2773 D : HostConnection::get() New Host Connection established 0xd2559d80, tid 2773 +05-26 11:45:54.317 2726 2773 E EGL_emulation: tid 2773: eglBindAPI(1259): error 0x300c (EGL_BAD_PARAMETER) +05-26 11:45:54.319 2726 2773 D EGL_emulation: eglCreateContext: 0xee947400: maj 3 min 0 rcv 3 +05-26 11:45:54.321 2726 2773 D EGL_emulation: eglMakeCurrent: 0xee947400: ver 3 0 (tinfo 0xe7113aa0) +05-26 11:45:54.331 4313 4313 E adbd : failed to connect to socket 'tcp:2829': Connection refused +05-26 11:45:54.435 4313 4313 E adbd : failed to connect to socket 'tcp:2829': Connection refused +05-26 11:45:54.501 2726 2882 D glean/ConceptFetchHttpUploader: Ping successfully sent (200) +05-26 11:45:54.501 2726 2882 D glean/PingUploadWorker: f465c424-af4c-4a9b-bfc4-c1f4a2161777 was deleted: true +05-26 11:45:54.505 2726 2770 I WM-WorkerWrapper: Worker result SUCCESS for Work [ id=82564a1f-761f-43fa-a170-fb28e9f6e99e, tags={ mozilla.telemetry.glean.scheduler.PingUploadWorker, mozac_service_glean_ping_upload_worker } ] +05-26 11:45:54.511 1876 1978 D ConnectivityService: releasing NetworkRequest [ TRACK_DEFAULT id=236, [ Capabilities: INTERNET&NOT_RESTRICTED&TRUSTED Unwanted: Uid: 10092] ] (release request) +05-26 11:45:54.531 1876 2204 I GnssLocationProvider: WakeLock acquired by sendMessage(REPORT_SV_STATUS, 0, com.android.server.location.GnssLocationProvider$SvStatusInfo@383f15d) +05-26 11:45:54.531 1876 1890 I GnssLocationProvider: WakeLock released by handleMessage(REPORT_SV_STATUS, 0, com.android.server.location.GnssLocationProvider$SvStatusInfo@383f15d) +05-26 11:45:54.539 4313 4313 E adbd : failed to connect to socket 'tcp:2829': Connection refused +05-26 11:45:54.641 4313 4313 E adbd : failed to connect to socket 'tcp:2829': Connection refused +05-26 11:45:54.714 2726 2726 D mozac-webcompat: Installed WebCompat webextension: webcompat@mozilla.com +05-26 11:45:54.724 2726 2773 I Gecko : 1590507954724 Marionette TRACE All scripts recorded. +05-26 11:45:54.725 2726 2773 I Gecko : 1590507954725 Marionette DEBUG Setting recommended pref apz.content_response_timeout to 60000 +05-26 11:45:54.725 2726 2773 I Gecko : 1590507954725 Marionette DEBUG Setting recommended pref browser.contentblocking.introCount to 99 +05-26 11:45:54.725 2726 2773 I Gecko : 1590507954725 Marionette DEBUG Setting recommended pref browser.download.panel.shown to true +05-26 11:45:54.725 2726 2773 I Gecko : 1590507954725 Marionette DEBUG Setting recommended pref browser.newtabpage.enabled to false +05-26 11:45:54.726 2726 2773 I Gecko : 1590507954726 Marionette DEBUG Setting recommended pref browser.safebrowsing.malware.enabled to false +05-26 11:45:54.730 2726 2773 I Gecko : 1590507954730 Marionette DEBUG Setting recommended pref browser.safebrowsing.phishing.enabled to false +05-26 11:45:54.733 2726 2773 I Gecko : 1590507954733 Marionette DEBUG Setting recommended pref browser.search.update to false +05-26 11:45:54.733 2726 2773 I Gecko : 1590507954733 Marionette DEBUG Setting recommended pref browser.tabs.disableBackgroundZombification to false +05-26 11:45:54.733 2726 2773 I Gecko : 1590507954733 Marionette DEBUG Setting recommended pref browser.tabs.remote.separatePrivilegedContentProcess to false +05-26 11:45:54.734 2726 2773 I Gecko : 1590507954734 Marionette DEBUG Setting recommended pref browser.tabs.unloadOnLowMemory to false +05-26 11:45:54.734 2726 2773 I Gecko : 1590507954734 Marionette DEBUG Setting recommended pref browser.tabs.warnOnCloseOtherTabs to false +05-26 11:45:54.734 2726 2773 I Gecko : 1590507954734 Marionette DEBUG Setting recommended pref browser.tabs.warnOnOpen to false +05-26 11:45:54.734 2726 2773 I Gecko : 1590507954734 Marionette DEBUG Setting recommended pref browser.usedOnWindows10.introURL to +05-26 11:45:54.735 2726 2773 I Gecko : 1590507954735 Marionette DEBUG Setting recommended pref browser.urlbar.suggest.searches to false +05-26 11:45:54.736 2726 2773 I Gecko : 1590507954736 Marionette DEBUG Setting recommended pref dom.disable_beforeunload to true +05-26 11:45:54.736 2726 2773 I Gecko : 1590507954736 Marionette DEBUG Setting recommended pref dom.file.createInChild to true +05-26 11:45:54.736 2726 2773 I Gecko : 1590507954736 Marionette DEBUG Setting recommended pref extensions.getAddons.cache.enabled to false +05-26 11:45:54.736 2726 2773 I Gecko : 1590507954736 Marionette DEBUG Setting recommended pref network.http.prompt-temp-redirect to false +05-26 11:45:54.737 2726 2773 I Gecko : 1590507954737 Marionette DEBUG Setting recommended pref security.notification_enable_delay to 0 +05-26 11:45:54.738 2726 2773 I Gecko : 1590507954737 Marionette DEBUG Setting recommended pref signon.autofillForms to false +05-26 11:45:54.738 2726 2773 I Gecko : 1590507954738 Marionette DEBUG Setting recommended pref signon.rememberSignons to false +05-26 11:45:54.738 2726 2773 I Gecko : 1590507954738 Marionette DEBUG Setting recommended pref toolkit.cosmeticAnimations.enabled to false +05-26 11:45:54.743 4313 4313 E adbd : failed to connect to socket 'tcp:2829': Connection refused +05-26 11:45:54.809 2726 2773 I Gecko : 1590507954808 Marionette INFO Listening on port 2829 +05-26 11:45:54.809 2726 2773 I Gecko : 1590507954809 Marionette DEBUG Marionette is listening +05-26 11:45:54.868 2726 2773 I Gecko : 1590507954868 Marionette DEBUG Accepted connection 0 from 127.0.0.1:56755 +05-26 11:45:54.879 2726 2773 I Gecko : 1590507954879 Marionette DEBUG 0 -> [0,1,"WebDriver:NewSession",{"browserName":"firefox","pageLoadStrategy":"none"}] +05-26 11:45:55.535 1876 2204 I GnssLocationProvider: WakeLock acquired by sendMessage(REPORT_SV_STATUS, 0, com.android.server.location.GnssLocationProvider$SvStatusInfo@da64ad2) +05-26 11:45:55.536 1876 1890 I GnssLocationProvider: WakeLock released by handleMessage(REPORT_SV_STATUS, 0, com.android.server.location.GnssLocationProvider$SvStatusInfo@da64ad2) +05-26 11:45:55.540 2482 6319 W ctxmgr : [AclManager]No 2 for (accnt=account#-517948760#, com.google.android.gms(10008):IndoorOutdoorProducer, vrsn=13280000, 0, 3pPkg = null , 3pMdlId = null , pid = 2482). Was: 3 for 57, account#-517948760# +05-26 11:45:55.567 2726 2770 I WM-WorkerWrapper: Worker result SUCCESS for Work [ id=1c2acf6f-dff9-4397-a0d6-bcd151200102, tags={ mozilla.components.feature.addons.migration.DefaultSupportedAddonsChecker.periodicWork, mozilla.components.feature.addons.migration.SupportedAddonsWorker } ] +05-26 11:45:56.065 2958 2958 I lla.fenix.debu: Not late-enabling -Xcheck:jni (already on) +05-26 11:45:56.071 1876 1893 I ActivityManager: Start proc 2958:org.mozilla.fenix.debug/u0a91 for service org.mozilla.fenix.debug/androidx.work.impl.background.systemjob.SystemJobService +05-26 11:45:56.085 2958 2958 W lla.fenix.debu: Unexpected CPU variant for X86 using defaults: x86 +05-26 11:45:56.143 2958 2958 I lla.fenix.debu: The ClassLoaderContext is a special shared library. +05-26 11:45:56.540 1876 2204 I GnssLocationProvider: WakeLock acquired by sendMessage(REPORT_SV_STATUS, 0, com.android.server.location.GnssLocationProvider$SvStatusInfo@7677aff) +05-26 11:45:56.540 1876 1890 I GnssLocationProvider: WakeLock released by handleMessage(REPORT_SV_STATUS, 0, com.android.server.location.GnssLocationProvider$SvStatusInfo@7677aff) +05-26 11:45:56.555 1876 4916 E memtrack: Couldn't load memtrack module +05-26 11:45:56.555 1876 4916 W android.os.Debug: failed to get memory consumption info: -1 +05-26 11:45:56.786 2534 2016 I EventLogSendingHelper: Sending log events. +05-26 11:45:56.796 2958 2958 D FirebaseApp: Default FirebaseApp failed to initialize because no default options were found. This usually means that com.google.gms:google-services was not applied to your gradle project. +05-26 11:45:56.797 2958 2958 I FirebaseInitProvider: FirebaseApp initialization unsuccessful +05-26 11:45:56.962 2958 2958 D FenixApplication: Initializing Glean (uploadEnabled=true, isFennec=false) +05-26 11:45:57.003 2958 2984 D RustNativeSupport: findMegazordLibraryName(viaduct, 0.59.0 +05-26 11:45:57.003 2958 2984 D RustNativeSupport: lib in use: none +05-26 11:45:57.003 2958 2984 D RustNativeSupport: lib configured: megazord +05-26 11:45:57.003 2958 2984 D RustNativeSupport: lib version configured: 0.59.0 +05-26 11:45:57.003 2958 2984 D RustNativeSupport: settled on megazord +05-26 11:45:57.158 2958 2983 D libglean_ffi: glean_ffi: Android logging should be hooked up! +05-26 11:45:57.162 2958 2984 D RustNativeSupport: findMegazordLibraryName(rustlog, 0.59.0 +05-26 11:45:57.163 2958 2984 D RustNativeSupport: lib in use: none +05-26 11:45:57.163 2958 2984 D RustNativeSupport: lib configured: megazord +05-26 11:45:57.163 2958 2984 D RustNativeSupport: lib version configured: 0.59.0 +05-26 11:45:57.163 2958 2984 D RustNativeSupport: settled on megazord +05-26 11:45:57.171 2958 2983 I glean/Glean: Registering pings for mozilla.telemetry.glean.GleanMetrics.Pings +05-26 11:45:57.176 2958 2984 I rc_log_ffi::ios: rc_log adapter initialized! +05-26 11:45:57.176 2958 2983 I libglean_ffi: glean_core: Creating new Glean +05-26 11:45:57.182 2958 2983 D libglean_ffi: glean_core::database: Database path: "/data/user/0/org.mozilla.fenix.debug/glean_data/db" +05-26 11:45:57.186 2958 2983 I libglean_ffi: glean_core::database: Database initialized +05-26 11:45:57.195 2958 2983 I libglean_ffi: glean_ffi: Glean initialized +05-26 11:45:57.235 2958 2958 I GeckoRuntime: Adding debug configuration from: /data/local/tmp/org.mozilla.fenix.debug-geckoview-config.yaml +05-26 11:45:57.235 2958 2958 D GeckoDebugConfig: Adding environment variables from debug config: {MOZ_CRASHREPORTER=1, MOZ_CRASHREPORTER_NO_REPORT=1, MOZ_CRASHREPORTER_SHUTDOWN=1} +05-26 11:45:57.236 2958 2958 D GeckoDebugConfig: Adding arguments from debug config: [-marionette, -profile, /mnt/sdcard/org.mozilla.fenix.debug-geckodriver-profile] +05-26 11:45:57.241 2958 2958 D GeckoThread: State changed to LAUNCHED +05-26 11:45:57.243 2958 2993 I GeckoThread: preparing to run Gecko +05-26 11:45:57.243 2958 2983 D glean/MetricsPingSched: The 'metrics' ping was last sent on Tue May 26 00:00:00 EDT 2020 +05-26 11:45:57.243 2958 2993 D GeckoThread: env var: MOZ_CRASHREPORTER=1 +05-26 11:45:57.243 2958 2993 D GeckoThread: env var: MOZ_CRASHREPORTER_NO_REPORT=1 +05-26 11:45:57.244 2958 2993 D GeckoThread: env var: MOZ_CRASHREPORTER_SHUTDOWN=1 +05-26 11:45:57.244 2958 2983 I glean/MetricsPingSched: The 'metrics' ping was already sent today, Tue May 26 11:45:57 EDT 2020. +05-26 11:45:57.244 2958 2983 D glean/MetricsPingSched: Scheduling the 'metrics' ping in 58442800ms +05-26 11:45:57.247 2958 2983 D libglean_ffi: glean_core: Clearing Lifetime::Application metrics +05-26 11:45:57.268 2958 2958 D GeckoRuntime: Lifecycle: onCreate +05-26 11:45:57.305 2958 2993 D GeckoThread: State changed to MOZGLUE_READY +05-26 11:45:57.323 2958 2993 W Settings: Setting animator_duration_scale has moved from android.provider.Settings.System to android.provider.Settings.Global, returning read-only global URI. +05-26 11:45:57.328 2958 2993 E GeckoLibLoad: Load sqlite start +05-26 11:45:57.350 2958 2993 E GeckoLibLoad: Load sqlite done +05-26 11:45:57.350 2958 2993 E GeckoLibLoad: Load nss start +05-26 11:45:57.350 2958 2993 E GeckoLibLoad: Load nss done +05-26 11:45:57.499 2958 2958 D LeakCanary: Updated AppWatcher.config: Config(no changes) +05-26 11:45:57.542 1876 2204 I GnssLocationProvider: WakeLock acquired by sendMessage(REPORT_SV_STATUS, 0, com.android.server.location.GnssLocationProvider$SvStatusInfo@b66791) +05-26 11:45:57.543 1876 1890 I GnssLocationProvider: WakeLock released by handleMessage(REPORT_SV_STATUS, 0, com.android.server.location.GnssLocationProvider$SvStatusInfo@b66791) +05-26 11:45:57.555 2958 2993 E GeckoLibLoad: Loaded libs in 204.632000ms total, 10ms(220ms) user, 90ms(130ms) system, 37(37) faults +05-26 11:45:57.557 2958 2993 D GeckoThread: State changed to LIBS_READY +05-26 11:45:57.561 2958 2958 D LeakCanary: Updated LeakCanary.config: Config(no changes) +05-26 11:45:57.564 2958 2993 W GeckoThread: zerdatime 190877760 - runGecko +05-26 11:45:57.568 2958 2958 D App : DebugMetricController: start +05-26 11:45:57.568 2958 2958 D App : DebugMetricController: start +05-26 11:45:57.570 2958 2993 D GeckoProfile: Loading profile at: null name: default +05-26 11:45:57.570 2958 2958 W PushConfig: No firebase configuration found; cannot support push service. +05-26 11:45:57.570 2958 2993 D GeckoProfile: Found profile dir: /data/user/0/org.mozilla.fenix.debug/files/mozilla/u71tud99.default +05-26 11:45:57.604 2958 2958 D StrictMode: StrictMode policy violation; ~duration=417 ms: android.os.strictmode.DiskReadViolation +05-26 11:45:57.604 2958 2958 D StrictMode: at android.os.StrictMode$AndroidBlockGuardPolicy.onReadFromDisk(StrictMode.java:1504) +05-26 11:45:57.604 2958 2958 D StrictMode: at java.io.FileInputStream.<init>(FileInputStream.java:163) +05-26 11:45:57.604 2958 2958 D StrictMode: at org.mozilla.gecko.util.DebugConfig.fromFile(DebugConfig.java:49) +05-26 11:45:57.604 2958 2958 D StrictMode: at org.mozilla.geckoview.GeckoRuntime.init(GeckoRuntime.java:363) +05-26 11:45:57.604 2958 2958 D StrictMode: at org.mozilla.geckoview.GeckoRuntime.create(GeckoRuntime.java:574) +05-26 11:45:57.604 2958 2958 D StrictMode: at GeckoProvider.createRuntime(GeckoProvider.kt:58) +05-26 11:45:57.604 2958 2958 D StrictMode: at GeckoProvider.getOrCreateRuntime(GeckoProvider.kt:28) +05-26 11:45:57.604 2958 2958 D StrictMode: at org.mozilla.fenix.components.Core$engine$2.invoke(Core.kt:79) +05-26 11:45:57.604 2958 2958 D StrictMode: at org.mozilla.fenix.components.Core$engine$2.invoke(Core.kt:57) +05-26 11:45:57.604 2958 2958 D StrictMode: at kotlin.SynchronizedLazyImpl.getValue(LazyJVM.kt:74) +05-26 11:45:57.604 2958 2958 D StrictMode: at org.mozilla.fenix.components.Core.getEngine(Unknown Source:7) +05-26 11:45:57.604 2958 2958 D StrictMode: at org.mozilla.fenix.FenixApplication.setupInMainProcessOnly(FenixApplication.kt:128) +05-26 11:45:57.604 2958 2958 D StrictMode: at org.mozilla.fenix.FenixApplication.onCreate(FenixApplication.kt:90) +05-26 11:45:57.604 2958 2958 D StrictMode: at android.app.Instrumentation.callApplicationOnCreate(Instrumentation.java:1154) +05-26 11:45:57.604 2958 2958 D StrictMode: at android.app.ActivityThread.handleBindApplication(ActivityThread.java:5871) +05-26 11:45:57.604 2958 2958 D StrictMode: at android.app.ActivityThread.access$1100(ActivityThread.java:199) +05-26 11:45:57.604 2958 2958 D StrictMode: at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1650) +05-26 11:45:57.604 2958 2958 D StrictMode: at android.os.Handler.dispatchMessage(Handler.java:106) +05-26 11:45:57.604 2958 2958 D StrictMode: at android.os.Looper.loop(Looper.java:193) +05-26 11:45:57.604 2958 2958 D StrictMode: at android.app.ActivityThread.main(ActivityThread.java:6669) +05-26 11:45:57.604 2958 2958 D StrictMode: at java.lang.reflect.Method.invoke(Native Method) +05-26 11:45:57.604 2958 2958 D StrictMode: at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:493) +05-26 11:45:57.604 2958 2958 D StrictMode: at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:858) +05-26 11:45:57.608 2958 2958 D StrictMode: StrictMode policy violation; ~duration=400 ms: android.os.strictmode.DiskReadViolation +05-26 11:45:57.608 2958 2958 D StrictMode: at android.os.StrictMode$AndroidBlockGuardPolicy.onReadFromDisk(StrictMode.java:1504) +05-26 11:45:57.608 2958 2958 D StrictMode: at libcore.io.BlockGuardOs.read(BlockGuardOs.java:253) +05-26 11:45:57.608 2958 2958 D StrictMode: at libcore.io.IoBridge.read(IoBridge.java:501) +05-26 11:45:57.608 2958 2958 D StrictMode: at java.io.FileInputStream.read(FileInputStream.java:307) +05-26 11:45:57.608 2958 2958 D StrictMode: at java.io.FilterInputStream.read(FilterInputStream.java:133) +05-26 11:45:57.608 2958 2958 D StrictMode: at java.io.PushbackInputStream.read(PushbackInputStream.java:186) +05-26 11:45:57.608 2958 2958 D StrictMode: at org.yaml.snakeyaml.reader.UnicodeReader.init(UnicodeReader.java:92) +05-26 11:45:57.608 2958 2958 D StrictMode: at org.yaml.snakeyaml.reader.UnicodeReader.read(UnicodeReader.java:124) +05-26 11:45:57.608 2958 2958 D StrictMode: at org.yaml.snakeyaml.reader.StreamReader.update(StreamReader.java:183) +05-26 11:45:57.608 2958 2958 D StrictMode: at org.yaml.snakeyaml.reader.StreamReader.ensureEnoughData(StreamReader.java:176) +05-26 11:45:57.608 2958 2958 D StrictMode: at org.yaml.snakeyaml.reader.StreamReader.ensureEnoughData(StreamReader.java:171) +05-26 11:45:57.608 2958 2958 D StrictMode: at org.yaml.snakeyaml.reader.StreamReader.peek(StreamReader.java:126) +05-26 11:45:57.608 2958 2958 D StrictMode: at org.yaml.snakeyaml.scanner.ScannerImpl.scanToNextToken(ScannerImpl.java:1177) +05-26 11:45:57.608 2958 2958 D StrictMode: at org.yaml.snakeyaml.scanner.ScannerImpl.fetchMoreTokens(ScannerImpl.java:287) +05-26 11:45:57.608 2958 2958 D StrictMode: at org.yaml.snakeyaml.scanner.ScannerImpl.checkToken(ScannerImpl.java:227) +05-26 11:45:57.608 2958 2958 D StrictMode: at org.yaml.snakeyaml.parser.ParserImpl$ParseImplicitDocumentStart.produce(ParserImpl.java:195) +05-26 11:45:57.608 2958 2958 D StrictMode: at org.yaml.snakeyaml.parser.ParserImpl.peekEvent(ParserImpl.java:158) +05-26 11:45:57.608 2958 2958 D StrictMode: at org.yaml.snakeyaml.parser.ParserImpl.checkEvent(ParserImpl.java:148) +05-26 11:45:57.608 2958 2958 D StrictMode: at org.yaml.snakeyaml.composer.Composer.getSingleNode(Composer.java:107) +05-26 11:45:57.608 2958 2958 D StrictMode: at org.yaml.snakeyaml.constructor.BaseConstructor.getSingleData(BaseConstructor.java:141) +05-26 11:45:57.608 2958 2958 D StrictMode: at org.yaml.snakeyaml.Yaml.loadFromReader(Yaml.java:525) +05-26 11:45:57.608 2958 2958 D StrictMode: at org.yaml.snakeyaml.Yaml.load(Yaml.java:453) +05-26 11:45:57.608 2958 2958 D StrictMode: at org.mozilla.gecko.util.DebugConfig.fromFile(DebugConfig.java:51) +05-26 11:45:57.608 2958 2958 D StrictMode: at org.mozilla.geckoview.GeckoRuntime.init(GeckoRuntime.java:363) +05-26 11:45:57.608 2958 2958 D StrictMode: at org.mozilla.geckoview.GeckoRuntime.create(GeckoRuntime.java:574) +05-26 11:45:57.608 2958 2958 D StrictMode: at GeckoProvider.createRuntime(GeckoProvider.kt:58) +05-26 11:45:57.608 2958 2958 D StrictMode: at GeckoProvider.getOrCreateRuntime(GeckoProvider.kt:28) +05-26 11:45:57.608 2958 2958 D StrictMode: at org.mozilla.fenix.components.Core$engine$2.invoke(Core.kt:79) +05-26 11:45:57.608 2958 2958 D StrictMode: at org.mozilla.fenix.components.Core$engine$2.invoke(Core.kt:57) +05-26 11:45:57.608 2958 2958 D StrictMode: at kotlin.SynchronizedLazyImpl.getValue(LazyJVM.kt:74) +05-26 11:45:57.608 2958 2958 D StrictMode: at org.mozilla.fenix.components.Core.getEngine(Unknown Source:7) +05-26 11:45:57.608 2958 2958 D StrictMode: at org.mozilla.fenix.FenixApplication.setupInMainProcessOnly(FenixApplication.kt:128) +05-26 11:45:57.608 2958 2958 D StrictMode: at org.mozilla.fenix.FenixApplication.onCreate(FenixApplication.kt:90) +05-26 11:45:57.608 2958 2958 D StrictMode: at android.app.Instrumentation.callApplicationOnCreate(Instrumentation.java:1154) +05-26 11:45:57.608 2958 2958 D StrictMode: at android.app.ActivityThread.handleBindApplication(ActivityThread.java:5871) +05-26 11:45:57.608 2958 2958 D StrictMode: at android.app.ActivityThread.access$1100(ActivityThread.java:199) +05-26 11:45:57.608 2958 2958 D StrictMode: at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1650) +05-26 11:45:57.608 2958 2958 D StrictMode: at android.os.Handler.dispatchMessage(Handler.java:106) +05-26 11:45:57.608 2958 2958 D StrictMode: at android.os.Looper.loop(Looper.java:193) +05-26 11:45:57.608 2958 2958 D StrictMode: at android.app.ActivityThread.main(ActivityThread.java:6669) +05-26 11:45:57.608 2958 2958 D StrictMode: at java.lang.reflect.Method.invoke(Native Method) +05-26 11:45:57.608 2958 2958 D StrictMode: at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:493) +05-26 11:45:57.608 2958 2958 D StrictMode: at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:858) +05-26 11:45:57.611 2958 2958 D StrictMode: StrictMode policy violation; ~duration=398 ms: android.os.strictmode.DiskReadViolation +05-26 11:45:57.611 2958 2958 D StrictMode: at android.os.StrictMode$AndroidBlockGuardPolicy.onReadFromDisk(StrictMode.java:1504) +05-26 11:45:57.611 2958 2958 D StrictMode: at libcore.io.BlockGuardOs.read(BlockGuardOs.java:253) +05-26 11:45:57.611 2958 2958 D StrictMode: at libcore.io.IoBridge.read(IoBridge.java:501) +05-26 11:45:57.611 2958 2958 D StrictMode: at java.io.FileInputStream.read(FileInputStream.java:307) +05-26 11:45:57.611 2958 2958 D StrictMode: at java.io.FilterInputStream.read(FilterInputStream.java:133) +05-26 11:45:57.611 2958 2958 D StrictMode: at java.io.PushbackInputStream.read(PushbackInputStream.java:186) +05-26 11:45:57.611 2958 2958 D StrictMode: at sun.nio.cs.StreamDecoder.readBytes(StreamDecoder.java:288) +05-26 11:45:57.611 2958 2958 D StrictMode: at sun.nio.cs.StreamDecoder.implRead(StreamDecoder.java:351) +05-26 11:45:57.611 2958 2958 D StrictMode: at sun.nio.cs.StreamDecoder.read(StreamDecoder.java:180) +05-26 11:45:57.611 2958 2958 D StrictMode: at java.io.InputStreamReader.read(InputStreamReader.java:184) +05-26 11:45:57.611 2958 2958 D StrictMode: at org.yaml.snakeyaml.reader.UnicodeReader.read(UnicodeReader.java:125) +05-26 11:45:57.611 2958 2958 D StrictMode: at org.yaml.snakeyaml.reader.StreamReader.update(StreamReader.java:183) +05-26 11:45:57.611 2958 2958 D StrictMode: at org.yaml.snakeyaml.reader.StreamReader.ensureEnoughData(StreamReader.java:176) +05-26 11:45:57.611 2958 2958 D StrictMode: at org.yaml.snakeyaml.reader.StreamReader.ensureEnoughData(StreamReader.java:171) +05-26 11:45:57.611 2958 2958 D StrictMode: at org.yaml.snakeyaml.reader.StreamReader.peek(StreamReader.java:126) +05-26 11:45:57.611 2958 2958 D StrictMode: at org.yaml.snakeyaml.scanner.ScannerImpl.scanToNextToken(ScannerImpl.java:1177) +05-26 11:45:57.611 2958 2958 D StrictMode: at org.yaml.snakeyaml.scanner.ScannerImpl.fetchMoreTokens(ScannerImpl.java:287) +05-26 11:45:57.611 2958 2958 D StrictMode: at org.yaml.snakeyaml.scanner.ScannerImpl.checkToken(ScannerImpl.java:227) +05-26 11:45:57.611 2958 2958 D StrictMode: at org.yaml.snakeyaml.parser.ParserImpl$ParseImplicitDocumentStart.produce(ParserImpl.java:195) +05-26 11:45:57.611 2958 2958 D StrictMode: at org.yaml.snakeyaml.parser.ParserImpl.peekEvent(ParserImpl.java:158) +05-26 11:45:57.611 2958 2958 D StrictMode: at org.yaml.snakeyaml.parser.ParserImpl.checkEvent(ParserImpl.java:148) +05-26 11:45:57.611 2958 2958 D StrictMode: at org.yaml.snakeyaml.composer.Composer.getSingleNode(Composer.java:107) +05-26 11:45:57.611 2958 2958 D StrictMode: at org.yaml.snakeyaml.constructor.BaseConstructor.getSingleData(BaseConstructor.java:141) +05-26 11:45:57.611 2958 2958 D StrictMode: at org.yaml.snakeyaml.Yaml.loadFromReader(Yaml.java:525) +05-26 11:45:57.611 2958 2958 D StrictMode: at org.yaml.snakeyaml.Yaml.load(Yaml.java:453) +05-26 11:45:57.611 2958 2958 D StrictMode: at org.mozilla.gecko.util.DebugConfig.fromFile(DebugConfig.java:51) +05-26 11:45:57.611 2958 2958 D StrictMode: at org.mozilla.geckoview.GeckoRuntime.init(GeckoRuntime.java:363) +05-26 11:45:57.611 2958 2958 D StrictMode: at org.mozilla.geckoview.GeckoRuntime.create(GeckoRuntime.java:574) +05-26 11:45:57.611 2958 2958 D StrictMode: at GeckoProvider.createRuntime(GeckoProvider.kt:58) +05-26 11:45:57.611 2958 2958 D StrictMode: at GeckoProvider.getOrCreateRuntime(GeckoProvider.kt:28) +05-26 11:45:57.611 2958 2958 D StrictMode: at org.mozilla.fenix.components.Core$engine$2.invoke(Core.kt:79) +05-26 11:45:57.611 2958 2958 D StrictMode: at org.mozilla.fenix.components.Core$engine$2.invoke(Core.kt:57) +05-26 11:45:57.611 2958 2958 D StrictMode: at kotlin.SynchronizedLazyImpl.getValue(LazyJVM.kt:74) +05-26 11:45:57.611 2958 2958 D StrictMode: at org.mozilla.fenix.components.Core.getEngine(Unknown Source:7) +05-26 11:45:57.611 2958 2958 D StrictMode: at org.mozilla.fenix.FenixApplication.setupInMainProcessOnly(FenixApplication.kt:128) +05-26 11:45:57.611 2958 2958 D StrictMode: at org.mozilla.fenix.FenixApplication.onCreate(FenixApplication.kt:90) +05-26 11:45:57.611 2958 2958 D StrictMode: at android.app.Instrumentation.callApplicationOnCreate(Instrumentation.java:1154) +05-26 11:45:57.611 2958 2958 D StrictMode: at android.app.ActivityThread.handleBindApplication(ActivityThread.java:5871) +05-26 11:45:57.611 2958 2958 D StrictMode: at android.app.ActivityThread.access$1100(ActivityThread.java:199) +05-26 11:45:57.611 2958 2958 D StrictMode: at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1650) +05-26 11:45:57.611 2958 2958 D StrictMode: at android.os.Handler.dispatchMessage(Handler.java:106) +05-26 11:45:57.611 2958 2958 D StrictMode: at android.os.Looper.loop(Looper.java:193) +05-26 11:45:57.611 2958 2958 D StrictMode: at android.app.ActivityThread.main(ActivityThread.java:6669) +05-26 11:45:57.611 2958 2958 D StrictMode: at java.lang.reflect.Method.invoke(Native Method) +05-26 11:45:57.611 2958 2958 D StrictMode: at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:493) +05-26 11:45:57.611 2958 2958 D StrictMode: at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:858) +05-26 11:45:57.620 2958 2958 D StrictMode: StrictMode policy violation; ~duration=374 ms: android.os.strictmode.DiskReadViolation +05-26 11:45:57.620 2958 2958 D StrictMode: at android.os.StrictMode$AndroidBlockGuardPolicy.onReadFromDisk(StrictMode.java:1504) +05-26 11:45:57.620 2958 2958 D StrictMode: at libcore.io.BlockGuardOs.read(BlockGuardOs.java:253) +05-26 11:45:57.620 2958 2958 D StrictMode: at libcore.io.IoBridge.read(IoBridge.java:501) +05-26 11:45:57.620 2958 2958 D StrictMode: at java.io.FileInputStream.read(FileInputStream.java:307) +05-26 11:45:57.620 2958 2958 D StrictMode: at java.io.FilterInputStream.read(FilterInputStream.java:133) +05-26 11:45:57.620 2958 2958 D StrictMode: at java.io.PushbackInputStream.read(PushbackInputStream.java:186) +05-26 11:45:57.620 2958 2958 D StrictMode: at sun.nio.cs.StreamDecoder.readBytes(StreamDecoder.java:288) +05-26 11:45:57.620 2958 2958 D StrictMode: at sun.nio.cs.StreamDecoder.implRead(StreamDecoder.java:351) +05-26 11:45:57.620 2958 2958 D StrictMode: at sun.nio.cs.StreamDecoder.read(StreamDecoder.java:180) +05-26 11:45:57.620 2958 2958 D StrictMode: at java.io.InputStreamReader.read(InputStreamReader.java:184) +05-26 11:45:57.620 2958 2958 D StrictMode: at org.yaml.snakeyaml.reader.UnicodeReader.read(UnicodeReader.java:125) +05-26 11:45:57.620 2958 2958 D StrictMode: at org.yaml.snakeyaml.reader.StreamReader.update(StreamReader.java:183) +05-26 11:45:57.620 2958 2958 D StrictMode: at org.yaml.snakeyaml.reader.StreamReader.ensureEnoughData(StreamReader.java:176) +05-26 11:45:57.620 2958 2958 D StrictMode: at org.yaml.snakeyaml.reader.StreamReader.peek(StreamReader.java:136) +05-26 11:45:57.620 2958 2958 D StrictMode: at org.yaml.snakeyaml.scanner.ScannerImpl.scanPlain(ScannerImpl.java:1999) +05-26 11:45:57.620 2958 2958 D StrictMode: at org.yaml.snakeyaml.scanner.ScannerImpl.fetchPlain(ScannerImpl.java:1044) +05-26 11:45:57.620 2958 2958 D StrictMode: at org.yaml.snakeyaml.scanner.ScannerImpl.fetchMoreTokens(ScannerImpl.java:399) +05-26 11:45:57.620 2958 2958 D StrictMode: at org.yaml.snakeyaml.scanner.ScannerImpl.checkToken(ScannerImpl.java:227) +05-26 11:45:57.620 2958 2958 D StrictMode: at org.yaml.snakeyaml.parser.ParserImpl$ParseBlockSequenceEntry.produce(ParserImpl.java:504) +05-26 11:45:57.620 2958 2958 D StrictMode: at org.yaml.snakeyaml.parser.ParserImpl.peekEvent(ParserImpl.java:158) +05-26 11:45:57.620 2958 2958 D StrictMode: at org.yaml.snakeyaml.parser.ParserImpl.checkEvent(ParserImpl.java:148) +05-26 11:45:57.620 2958 2958 D StrictMode: at org.yaml.snakeyaml.composer.Composer.composeSequenceNode(Composer.java:188) +05-26 11:45:57.620 2958 2958 D StrictMode: at org.yaml.snakeyaml.composer.Composer.composeNode(Composer.java:142) +05-26 11:45:57.620 2958 2958 D StrictMode: at org.yaml.snakeyaml.composer.Composer.composeValueNode(Composer.java:236) +05-26 11:45:57.620 2958 2958 D StrictMode: at org.yaml.snakeyaml.composer.Composer.composeMappingChildren(Composer.java:227) +05-26 11:45:57.620 2958 2958 D StrictMode: at org.yaml.snakeyaml.composer.Composer.composeMappingNode(Composer.java:215) +05-26 11:45:57.620 2958 2958 D StrictMode: at org.yaml.snakeyaml.composer.Composer.composeNode(Composer.java:144) +05-26 11:45:57.620 2958 2958 D StrictMode: at org.yaml.snakeyaml.composer.Composer.getNode(Composer.java:85) +05-26 11:45:57.620 2958 2958 D StrictMode: at org.yaml.snakeyaml.composer.Composer.getSingleNode(Composer.java:108) +05-26 11:45:57.620 2958 2958 D StrictMode: at org.yaml.snakeyaml.constructor.BaseConstructor.getSingleData(BaseConstructor.java:141) +05-26 11:45:57.620 2958 2958 D StrictMode: at org.yaml.snakeyaml.Yaml.loadFromReader(Yaml.java:525) +05-26 11:45:57.620 2958 2958 D StrictMode: at org.yaml.snakeyaml.Yaml.load(Yaml.java:453) +05-26 11:45:57.620 2958 2958 D StrictMode: at org.mozilla.gecko.util.DebugConfig.fromFile(DebugConfig.java:51) +05-26 11:45:57.620 2958 2958 D StrictMode: at org.mozilla.geckoview.GeckoRuntime.init(GeckoRuntime.java:363) +05-26 11:45:57.620 2958 2958 D StrictMode: at org.mozilla.geckoview.GeckoRuntime.create(GeckoRuntime.java:574) +05-26 11:45:57.620 2958 2958 D StrictMode: at GeckoProvider.createRuntime(GeckoProvider.kt:58) +05-26 11:45:57.620 2958 2958 D StrictMode: at GeckoProvider.getOrCreateRuntime(GeckoProvider.kt:28) +05-26 11:45:57.620 2958 2958 D StrictMode: at org.mozilla.fenix.components.Core$engine$2.invoke(Core.kt:79) +05-26 11:45:57.620 2958 2958 D StrictMode: at org.mozilla.fenix.components.Core$engine$2.invoke(Core.kt:57) +05-26 11:45:57.620 2958 2958 D StrictMode: at kotlin.SynchronizedLazyImpl.getValue(LazyJVM.kt:74) +05-26 11:45:57.620 2958 2958 D StrictMode: at org.mozilla.fenix.components.Core.getEngine(Unknown Source:7) +05-26 11:45:57.620 2958 2958 D StrictMode: at org.mozilla.fenix.FenixApplication.setupInMainProcessOnly(FenixApplication.kt:128) +05-26 11:45:57.620 2958 2958 D StrictMode: at org.mozilla.fenix.FenixApplication.onCreate(FenixApplication.kt:90) +05-26 11:45:57.620 2958 2958 D StrictMode: at android.app.Instrumentation.callApplicationOnCreate(Instrumentation.java:1154) +05-26 11:45:57.620 2958 2958 D StrictMode: at android.app.ActivityThread.handleBindApplication(ActivityThread.java:5871) +05-26 11:45:57.620 2958 2958 D StrictMode: at android.app.ActivityThread.access$1100(ActivityThread.java:199) +05-26 11:45:57.620 2958 2958 D StrictMode: at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1650) +05-26 11:45:57.620 2958 2958 D StrictMode: at android.os.Handler.dispatchMessage(Handler.java:106) +05-26 11:45:57.620 2958 2958 D StrictMode: at android.os.Looper.loop(Looper.java:193) +05-26 11:45:57.620 2958 2958 D StrictMode: at android.app.ActivityThread.main(ActivityThread.java:6669) +05-26 11:45:57.620 2958 2958 D StrictMode: at java.lang.reflect.Method.invoke(Native Method) +05-26 11:45:57.620 2958 2958 D StrictMode: at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:493) +05-26 11:45:57.620 2958 2958 D StrictMode: at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:858) +05-26 11:45:57.625 2958 2958 D StrictMode: StrictMode policy violation; ~duration=327 ms: android.os.strictmode.DiskReadViolation +05-26 11:45:57.625 2958 2958 D StrictMode: at android.os.StrictMode$AndroidBlockGuardPolicy.onReadFromDisk(StrictMode.java:1504) +05-26 11:45:57.625 2958 2958 D StrictMode: at java.io.UnixFileSystem.checkAccess(UnixFileSystem.java:251) +05-26 11:45:57.625 2958 2958 D StrictMode: at java.io.File.exists(File.java:815) +05-26 11:45:57.625 2958 2958 D StrictMode: at android.app.ContextImpl.ensurePrivateDirExists(ContextImpl.java:605) +05-26 11:45:57.625 2958 2958 D StrictMode: at android.app.ContextImpl.ensurePrivateDirExists(ContextImpl.java:596) +05-26 11:45:57.625 2958 2958 D StrictMode: at android.app.ContextImpl.getPreferencesDir(ContextImpl.java:552) +05-26 11:45:57.625 2958 2958 D StrictMode: at android.app.ContextImpl.getSharedPreferencesPath(ContextImpl.java:747) +05-26 11:45:57.625 2958 2958 D StrictMode: at android.app.ContextImpl.getSharedPreferences(ContextImpl.java:400) +05-26 11:45:57.625 2958 2958 D StrictMode: at android.content.ContextWrapper.getSharedPreferences(ContextWrapper.java:174) +05-26 11:45:57.625 2958 2958 D StrictMode: at mozilla.components.browser.engine.gecko.GeckoEngine.<init>(GeckoEngine.kt:68) +05-26 11:45:57.625 2958 2958 D StrictMode: at mozilla.components.browser.engine.gecko.GeckoEngine.<init>(GeckoEngine.kt:63) +05-26 11:45:57.625 2958 2958 D StrictMode: at org.mozilla.fenix.components.Core$engine$2.invoke(Core.kt:76) +05-26 11:45:57.625 2958 2958 D StrictMode: at org.mozilla.fenix.components.Core$engine$2.invoke(Core.kt:57) +05-26 11:45:57.625 2958 2958 D StrictMode: at kotlin.SynchronizedLazyImpl.getValue(LazyJVM.kt:74) +05-26 11:45:57.625 2958 2958 D StrictMode: at org.mozilla.fenix.components.Core.getEngine(Unknown Source:7) +05-26 11:45:57.625 2958 2958 D StrictMode: at org.mozilla.fenix.FenixApplication.setupInMainProcessOnly(FenixApplication.kt:128) +05-26 11:45:57.625 2958 2958 D StrictMode: at org.mozilla.fenix.FenixApplication.onCreate(FenixApplication.kt:90) +05-26 11:45:57.625 2958 2958 D StrictMode: at android.app.Instrumentation.callApplicationOnCreate(Instrumentation.java:1154) +05-26 11:45:57.625 2958 2958 D StrictMode: at android.app.ActivityThread.handleBindApplication(ActivityThread.java:5871) +05-26 11:45:57.625 2958 2958 D StrictMode: at android.app.ActivityThread.access$1100(ActivityThread.java:199) +05-26 11:45:57.625 2958 2958 D StrictMode: at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1650) +05-26 11:45:57.625 2958 2958 D StrictMode: at android.os.Handler.dispatchMessage(Handler.java:106) +05-26 11:45:57.625 2958 2958 D StrictMode: at android.os.Looper.loop(Looper.java:193) +05-26 11:45:57.625 2958 2958 D StrictMode: at android.app.ActivityThread.main(ActivityThread.java:6669) +05-26 11:45:57.625 2958 2958 D StrictMode: at java.lang.reflect.Method.invoke(Native Method) +05-26 11:45:57.625 2958 2958 D StrictMode: at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:493) +05-26 11:45:57.625 2958 2958 D StrictMode: at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:858) +05-26 11:45:57.629 2958 2958 D StrictMode: StrictMode policy violation; ~duration=110 ms: android.os.strictmode.DiskReadViolation +05-26 11:45:57.629 2958 2958 D StrictMode: at android.os.StrictMode$AndroidBlockGuardPolicy.onReadFromDisk(StrictMode.java:1504) +05-26 11:45:57.629 2958 2958 D StrictMode: at java.io.UnixFileSystem.checkAccess(UnixFileSystem.java:251) +05-26 11:45:57.629 2958 2958 D StrictMode: at java.io.File.exists(File.java:815) +05-26 11:45:57.629 2958 2958 D StrictMode: at android.app.ContextImpl.ensurePrivateDirExists(ContextImpl.java:605) +05-26 11:45:57.629 2958 2958 D StrictMode: at android.app.ContextImpl.ensurePrivateDirExists(ContextImpl.java:596) +05-26 11:45:57.629 2958 2958 D StrictMode: at android.app.ContextImpl.getPreferencesDir(ContextImpl.java:552) +05-26 11:45:57.629 2958 2958 D StrictMode: at android.app.ContextImpl.getSharedPreferencesPath(ContextImpl.java:747) +05-26 11:45:57.629 2958 2958 D StrictMode: at android.app.ContextImpl.getSharedPreferences(ContextImpl.java:400) +05-26 11:45:57.629 2958 2958 D StrictMode: at android.content.ContextWrapper.getSharedPreferences(ContextWrapper.java:174) +05-26 11:45:57.629 2958 2958 D StrictMode: at androidx.preference.PreferenceManager.getDefaultSharedPreferences(PreferenceManager.java:119) +05-26 11:45:57.629 2958 2958 D StrictMode: at org.mozilla.fenix.DebugFenixApplication.setupLeakCanary(DebugFenixApplication.kt:15) +05-26 11:45:57.629 2958 2958 D StrictMode: at org.mozilla.fenix.FenixApplication.setupInMainProcessOnly(FenixApplication.kt:140) +05-26 11:45:57.629 2958 2958 D StrictMode: at org.mozilla.fenix.FenixApplication.onCreate(FenixApplication.kt:90) +05-26 11:45:57.629 2958 2958 D StrictMode: at android.app.Instrumentation.callApplicationOnCreate(Instrumentation.java:1154) +05-26 11:45:57.629 2958 2958 D StrictMode: at android.app.ActivityThread.handleBindApplication(ActivityThread.java:5871) +05-26 11:45:57.629 2958 2958 D StrictMode: at android.app.ActivityThread.access$1100(ActivityThread.java:199) +05-26 11:45:57.629 2958 2958 D StrictMode: at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1650) +05-26 11:45:57.629 2958 2958 D StrictMode: at android.os.Handler.dispatchMessage(Handler.java:106) +05-26 11:45:57.629 2958 2958 D StrictMode: at android.os.Looper.loop(Looper.java:193) +05-26 11:45:57.629 2958 2958 D StrictMode: at android.app.ActivityThread.main(ActivityThread.java:6669) +05-26 11:45:57.629 2958 2958 D StrictMode: at java.lang.reflect.Method.invoke(Native Method) +05-26 11:45:57.629 2958 2958 D StrictMode: at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:493) +05-26 11:45:57.629 2958 2958 D StrictMode: at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:858) +05-26 11:45:57.630 2958 2958 D StrictMode: StrictMode policy violation; ~duration=107 ms: android.os.strictmode.DiskReadViolation +05-26 11:45:57.630 2958 2958 D StrictMode: at android.os.StrictMode$AndroidBlockGuardPolicy.onReadFromDisk(StrictMode.java:1504) +05-26 11:45:57.630 2958 2958 D StrictMode: at android.app.SharedPreferencesImpl.awaitLoadedLocked(SharedPreferencesImpl.java:256) +05-26 11:45:57.630 2958 2958 D StrictMode: at android.app.SharedPreferencesImpl.getBoolean(SharedPreferencesImpl.java:325) +05-26 11:45:57.630 2958 2958 D StrictMode: at org.mozilla.fenix.DebugFenixApplication.setupLeakCanary(DebugFenixApplication.kt:16) +05-26 11:45:57.630 2958 2958 D StrictMode: at org.mozilla.fenix.FenixApplication.setupInMainProcessOnly(FenixApplication.kt:140) +05-26 11:45:57.630 2958 2958 D StrictMode: at org.mozilla.fenix.FenixApplication.onCreate(FenixApplication.kt:90) +05-26 11:45:57.630 2958 2958 D StrictMode: at android.app.Instrumentation.callApplicationOnCreate(Instrumentation.java:1154) +05-26 11:45:57.630 2958 2958 D StrictMode: at android.app.ActivityThread.handleBindApplication(ActivityThread.java:5871) +05-26 11:45:57.630 2958 2958 D StrictMode: at android.app.ActivityThread.access$1100(ActivityThread.java:199) +05-26 11:45:57.630 2958 2958 D StrictMode: at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1650) +05-26 11:45:57.630 2958 2958 D StrictMode: at android.os.Handler.dispatchMessage(Handler.java:106) +05-26 11:45:57.630 2958 2958 D StrictMode: at android.os.Looper.loop(Looper.java:193) +05-26 11:45:57.630 2958 2958 D StrictMode: at android.app.ActivityThread.main(ActivityThread.java:6669) +05-26 11:45:57.630 2958 2958 D StrictMode: at java.lang.reflect.Method.invoke(Native Method) +05-26 11:45:57.630 2958 2958 D StrictMode: at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:493) +05-26 11:45:57.630 2958 2958 D StrictMode: at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:858) +05-26 11:45:57.635 2958 2958 D LeakCanary: LeakCanary is running and ready to detect leaks +05-26 11:45:57.700 2958 2984 I SupportedAddonsWorker: Trying to check for new supported add-ons +05-26 11:45:57.782 2958 2993 I Gecko:DumpUtils: Fifo watcher disabled via pref. +05-26 11:45:58.027 2958 2993 D GeckoSysInfo: System memory: 1494MB. +05-26 11:45:58.027 2958 2993 W lla.fenix.debu: Accessing hidden method Landroid/os/MessageQueue;->next()Landroid/os/Message; (light greylist, JNI) +05-26 11:45:58.028 2958 2993 D StrictMode: StrictMode policy violation: android.os.strictmode.NonSdkApiUsedViolation: Landroid/os/MessageQueue;->next()Landroid/os/Message; +05-26 11:45:58.028 2958 2993 D StrictMode: at android.os.StrictMode.lambda$static$1(StrictMode.java:428) +05-26 11:45:58.028 2958 2993 D StrictMode: at android.os.-$$Lambda$StrictMode$lu9ekkHJ2HMz0jd3F8K8MnhenxQ.accept(Unknown Source:2) +05-26 11:45:58.028 2958 2993 D StrictMode: at org.mozilla.gecko.mozglue.GeckoLoader.nativeRun(Native Method) +05-26 11:45:58.028 2958 2993 D StrictMode: at org.mozilla.gecko.GeckoThread.run(GeckoThread.java:449) +05-26 11:45:58.028 2958 2993 W lla.fenix.debu: Accessing hidden field Landroid/os/MessageQueue;->mMessages:Landroid/os/Message; (light greylist, JNI) +05-26 11:45:58.029 2958 2993 D StrictMode: StrictMode policy violation: android.os.strictmode.NonSdkApiUsedViolation: Landroid/os/MessageQueue;->mMessages:Landroid/os/Message; +05-26 11:45:58.029 2958 2993 D StrictMode: at android.os.StrictMode.lambda$static$1(StrictMode.java:428) +05-26 11:45:58.029 2958 2993 D StrictMode: at android.os.-$$Lambda$StrictMode$lu9ekkHJ2HMz0jd3F8K8MnhenxQ.accept(Unknown Source:2) +05-26 11:45:58.029 2958 2993 D StrictMode: at org.mozilla.gecko.mozglue.GeckoLoader.nativeRun(Native Method) +05-26 11:45:58.029 2958 2993 D StrictMode: at org.mozilla.gecko.GeckoThread.run(GeckoThread.java:449) +05-26 11:45:58.030 2958 2993 W lla.fenix.debu: Accessing hidden field Ljava/lang/Boolean;->value:Z (light greylist, JNI) +05-26 11:45:58.030 2958 2993 D StrictMode: StrictMode policy violation: android.os.strictmode.NonSdkApiUsedViolation: Ljava/lang/Boolean;->value:Z +05-26 11:45:58.030 2958 2993 D StrictMode: at android.os.StrictMode.lambda$static$1(StrictMode.java:428) +05-26 11:45:58.030 2958 2993 D StrictMode: at android.os.-$$Lambda$StrictMode$lu9ekkHJ2HMz0jd3F8K8MnhenxQ.accept(Unknown Source:2) +05-26 11:45:58.030 2958 2993 D StrictMode: at org.mozilla.gecko.mozglue.GeckoLoader.nativeRun(Native Method) +05-26 11:45:58.030 2958 2993 D StrictMode: at org.mozilla.gecko.GeckoThread.run(GeckoThread.java:449) +05-26 11:45:58.030 2958 2993 W lla.fenix.debu: Accessing hidden field Ljava/lang/Integer;->value:I (light greylist, JNI) +05-26 11:45:58.031 2958 2993 D StrictMode: StrictMode policy violation: android.os.strictmode.NonSdkApiUsedViolation: Ljava/lang/Integer;->value:I +05-26 11:45:58.031 2958 2993 D StrictMode: at android.os.StrictMode.lambda$static$1(StrictMode.java:428) +05-26 11:45:58.031 2958 2993 D StrictMode: at android.os.-$$Lambda$StrictMode$lu9ekkHJ2HMz0jd3F8K8MnhenxQ.accept(Unknown Source:2) +05-26 11:45:58.031 2958 2993 D StrictMode: at org.mozilla.gecko.mozglue.GeckoLoader.nativeRun(Native Method) +05-26 11:45:58.031 2958 2993 D StrictMode: at org.mozilla.gecko.GeckoThread.run(GeckoThread.java:449) +05-26 11:45:58.031 2958 2993 W lla.fenix.debu: Accessing hidden field Ljava/lang/Double;->value:D (light greylist, JNI) +05-26 11:45:58.031 2958 2993 D StrictMode: StrictMode policy violation: android.os.strictmode.NonSdkApiUsedViolation: Ljava/lang/Double;->value:D +05-26 11:45:58.031 2958 2993 D StrictMode: at android.os.StrictMode.lambda$static$1(StrictMode.java:428) +05-26 11:45:58.031 2958 2993 D StrictMode: at android.os.-$$Lambda$StrictMode$lu9ekkHJ2HMz0jd3F8K8MnhenxQ.accept(Unknown Source:2) +05-26 11:45:58.031 2958 2993 D StrictMode: at org.mozilla.gecko.mozglue.GeckoLoader.nativeRun(Native Method) +05-26 11:45:58.031 2958 2993 D StrictMode: at org.mozilla.gecko.GeckoThread.run(GeckoThread.java:449) +05-26 11:45:58.035 2958 2993 D GeckoThread: State changed to JNI_READY +05-26 11:45:58.045 2958 3014 D ServiceAllocator: org.mozilla.gecko.process.GeckoChildProcessServices$tab0 updateBindings: BACKGROUND priority, 0 importance, 2 successful binds, 0 failed binds, 0 successful unbinds, 0 failed unbinds +05-26 11:45:58.054 3020 3020 I enix.debug:tab: Not late-enabling -Xcheck:jni (already on) +05-26 11:45:58.056 1876 1893 I ActivityManager: Start proc 3020:org.mozilla.fenix.debug:tab0/u0a91 for service org.mozilla.fenix.debug/org.mozilla.gecko.process.GeckoChildProcessServices$tab0 +05-26 11:45:58.089 3020 3020 W enix.debug:tab: Unexpected CPU variant for X86 using defaults: x86 +05-26 11:45:58.093 2726 2726 I glean/Glean: Registering pings for org.mozilla.fenix.GleanMetrics.Pings +05-26 11:45:58.110 2726 2726 I FenixApplication: Kicking-off account manager... +05-26 11:45:58.110 2726 2726 I FenixApplication: 'Kicking-off account manager' took 0 ms +05-26 11:45:58.114 2726 2951 I FenixApplication: Running post-visual completeness tasks... +05-26 11:45:58.114 2726 2951 I FenixApplication: Storage initialization... +05-26 11:45:58.115 2726 2951 I PlacesHistoryStorage: Warming up places storage... +05-26 11:45:58.116 2726 2951 D RustNativeSupport: findMegazordLibraryName(places, 0.58.1 +05-26 11:45:58.116 2726 2951 D RustNativeSupport: lib in use: none +05-26 11:45:58.116 2726 2951 D RustNativeSupport: lib configured: megazord +05-26 11:45:58.116 2726 2951 D RustNativeSupport: lib version configured: 0.58.1 +05-26 11:45:58.116 2726 2951 D RustNativeSupport: settled on megazord +05-26 11:45:58.117 2726 2951 D places_ffi: places_api_new +05-26 11:45:58.147 3020 3020 I enix.debug:tab: The ClassLoaderContext is a special shared library. +05-26 11:45:58.149 2726 2951 D places::db::schema: Creating schema +05-26 11:45:58.160 2726 2858 I App : ActivationPing - generating ping with the hashed id +05-26 11:45:58.161 2726 2858 I App : ActivationPing - generating ping (has `identifier`: true) +05-26 11:45:58.168 2726 2760 I libglean_ffi: glean_core::ping: Collecting activation +05-26 11:45:58.185 2726 2760 D libglean_ffi: glean_core::ping: Storing ping '74e89a59-9fb9-4c30-b711-7573f532c7e1' at '/data/user/0/org.mozilla.fennec_aurora/glean_data/pending_pings/74e89a59-9fb9-4c30-b711-7573f532c7e1' +05-26 11:45:58.185 2726 2760 I libglean_ffi: glean_core: The ping 'activation' was submitted and will be sent as soon as possible +05-26 11:45:58.207 1876 4916 D ConnectivityService: requestNetwork for uid/pid:10092/2726 NetworkRequest [ TRACK_DEFAULT id=237, [ Capabilities: INTERNET&NOT_RESTRICTED&TRUSTED Unwanted: Uid: 10092] ] +05-26 11:45:58.209 1876 1975 D WIFI : got request NetworkRequest [ TRACK_DEFAULT id=237, [ Capabilities: INTERNET&NOT_RESTRICTED&TRUSTED Unwanted: Uid: 10092] ] with score 60 +05-26 11:45:58.209 1876 1975 D WIFI_UT : got request NetworkRequest [ TRACK_DEFAULT id=237, [ Capabilities: INTERNET&NOT_RESTRICTED&TRUSTED Unwanted: Uid: 10092] ] with score 60 +05-26 11:45:58.210 2131 2131 D PhoneSwitcherNetworkRequstListener: got request NetworkRequest [ TRACK_DEFAULT id=237, [ Capabilities: INTERNET&NOT_RESTRICTED&TRUSTED Unwanted: Uid: 10092] ] with score 60 +05-26 11:45:58.214 2726 2951 D sql_support::conn_ext: Transaction commited after 65.158ms +05-26 11:45:58.216 2726 2951 D places_ffi: places_connection_new +05-26 11:45:58.218 2726 2951 D places_ffi: places_connection_new +05-26 11:45:58.220 2726 2951 I PlacesHistoryStorage: 'Warming up places storage' took 104 ms +05-26 11:45:58.220 2726 2951 I PlacesBookmarksStorage: Warming up places storage... +05-26 11:45:58.220 2726 2951 D places_ffi: places_connection_new +05-26 11:45:58.226 2726 2951 I PlacesBookmarksStorage: 'Warming up places storage' took 6 ms +05-26 11:45:58.228 2726 3042 D glean/PingUploadWorker: Processing persisted pings at /data/user/0/org.mozilla.fennec_aurora/glean_data/pending_pings +05-26 11:45:58.228 2726 3042 D glean/PingUploadWorker: Processing ping: 74e89a59-9fb9-4c30-b711-7573f532c7e1 +05-26 11:45:58.230 2726 3042 D glean/ConceptFetchHttpUploader: Submitting ping to: https://incoming.telemetry.mozilla.org/submit/org-mozilla-fennec-aurora/activation/1/74e89a59-9fb9-4c30-b711-7573f532c7e1 +05-26 11:45:58.246 1739 1739 I keystore: 1 0 +05-26 11:45:58.253 2726 2951 I SyncableLoginsStorage: Warming up storage... +05-26 11:45:58.260 2726 2951 D RustNativeSupport: findMegazordLibraryName(logins, 0.58.1 +05-26 11:45:58.260 2726 2951 D RustNativeSupport: lib in use: none +05-26 11:45:58.260 2726 2951 D RustNativeSupport: lib configured: megazord +05-26 11:45:58.260 2726 2951 D RustNativeSupport: lib version configured: 0.58.1 +05-26 11:45:58.260 2726 2951 D RustNativeSupport: settled on megazord +05-26 11:45:58.263 2726 2951 D logins_ffi: sync15_passwords_state_new +05-26 11:45:58.293 1876 1890 E memtrack: Couldn't load memtrack module +05-26 11:45:58.293 1876 1890 W android.os.Debug: failed to get memory consumption info: -1 +05-26 11:45:58.299 2726 2951 D logins::schema: Creating schema +05-26 11:45:58.311 2958 2993 D GeckoViewStartup: observe: app-startup +05-26 11:45:58.334 2958 2993 D GeckoViewConsole: enabled = true +05-26 11:45:58.411 2726 2951 I SyncableLoginsStorage: 'Warming up storage' took 157 ms +05-26 11:45:58.411 2726 2951 I FenixApplication: 'Storage initialization' took 296 ms +05-26 11:45:58.416 2958 2993 I GeckoConsole: No chrome package registered for chrome://browser/content/built_in_addons.json +05-26 11:45:58.506 2958 2993 D GeckoThread: State changed to PROFILE_READY +05-26 11:45:58.526 2958 2993 D GeckoViewStartup: observe: profile-after-change +05-26 11:45:58.528 2958 2993 D GeckoViewTelemetryController: setup - canRecordPrereleaseData true, canRecordReleaseData true +05-26 11:45:58.542 2958 2993 D GeckoThread: State changed to RUNNING +05-26 11:45:58.547 1876 2204 I GnssLocationProvider: WakeLock acquired by sendMessage(REPORT_SV_STATUS, 0, com.android.server.location.GnssLocationProvider$SvStatusInfo@94e6ffb) +05-26 11:45:58.548 1876 1890 I GnssLocationProvider: WakeLock released by handleMessage(REPORT_SV_STATUS, 0, com.android.server.location.GnssLocationProvider$SvStatusInfo@94e6ffb) +05-26 11:45:58.551 2958 2993 I Gecko : 1590507958551 Marionette TRACE Marionette enabled +05-26 11:45:58.551 2958 2993 I Gecko : 1590507958551 Marionette TRACE Received observer notification profile-after-change +05-26 11:45:58.557 2958 2993 I Gecko : -*- nsDNSServiceDiscovery.js : nsDNSServiceDiscovery +05-26 11:45:58.599 2726 3042 D glean/ConceptFetchHttpUploader: Ping successfully sent (200) +05-26 11:45:58.599 2726 3042 D glean/PingUploadWorker: 74e89a59-9fb9-4c30-b711-7573f532c7e1 was deleted: true +05-26 11:45:58.601 2726 2765 I WM-WorkerWrapper: Worker result SUCCESS for Work [ id=7537e864-720e-48e9-9923-7ae430e3fcdc, tags={ mozilla.telemetry.glean.scheduler.PingUploadWorker, mozac_service_glean_ping_upload_worker } ] +05-26 11:45:58.606 1876 1978 D ConnectivityService: releasing NetworkRequest [ TRACK_DEFAULT id=237, [ Capabilities: INTERNET&NOT_RESTRICTED&TRUSTED Unwanted: Uid: 10092] ] (release request) +05-26 11:45:58.611 2958 2993 I Gecko : 1590507958611 Marionette TRACE Received observer notification command-line-startup +05-26 11:45:58.629 2958 2958 D GeckoNetworkManager: Incoming event enableNotifications for state OffNoListeners -> OffWithListeners +05-26 11:45:58.636 2958 2958 D GeckoNetworkManager: New network state: UP, WIFI, WIFI +05-26 11:45:58.636 2958 2993 D GeckoViewStartup: onEvent GeckoView:SetLocale +05-26 11:45:58.636 2958 2993 D GeckoViewStartup: onEvent GeckoView:ResetUserPrefs +05-26 11:45:58.640 2958 2993 D GeckoViewRemoteDebugger: onInit +05-26 11:45:58.641 2958 2993 D GeckoViewConsole: enabled = false +05-26 11:45:58.655 2958 2993 D GeckoViewStartup: onEvent GeckoView:SetLocale +05-26 11:45:58.656 2958 2993 D GeckoViewStartup: onEvent GeckoView:SetDefaultPrefs +05-26 11:45:58.675 2958 2993 I chatty : uid=10091(org.mozilla.fenix.debug) Gecko identical 9 lines +05-26 11:45:58.676 2958 2993 D GeckoViewStartup: onEvent GeckoView:SetDefaultPrefs +05-26 11:45:58.680 2958 2993 D GeckoViewConsole: onEvent GeckoView:RegisterWebExtension {"allowContentMessaging":true,"id":"webcompat@mozilla.com","locationUri":"resource://android/assets/extensions/webcompat/"} +05-26 11:45:58.684 2958 2993 D GeckoViewConsole: onEvent GeckoView:WebExtension:List null +05-26 11:45:58.693 2958 2993 D GeckoViewConsole: onEvent GeckoView:RegisterWebExtension {"allowContentMessaging":true,"id":"mozacBrowserIcons","locationUri":"resource://android/assets/extensions/browser-icons/"} +05-26 11:45:58.695 2958 2993 D GeckoViewConsole: onEvent GeckoView:RegisterWebExtension {"allowContentMessaging":true,"id":"mozacBrowserAds","locationUri":"resource://android/assets/extensions/ads/"} +05-26 11:45:58.695 2958 2993 D GeckoViewConsole: onEvent GeckoView:RegisterWebExtension {"allowContentMessaging":true,"id":"BrowserCookiesExtension","locationUri":"resource://android/assets/extensions/cookies/"} +05-26 11:45:58.749 2958 2993 I Gecko : 1590507958749 Marionette TRACE Received observer notification marionette-startup-requested +05-26 11:45:58.750 2958 2993 I Gecko : 1590507958750 Marionette TRACE Waiting until startup recorder finished recording startup scripts... +05-26 11:45:58.764 2958 2993 I Gecko : 1590507958764 Marionette TRACE All scripts recorded. +05-26 11:45:58.768 2958 2993 I Gecko : 1590507958768 Marionette DEBUG Setting recommended pref browser.safebrowsing.malware.enabled to false +05-26 11:45:58.770 2958 2993 I Gecko : 1590507958770 Marionette DEBUG Setting recommended pref browser.safebrowsing.phishing.enabled to false +05-26 11:45:58.772 2958 2993 I Gecko : 1590507958771 Marionette DEBUG Setting recommended pref browser.search.update to false +05-26 11:45:58.772 2958 2993 I Gecko : 1590507958772 Marionette DEBUG Setting recommended pref browser.tabs.disableBackgroundZombification to false +05-26 11:45:58.772 2958 2993 I Gecko : 1590507958772 Marionette DEBUG Setting recommended pref browser.tabs.remote.separatePrivilegedContentProcess to false +05-26 11:45:58.773 2958 2993 I Gecko : 1590507958773 Marionette DEBUG Setting recommended pref network.http.prompt-temp-redirect to false +05-26 11:45:58.857 2958 2993 I Gecko : 1590507958853 Marionette FATAL Remote protocol server failed to start: Error: Could not bind to port 2829 (NS_ERROR_SOCKET_ADDRESS_IN_USE)(chrome://marionette/content/server.js:94:17) JS Stack trace: set acceptConnections@server.js:94:17 +05-26 11:45:58.857 2958 2993 I Gecko : start@server.js:124:5 +05-26 11:45:58.857 2958 2993 I Gecko : init/<@marionette.js:510:21 +05-26 11:45:58.857 2958 2993 I Gecko : 1590507958857 Marionette DEBUG Resetting recommended pref browser.safebrowsing.malware.enabled +05-26 11:45:58.863 2958 2993 I Gecko : 1590507958863 Marionette DEBUG Resetting recommended pref browser.safebrowsing.phishing.enabled +05-26 11:45:58.865 2958 2993 I Gecko : 1590507958865 Marionette DEBUG Resetting recommended pref browser.search.update +05-26 11:45:58.866 2958 2993 I Gecko : 1590507958866 Marionette DEBUG Resetting recommended pref browser.tabs.disableBackgroundZombification +05-26 11:45:58.866 2958 2993 I Gecko : 1590507958866 Marionette DEBUG Resetting recommended pref browser.tabs.remote.separatePrivilegedContentProcess +05-26 11:45:58.866 2958 2993 I Gecko : 1590507958866 Marionette DEBUG Resetting recommended pref network.http.prompt-temp-redirect +05-26 11:45:58.879 2958 2993 D GeckoThread: State changed to EXITING +05-26 11:45:58.896 2012 2265 D EGL_emulation: eglMakeCurrent: 0xe8b05420: ver 3 0 (tinfo 0xe8b03980) +05-26 11:45:58.965 2958 2993 E GeckoConsole: [JavaScript Error: "NetworkError when attempting to fetch resource."] +05-26 11:45:58.965 2958 2993 E GeckoConsole: get@resource://services-settings/RemoteSettingsClient.jsm:348:12 +05-26 11:45:58.978 3020 3020 D GeckoThread: State changed to LAUNCHED +05-26 11:45:58.979 3020 3074 I GeckoThread: preparing to run Gecko +05-26 11:45:59.080 2958 2958 D App : Installed browser-icons extension +05-26 11:45:59.095 2958 2993 I GeckoConsole: 1590507959095 addons.xpi WARN Exception running bootstrap method shutdown on default-theme@mozilla.org: [Exception... "Component returned failure code: 0x80004002 (NS_NOINTERFACE) [nsISupports.QueryInterface]" nsresult: "0x80004002 (NS_NOINTERFACE)" location: "JS frame :: resource://gre/modules/Extension.jsm :: shutdown :: line 2586" data: no] Stack trace: shutdown()@resource://gre/modules/Extension.jsm:2586 +05-26 11:45:59.095 2958 2993 I GeckoConsole: shutdown()@resource://gre/modules/Extension.jsm:1703 +05-26 11:45:59.095 2958 2993 I GeckoConsole: callBootstrapMethod()@resource://gre/modules/addons/XPIProvider.jsm:1819 +05-26 11:45:59.095 2958 2993 I GeckoConsole: _shutdown()@resource://gre/modules/addons/XPIProvider.jsm:1948 +05-26 11:45:59.095 2958 2993 I GeckoConsole: observe()@resource://gre/modules/AsyncShutdown.jsm:554 +05-26 11:45:59.106 2958 2993 D : HostConnection::get() New Host Connection established 0xe6b53580, tid 2993 +05-26 11:45:59.109 2958 2993 I ConfigStore: android::hardware::configstore::V1_0::ISurfaceFlingerConfigs::hasWideColorDisplay retrieved: 0 +05-26 11:45:59.109 2958 2993 I ConfigStore: android::hardware::configstore::V1_0::ISurfaceFlingerConfigs::hasHDRDisplay retrieved: 0 +05-26 11:45:59.110 2958 2993 E EGL_emulation: tid 2993: eglBindAPI(1259): error 0x300c (EGL_BAD_PARAMETER) +05-26 11:45:59.111 2958 2993 D EGL_emulation: eglCreateContext: 0xea8dc120: maj 3 min 0 rcv 3 +05-26 11:45:59.112 2958 2993 D EGL_emulation: eglMakeCurrent: 0xea8dc120: ver 3 0 (tinfo 0xee8fd9d0) +05-26 11:45:59.388 2958 2993 E GeckoConsole: [JavaScript Error: "Error: Phase "profile-change-teardown" is finished, it is too late to register completion condition "ServiceWorkerShutdownBlocker: shutting down Service Workers"" {file: "resource://gre/modules/AsyncShutdown.jsm" line: 697}] +05-26 11:45:59.388 2958 2993 E GeckoConsole: addBlocker@resource://gre/modules/AsyncShutdown.jsm:697:15 +05-26 11:45:59.388 2958 2993 E GeckoConsole: addBlocker@resource://gre/modules/AsyncShutdown.jsm:505:26 +05-26 11:45:59.388 2958 2993 E GeckoConsole: addBlocker@resource://gre/modules/AsyncShutdown.jsm:444:15 +05-26 11:45:59.388 2958 2993 E GeckoConsole: addBlocker@resource://gre/modules/nsAsyncShutdown.jsm:162:24 +05-26 11:45:59.388 2958 2993 E GeckoConsole: observe@resource://gre/modules/AsyncShutdown.jsm:554:16 +05-26 11:45:59.541 2958 2993 W GeckoConsole: [JavaScript Warning: "Security wrapper denied access to property "ONE_QUARTER" on privileged Javascript object. Support for exposing privileged objects to untrusted content via __exposedProps__ has been removed - use WebIDL bindings or Components.utils.cloneInto instead. Note that only the first denied property access from a given global object will be reported." {file: "moz-extension://9670d999-4378-46ae-b907-6d0c226b09b6/data/picture_in_picture_overrides.js" line: 26}] +05-26 11:45:59.547 1876 2204 I GnssLocationProvider: WakeLock acquired by sendMessage(REPORT_SV_STATUS, 0, com.android.server.location.GnssLocationProvider$SvStatusInfo@3a65818) +05-26 11:45:59.548 1876 1890 I GnssLocationProvider: WakeLock released by handleMessage(REPORT_SV_STATUS, 0, com.android.server.location.GnssLocationProvider$SvStatusInfo@3a65818) +05-26 11:45:59.576 2958 2958 D mozac-webcompat: Installed WebCompat webextension: webcompat@mozilla.com +05-26 11:45:59.636 2958 2993 E GeckoConsole: [JavaScript Error: "can't access property "startupData", state is undefined" {file: "resource://gre/modules/addons/XPIProvider.jsm" line: 3079}] +05-26 11:45:59.636 2958 2993 E GeckoConsole: setStartupData@resource://gre/modules/addons/XPIProvider.jsm:3079:5 +05-26 11:45:59.636 2958 2993 E GeckoConsole: saveStartupData@resource://gre/modules/Extension.jsm:2035:17 +05-26 11:45:59.636 2958 2993 E GeckoConsole: _writePersistentListeners@resource://gre/modules/ExtensionCommon.jsm:2271:15 +05-26 11:45:59.636 2958 2993 E GeckoConsole: savePersistentListener@resource://gre/modules/ExtensionCommon.jsm:2362:18 +05-26 11:45:59.636 2958 2993 E GeckoConsole: addListener@resource://gre/modules/ExtensionCommon.jsm:2495:20 +05-26 11:45:59.636 2958 2993 E GeckoConsole: addListener@resource://gre/modules/ExtensionCommon.jsm:2550:38 +05-26 11:45:59.636 2958 2993 E GeckoConsole: recvAddListener@resource://gre/modules/ExtensionParent.jsm:1079:13 +05-26 11:45:59.636 2958 2993 E GeckoConsole: observe@resource://gre/modules/AsyncShutdown.jsm:554:16 +05-26 11:45:59.657 2958 2993 I chatty : uid=10091(org.mozilla.fenix.debug) Gecko identical 24 lines +05-26 11:45:59.705 2958 2993 E GeckoConsole: [JavaScript Error: "can't access property "startupData", state is undefined" {file: "resource://gre/modules/addons/XPIProvider.jsm" line: 3079}] +05-26 11:45:59.705 2958 2993 E GeckoConsole: setStartupData@resource://gre/modules/addons/XPIProvider.jsm:3079:5 +05-26 11:45:59.705 2958 2993 E GeckoConsole: saveStartupData@resource://gre/modules/Extension.jsm:2035:17 +05-26 11:45:59.705 2958 2993 E GeckoConsole: _writePersistentListeners@resource://gre/modules/ExtensionCommon.jsm:2271:15 +05-26 11:45:59.705 2958 2993 E GeckoConsole: savePersistentListener@resource://gre/modules/ExtensionCommon.jsm:2362:18 +05-26 11:45:59.705 2958 2993 E GeckoConsole: addListener@resource://gre/modules/ExtensionCommon.jsm:2495:20 +05-26 11:45:59.705 2958 2993 E GeckoConsole: addListener@resource://gre/modules/ExtensionCommon.jsm:2550:38 +05-26 11:45:59.705 2958 2993 E GeckoConsole: recvAddListener@resource://gre/modules/ExtensionParent.jsm:1079:13 +05-26 11:45:59.705 2958 2993 E GeckoConsole: observe@resource://gre/modules/AsyncShutdown.jsm:554:16 +05-26 11:45:59.748 2958 2993 I Gecko : 1590507959748 Marionette TRACE Received observer notification xpcom-will-shutdown +05-26 11:45:59.759 2958 2958 I DefaultSupportedAddonsChecker: Register check for new supported add-ons +05-26 11:45:59.875 2958 2979 I WM-WorkerWrapper: Work [ id=c00de910-17a6-4ace-93f7-da1dd8387abe, tags={ mozilla.components.feature.addons.migration.DefaultSupportedAddonsChecker.periodicWork, mozilla.components.feature.addons.migration.SupportedAddonsWorker } ] was cancelled +05-26 11:45:59.875 2958 2979 I WM-WorkerWrapper: java.util.concurrent.CancellationException: Task was cancelled. +05-26 11:45:59.875 2958 2979 I WM-WorkerWrapper: at androidx.work.impl.utils.futures.AbstractFuture.cancellationExceptionWithCause(AbstractFuture.java:1184) +05-26 11:45:59.875 2958 2979 I WM-WorkerWrapper: at androidx.work.impl.utils.futures.AbstractFuture.getDoneValue(AbstractFuture.java:514) +05-26 11:45:59.875 2958 2979 I WM-WorkerWrapper: at androidx.work.impl.utils.futures.AbstractFuture.get(AbstractFuture.java:475) +05-26 11:45:59.875 2958 2979 I WM-WorkerWrapper: at androidx.work.impl.WorkerWrapper$2.run(WorkerWrapper.java:284) +05-26 11:45:59.875 2958 2979 I WM-WorkerWrapper: at androidx.work.impl.utils.SerialExecutor$Task.run(SerialExecutor.java:91) +05-26 11:45:59.875 2958 2979 I WM-WorkerWrapper: at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1167) +05-26 11:45:59.875 2958 2979 I WM-WorkerWrapper: at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:641) +05-26 11:45:59.875 2958 2979 I WM-WorkerWrapper: at java.lang.Thread.run(Thread.java:764) +05-26 11:45:59.899 2958 2987 I SupportedAddonsWorker: Trying to check for new supported add-ons +05-26 11:45:59.906 2958 2984 E SupportedAddonsWorker: An exception happened trying to check for new supported add-ons, re-schedule Job was cancelled +05-26 11:45:59.906 2958 2984 E SupportedAddonsWorker: kotlinx.coroutines.JobCancellationException: Job was cancelled; job=JobImpl{Cancelling}@1e7bb6 +05-26 11:45:59.959 1876 16736 I ActivityManager: Process org.mozilla.fenix.debug (pid 2958) has died: vis TRNB +05-26 11:45:59.961 1876 1894 W libprocessgroup: kill(-2958, 9) failed: No such process +05-26 11:45:59.961 1876 1894 I libprocessgroup: Successfully killed process cgroup uid 10091 pid 2958 in 0ms +05-26 11:45:59.961 1734 1734 I Zygote : Process 2958 exited cleanly (0) +05-26 11:45:59.961 1876 16736 W ActivityManager: Scheduling restart of crashed service org.mozilla.fenix.debug/androidx.work.impl.background.systemjob.SystemJobService in 1000ms +05-26 11:45:59.962 3020 3020 I ServiceChildProcess: Service has been unbound. Stopping. +05-26 11:45:59.973 3020 3020 I Process : Sending signal. PID: 3020 SIG: 9 +05-26 11:46:00.005 1876 4916 I ActivityManager: Process org.mozilla.fenix.debug:tab0 (pid 3020) has died: fore SVC +05-26 11:46:00.006 1734 1734 I Zygote : Process 3020 exited due to signal (9) +05-26 11:46:00.006 1876 1894 W libprocessgroup: kill(-3020, 9) failed: No such process +05-26 11:46:00.006 1876 1894 I libprocessgroup: Successfully killed process cgroup uid 10091 pid 3020 in 0ms +05-26 11:46:00.549 1876 2204 I GnssLocationProvider: WakeLock acquired by sendMessage(REPORT_SV_STATUS, 0, com.android.server.location.GnssLocationProvider$SvStatusInfo@1041230) +05-26 11:46:00.551 1876 1890 I GnssLocationProvider: WakeLock released by handleMessage(REPORT_SV_STATUS, 0, com.android.server.location.GnssLocationProvider$SvStatusInfo@1041230) +05-26 11:46:00.556 2482 7043 W ctxmgr : [AclManager]No 2 for (accnt=account#-517948760#, com.google.android.gms(10008):IndoorOutdoorProducer, vrsn=13280000, 0, 3pPkg = null , 3pMdlId = null , pid = 2482). Was: 3 for 57, account#-517948760# +05-26 11:46:00.937 1876 2445 I ActivityManager: Force stopping org.mozilla.fennec_aurora appid=10092 user=0: clear data +05-26 11:46:00.937 1876 2445 I ActivityManager: Killing 2819:org.mozilla.fennec_aurora:tab0/u0a92 (adj 100): stop org.mozilla.fennec_aurora +05-26 11:46:00.937 1876 2445 W ActivityManager: Scheduling restart of crashed service org.mozilla.fennec_aurora/org.mozilla.gecko.process.GeckoChildProcessServices$tab0 in 1000ms +05-26 11:46:00.937 1876 1894 W libprocessgroup: kill(-2819, 9) failed: No such process +05-26 11:46:00.940 1876 2445 I ActivityManager: Killing 2726:org.mozilla.fennec_aurora/u0a92 (adj 0): stop org.mozilla.fennec_aurora +05-26 11:46:00.942 1876 2445 W ActivityManager: Force removing ActivityRecord{6297cb2 u0 org.mozilla.fennec_aurora/org.mozilla.fenix.HomeActivity t283}: app died, no saved state +05-26 11:46:00.947 1904 1907 D hwcomposer: hw_composer sent 66 syncs in 61s +05-26 11:46:00.966 1904 1911 D gralloc_ranchu: gralloc_unregister_buffer: exiting HostConnection (is buffer-handling thread) +05-26 11:46:00.967 1904 1911 D : HostConnection::get() New Host Connection established 0xe6d43140, tid 1911 +05-26 11:46:00.967 1904 1911 D gralloc_ranchu: gralloc_unregister_buffer: exiting HostConnection (is buffer-handling thread) +05-26 11:46:00.967 1904 1911 D : HostConnection::get() New Host Connection established 0xe6d43140, tid 1911 +05-26 11:46:00.968 1904 1911 D gralloc_ranchu: gralloc_unregister_buffer: exiting HostConnection (is buffer-handling thread) +05-26 11:46:00.968 1904 1911 D : HostConnection::get() New Host Connection established 0xe6d43140, tid 1911 +05-26 11:46:00.968 1904 1911 D gralloc_ranchu: gralloc_unregister_buffer: exiting HostConnection (is buffer-handling thread) +05-26 11:46:00.968 1904 1911 D : HostConnection::get() New Host Connection established 0xe6d43140, tid 1911 +05-26 11:46:00.969 1904 1911 D gralloc_ranchu: gralloc_unregister_buffer: exiting HostConnection (is buffer-handling thread) +05-26 11:46:00.969 1904 1911 D : HostConnection::get() New Host Connection established 0xe6d43140, tid 1911 +05-26 11:46:00.969 1904 1911 D gralloc_ranchu: gralloc_unregister_buffer: exiting HostConnection (is buffer-handling thread) +05-26 11:46:00.974 1876 1894 W libprocessgroup: kill(-2819, 9) failed: No such process +05-26 11:46:00.975 1734 1734 I Zygote : Process 2819 exited due to signal (9) +05-26 11:46:00.976 1876 1894 W libprocessgroup: kill(2819, 9) failed: No such process +05-26 11:46:00.989 1904 1911 D : HostConnection::get() New Host Connection established 0xe6d43140, tid 1911 +05-26 11:46:00.994 1623 1623 D gralloc_ranchu: gralloc_alloc: Creating ashmem region of size 9334784 +05-26 11:46:01.003 1876 1891 I ActivityManager: Force stopping org.mozilla.fennec_aurora appid=10092 user=-1: clearApplicationUserData +05-26 11:46:01.012 1623 5774 D gralloc_ranchu: gralloc_alloc: Creating ashmem region of size 9334784 +05-26 11:46:01.014 1876 1894 W libprocessgroup: kill(-2819, 9) failed: No such process +05-26 11:46:01.014 1876 1894 I libprocessgroup: Successfully killed process cgroup uid 10092 pid 2819 in 77ms +05-26 11:46:01.015 1876 1894 W libprocessgroup: kill(-2726, 9) failed: No such process +05-26 11:46:01.019 1876 2445 D ZenLog : config: removeAutomaticZenRules,ZenModeConfig[user=0,allowAlarms=true,allowMedia=true,allowSystem=false,allowReminders=false,allowEvents=false,allowCalls=true,allowRepeatCallers=true,allowMessages=false,allowCallsFrom=stars,allowMessagesFrom=contacts,suppressedVisualEffects=511,areChannelsBypassingDnd=false,automaticRules={EVENTS_DEFAULT_RULE=ZenRule[enabled=false,snoozing=false,name=Event,zenMode=ZEN_MODE_IMPORTANT_INTERRUPTIONS,conditionId=condition://android/event?userId=-10000&calendar=&reply=1,condition=Condition[id=condition://android/event?userId=-10000&calendar=&reply=1,summary=...,line1=...,line2=...,icon=0,state=STATE_FALSE,flags=2],component=ComponentInfo{android/com.android.server.notification.EventConditionProvider},id=EVENTS_DEFAULT_RULE,creationTime=1587308662810,enabler=null], EVERY_NIGHT_DEFAULT_RULE=ZenRule[enabled=false,snoozing=false,name=Sleeping,zenMode=ZEN_MODE_IMPORTANT_INTERRUPTIONS,conditionId=condition://android/schedule?days=1.2.3.4.5.6.7&start=22.0&end=7.0&exitAtAlarm=true,condition=Condition[id=condition://android/schedule?days=1.2.3.4.5.6.7&start=22.0&end=7.0&exitAtAlarm=true,summary=...,line1=...,line2=...,icon=0,state=STATE_FALSE,flags=2],component=ComponentInfo{android/com.android.server.notification.ScheduleConditionProvider},id=EVERY_NIGHT_DEFAULT_RULE,creationTime=1587308662810,enabler=null]},manualRule=null],Diff[] +05-26 11:46:01.019 1876 2445 I ConditionProviders: Disallowing condition provider org.mozilla.fennec_aurora +05-26 11:46:01.020 1876 1876 D ZenLog : set_zen_mode: off,removeAutomaticZenRules +05-26 11:46:01.025 1739 1739 I keystore: clear_uid 10092 +05-26 11:46:01.033 1623 5774 D gralloc_ranchu: gralloc_alloc: Creating ashmem region of size 9334784 +05-26 11:46:01.050 1876 1961 W InputDispatcher: channel '3c6531a org.mozilla.fennec_aurora/org.mozilla.fenix.HomeActivity (server)' ~ Consumer closed input channel or an error occurred. events=0x9 +05-26 11:46:01.050 1876 1961 E InputDispatcher: channel '3c6531a org.mozilla.fennec_aurora/org.mozilla.fenix.HomeActivity (server)' ~ Channel is unrecoverably broken and will be disposed! +05-26 11:46:01.060 1876 1894 W libprocessgroup: kill(-2726, 9) failed: No such process +05-26 11:46:01.063 1733 1733 D SurfaceFlinger: duplicate layer name: changing com.google.android.apps.nexuslauncher/com.google.android.apps.nexuslauncher.NexusLauncherActivity to com.google.android.apps.nexuslauncher/com.google.android.apps.nexuslauncher.NexusLauncherActivity#1 +05-26 11:46:01.066 1623 5774 D gralloc_ranchu: gralloc_alloc: Creating ashmem region of size 9334784 +05-26 11:46:01.071 1734 1734 I Zygote : Process 2726 exited due to signal (9) +05-26 11:46:01.072 1733 2119 D : HostConnection::get() New Host Connection established 0xede98680, tid 2119 +05-26 11:46:01.072 1733 2119 D gralloc_ranchu: gralloc_unregister_buffer: exiting HostConnection (is buffer-handling thread) +05-26 11:46:01.072 1733 2119 D : HostConnection::get() New Host Connection established 0xede98680, tid 2119 +05-26 11:46:01.077 1876 5182 I WindowManager: WIN DEATH: Window{3c6531a u0 org.mozilla.fennec_aurora/org.mozilla.fenix.HomeActivity} +05-26 11:46:01.077 1876 5182 W InputDispatcher: Attempted to unregister already unregistered input channel '3c6531a org.mozilla.fennec_aurora/org.mozilla.fenix.HomeActivity (server)' +05-26 11:46:01.081 1876 8003 I ActivityManager: Force stopping org.mozilla.fennec_aurora appid=10092 user=0: from pid 3095 +05-26 11:46:01.084 1733 1759 W SurfaceFlinger: Attempting to destroy on removed layer: AppWindowToken{c874f80 token=Token{7548403 ActivityRecord{6297cb2 u0 org.mozilla.fennec_aurora/org.mozilla.fenix.HomeActivity t283}}}#0 +05-26 11:46:01.084 1733 1759 W SurfaceFlinger: Attempting to destroy on removed layer: Task=283#0 +05-26 11:46:01.087 1623 1623 D gralloc_ranchu: gralloc_alloc: Creating ashmem region of size 9334784 +05-26 11:46:01.089 1733 2119 D gralloc_ranchu: gralloc_unregister_buffer: exiting HostConnection (is buffer-handling thread) +05-26 11:46:01.091 1733 2119 D : HostConnection::get() New Host Connection established 0xecc60840, tid 2119 +05-26 11:46:01.091 1733 2119 D gralloc_ranchu: gralloc_unregister_buffer: exiting HostConnection (is buffer-handling thread) +05-26 11:46:01.092 1733 2119 D : HostConnection::get() New Host Connection established 0xecc60840, tid 2119 +05-26 11:46:01.092 1733 2119 D gralloc_ranchu: gralloc_unregister_buffer: exiting HostConnection (is buffer-handling thread) +05-26 11:46:01.096 1623 5774 D gralloc_ranchu: gralloc_alloc: Creating ashmem region of size 9334784 +05-26 11:46:01.096 2534 2825 D EGL_emulation: eglMakeCurrent: 0xe8b06aa0: ver 3 0 (tinfo 0xe8b03b50) +05-26 11:46:01.100 1876 1890 E memtrack: Couldn't load memtrack module +05-26 11:46:01.100 1876 1890 W android.os.Debug: failed to get memory consumption info: -1 +05-26 11:46:01.101 1876 1899 W ActivityManager: setHasOverlayUi called on unknown pid: 2726 +05-26 11:46:01.104 1876 1894 W libprocessgroup: kill(-2726, 9) failed: No such process +05-26 11:46:01.104 1876 1894 I libprocessgroup: Successfully killed process cgroup uid 10092 pid 2726 in 89ms +05-26 11:46:01.113 2131 2131 D CarrierSvcBindHelper: No carrier app for: 0 +05-26 11:46:01.116 2000 2000 I GoogleInputMethod: onFinishInput() : Dummy InputConnection bound +05-26 11:46:01.121 2000 2000 I GoogleInputMethod: onStartInput() : Dummy InputConnection bound +05-26 11:46:01.135 2534 2534 W SessionLifecycleManager: Handover failed. Creating new session controller. +05-26 11:46:01.141 2499 2681 D EGL_emulation: eglMakeCurrent: 0xd35359e0: ver 3 0 (tinfo 0xd353b4f0) +05-26 11:46:01.161 2482 2482 I GeofencerStateMachine: removeGeofences: removeRequest=RemoveGeofencingRequest[REMOVE_ALL packageName=org.mozilla.fennec_aurora] +05-26 11:46:01.163 1876 1890 E system_server: No package ID 7f found for ID 0x7f08019f. +05-26 11:46:01.163 1876 1890 E system_server: No package ID 7f found for ID 0x7f130122. +05-26 11:46:01.163 1876 1890 E system_server: No package ID 7f found for ID 0x7f130122. +05-26 11:46:01.163 1876 1890 E system_server: No package ID 7f found for ID 0x7f08019d. +05-26 11:46:01.166 2131 2131 D CarrierSvcBindHelper: No carrier app for: 0 +05-26 11:46:01.166 1876 1890 E system_server: No package ID 7f found for ID 0x7f130121. +05-26 11:46:01.167 1876 1890 E system_server: No package ID 7f found for ID 0x7f130121. +05-26 11:46:01.225 2012 2265 D EGL_emulation: eglMakeCurrent: 0xe8b05420: ver 3 0 (tinfo 0xe8b03980) +05-26 11:46:01.231 1876 1876 I GnssLocationProvider: WakeLock acquired by sendMessage(SET_REQUEST, 0, com.android.server.location.GnssLocationProvider$GpsRequest@85f09b6) +05-26 11:46:01.232 1560 1573 D vold : Remounting 10092 as mode read +05-26 11:46:01.247 2534 2038 W LocationOracle: No location history returned by ContextManager +05-26 11:46:01.248 2012 2265 D EGL_emulation: eglMakeCurrent: 0xe8b05420: ver 3 0 (tinfo 0xe8b03980) +05-26 11:46:01.248 1876 1890 I GnssLocationProvider: WakeLock released by handleMessage(SET_REQUEST, 0, com.android.server.location.GnssLocationProvider$GpsRequest@85f09b6) +05-26 11:46:01.261 1876 1876 V SettingsProvider: Notifying for 0: content://settings/global/debug_app +05-26 11:46:01.264 2012 2265 D EGL_emulation: eglMakeCurrent: 0xe8b05420: ver 3 0 (tinfo 0xe8b03980) +05-26 11:46:01.267 7086 2682 I LocationSettingsChecker: Removing dialog suppression flag for package org.mozilla.fennec_aurora +05-26 11:46:01.277 1876 1890 E memtrack: Couldn't load memtrack module +05-26 11:46:01.277 1876 1890 W android.os.Debug: failed to get memory consumption info: -1 +05-26 11:46:01.278 2012 2265 D EGL_emulation: eglMakeCurrent: 0xe8b05420: ver 3 0 (tinfo 0xe8b03980) +05-26 11:46:01.291 2012 2265 I chatty : uid=10024(com.android.systemui) RenderThread identical 1 line +05-26 11:46:01.308 2012 2265 D EGL_emulation: eglMakeCurrent: 0xe8b05420: ver 3 0 (tinfo 0xe8b03980) +05-26 11:46:01.320 7086 11609 I Icing : doRemovePackageData org.mozilla.fennec_aurora +05-26 11:46:01.325 1560 1573 D vold : Remounting 10092 as mode write +05-26 11:46:01.326 2012 2265 D EGL_emulation: eglMakeCurrent: 0xe8b05420: ver 3 0 (tinfo 0xe8b03980) +05-26 11:46:01.328 1876 1876 I GnssLocationProvider: WakeLock acquired by sendMessage(SET_REQUEST, 0, com.android.server.location.GnssLocationProvider$GpsRequest@37bd5af) +05-26 11:46:01.341 1876 1890 I GnssLocationProvider: WakeLock released by handleMessage(SET_REQUEST, 0, com.android.server.location.GnssLocationProvider$GpsRequest@37bd5af) +05-26 11:46:01.341 2012 2265 D EGL_emulation: eglMakeCurrent: 0xe8b05420: ver 3 0 (tinfo 0xe8b03980) +05-26 11:46:01.377 2012 2265 I chatty : uid=10024(com.android.systemui) RenderThread identical 2 lines +05-26 11:46:01.399 2012 2265 D EGL_emulation: eglMakeCurrent: 0xe8b05420: ver 3 0 (tinfo 0xe8b03980) +05-26 11:46:01.413 2482 6321 W ctxmgr : [AclManager]No 3 for (accnt=account#-517948760#, com.google.android.gms(10008):UserVelocityProducer, vrsn=13280022, 0, 3pPkg = null , 3pMdlId = null , pid = 2482). Was: 3 for 1, account#-517948760# +05-26 11:46:01.418 2534 2534 I MicroDetectionWorker: #startMicroDetector [speakerMode: 0] +05-26 11:46:01.419 2534 2534 I AudioController: Using mInputStreamFactoryBuilder +05-26 11:46:01.420 2534 2534 I AudioController: Created new AudioSource +05-26 11:46:01.421 2534 2534 I MicroDetectionWorker: onReady +05-26 11:46:01.425 2012 2265 D EGL_emulation: eglMakeCurrent: 0xe8b05420: ver 3 0 (tinfo 0xe8b03980) +05-26 11:46:01.489 2534 2034 I MicroRecognitionRunner: Starting detection. +05-26 11:46:01.490 2116 3100 I ProvidersCache: Provider returned no roots. Possibly naughty: com.google.android.apps.docs.storage +05-26 11:46:01.501 1876 8003 I ActivityManager: Force stopping org.mozilla.fennec_aurora appid=10092 user=-1: set debug app +05-26 11:46:01.502 1876 1876 V SettingsProvider: Notifying for 0: content://settings/global/debug_app +05-26 11:46:01.506 2534 2004 I MicrophoneInputStream: mic_starting SR : 16000 CC : 16 SO : 6 +05-26 11:46:01.509 1631 1682 E : Request requires android.permission.RECORD_AUDIO +05-26 11:46:01.509 1631 1682 E AudioPolicyIntefaceImpl: getInputForAttr permission denied: recording not allowed for uid 10039 pid 2534 +05-26 11:46:01.510 1631 1682 E AudioFlinger: createRecord() checkRecordThread_l failed +05-26 11:46:01.510 2534 2004 E IAudioFlinger: createRecord returned error -22 +05-26 11:46:01.510 2534 2004 E AudioRecord: AudioFlinger could not create record track, status: -22 +05-26 11:46:01.510 2534 2004 E AudioRecord-JNI: Error creating AudioRecord instance: initialization check failed with status -22. +05-26 11:46:01.512 2534 2004 E android.media.AudioRecord: Error code -20 when initializing native AudioRecord object. +05-26 11:46:01.512 2534 2004 I MicrophoneInputStream: mic_started SR : 16000 CC : 16 SO : 6 +05-26 11:46:01.512 2534 2004 E ActivityThread: Failed to find provider info for com.google.android.apps.gsa.testing.ui.audio.recorded +05-26 11:46:01.514 2534 2534 I MicroDetectionWorker: onReady +05-26 11:46:01.516 2534 2004 I MicrophoneInputStream: mic_close SR : 16000 CC : 16 SO : 6 +05-26 11:46:01.517 2534 2034 I MicroRecognitionRunner: Detection finished +05-26 11:46:01.517 2534 2034 W ErrorReporter: reportError [type: 211, code: 524300]: Error reading from input stream +05-26 11:46:01.520 2534 2954 I MicroRecognitionRunner: Stopping hotword detection. +05-26 11:46:01.527 2534 2034 W ErrorProcessor: onFatalError, processing error from engine(4) +05-26 11:46:01.527 2534 2034 W ErrorProcessor: com.google.android.apps.gsa.shared.speech.b.g: Error reading from input stream +05-26 11:46:01.527 2534 2034 W ErrorProcessor: at com.google.android.apps.gsa.staticplugins.microdetection.d.k.a(SourceFile:91) +05-26 11:46:01.527 2534 2034 W ErrorProcessor: at com.google.android.apps.gsa.staticplugins.microdetection.d.l.run(Unknown Source:14) +05-26 11:46:01.527 2534 2034 W ErrorProcessor: at com.google.android.libraries.gsa.runner.a.a.b(SourceFile:32) +05-26 11:46:01.527 2534 2034 W ErrorProcessor: at com.google.android.libraries.gsa.runner.a.c.call(Unknown Source:4) +05-26 11:46:01.527 2534 2034 W ErrorProcessor: at java.util.concurrent.FutureTask.run(FutureTask.java:266) +05-26 11:46:01.527 2534 2034 W ErrorProcessor: at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:458) +05-26 11:46:01.527 2534 2034 W ErrorProcessor: at java.util.concurrent.FutureTask.run(FutureTask.java:266) +05-26 11:46:01.527 2534 2034 W ErrorProcessor: at com.google.android.apps.gsa.shared.util.concurrent.b.g.run(Unknown Source:4) +05-26 11:46:01.527 2534 2034 W ErrorProcessor: at com.google.android.apps.gsa.shared.util.concurrent.b.aw.run(SourceFile:4) +05-26 11:46:01.527 2534 2034 W ErrorProcessor: at com.google.android.apps.gsa.shared.util.concurrent.b.aw.run(SourceFile:4) +05-26 11:46:01.527 2534 2034 W ErrorProcessor: at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1167) +05-26 11:46:01.527 2534 2034 W ErrorProcessor: at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:641) +05-26 11:46:01.527 2534 2034 W ErrorProcessor: at java.lang.Thread.run(Thread.java:764) +05-26 11:46:01.527 2534 2034 W ErrorProcessor: at com.google.android.apps.gsa.shared.util.concurrent.b.i.run(SourceFile:6) +05-26 11:46:01.527 2534 2034 W ErrorProcessor: Caused by: com.google.android.apps.gsa.shared.exception.GsaIOException: Error code: 393238 | Buffer overflow, no available space. +05-26 11:46:01.527 2534 2034 W ErrorProcessor: at com.google.android.apps.gsa.speech.audio.Tee.j(SourceFile:103) +05-26 11:46:01.527 2534 2034 W ErrorProcessor: at com.google.android.apps.gsa.speech.audio.au.read(SourceFile:2) +05-26 11:46:01.527 2534 2034 W ErrorProcessor: at java.io.InputStream.read(InputStream.java:101) +05-26 11:46:01.527 2534 2034 W ErrorProcessor: at com.google.android.apps.gsa.speech.audio.ao.run(SourceFile:17) +05-26 11:46:01.527 2534 2034 W ErrorProcessor: at com.google.android.apps.gsa.speech.audio.an.run(SourceFile:2) +05-26 11:46:01.527 2534 2034 W ErrorProcessor: at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:458) +05-26 11:46:01.527 2534 2034 W ErrorProcessor: ... 10 more +05-26 11:46:01.527 2534 2034 I AudioController: internalShutdown +05-26 11:46:01.528 2534 2534 I MicroDetector: Keeping mic open: false +05-26 11:46:01.528 2534 2534 I MicroDetectionWorker: #onError(false) +05-26 11:46:01.528 2534 2038 I DeviceStateChecker: DeviceStateChecker cancelled +05-26 11:46:01.539 1876 3809 I ActivityManager: START u0 {flg=0x10000000 cmp=org.mozilla.fennec_aurora/org.mozilla.fenix.HomeActivity (has extras)} from uid 0 +05-26 11:46:01.548 1876 2204 I GnssLocationProvider: WakeLock acquired by sendMessage(REPORT_SV_STATUS, 0, com.android.server.location.GnssLocationProvider$SvStatusInfo@89b4c66) +05-26 11:46:01.572 1876 1890 I GnssLocationProvider: WakeLock released by handleMessage(REPORT_SV_STATUS, 0, com.android.server.location.GnssLocationProvider$SvStatusInfo@89b4c66) +05-26 11:46:01.580 3143 3143 W a.fennec_auror: Unexpected CPU variant for X86 using defaults: x86 +05-26 11:46:01.586 1876 1893 I ActivityManager: Start proc 3143:org.mozilla.fennec_aurora/u0a92 for activity org.mozilla.fennec_aurora/org.mozilla.fenix.HomeActivity +05-26 11:46:01.599 1623 5774 D gralloc_ranchu: gralloc_alloc: Creating ashmem region of size 9334784 +05-26 11:46:01.607 1876 1940 D : HostConnection::get() New Host Connection established 0xc8655580, tid 1940 +05-26 11:46:01.617 2482 3056 I Places : ?: PlacesBleScanner start() with priority 2 +05-26 11:46:01.631 3143 3143 W ActivityThread: Application org.mozilla.fennec_aurora can be debugged on port 8100... +05-26 11:46:01.633 3143 3143 I a.fennec_auror: The ClassLoaderContext is a special shared library. +05-26 11:46:01.634 2482 3056 I Places : ?: PlacesBleScanner start() with priority 2 +05-26 11:46:01.635 1623 5774 D gralloc_ranchu: gralloc_alloc: Creating ashmem region of size 9334784 +05-26 11:46:01.637 2482 3056 I PlaceInferenceEngine: [anon] Changed inference mode: 1 +05-26 11:46:01.671 2499 2681 D EGL_emulation: eglMakeCurrent: 0xd35359e0: ver 3 0 (tinfo 0xd353b4f0) +05-26 11:46:01.674 1733 1967 D gralloc_ranchu: gralloc_unregister_buffer: exiting HostConnection (is buffer-handling thread) +05-26 11:46:01.675 1733 1967 D : HostConnection::get() New Host Connection established 0xed960bc0, tid 1967 +05-26 11:46:01.675 1733 1967 D gralloc_ranchu: gralloc_unregister_buffer: exiting HostConnection (is buffer-handling thread) +05-26 11:46:01.676 1733 1967 D : HostConnection::get() New Host Connection established 0xed960bc0, tid 1967 +05-26 11:46:01.676 1733 1967 D gralloc_ranchu: gralloc_unregister_buffer: exiting HostConnection (is buffer-handling thread) +05-26 11:46:01.679 1733 1967 D : HostConnection::get() New Host Connection established 0xed960bc0, tid 1967 +05-26 11:46:01.679 1733 1967 D gralloc_ranchu: gralloc_unregister_buffer: exiting HostConnection (is buffer-handling thread) +05-26 11:46:01.687 1904 1911 D gralloc_ranchu: gralloc_unregister_buffer: exiting HostConnection (is buffer-handling thread) +05-26 11:46:01.688 1904 1911 D : HostConnection::get() New Host Connection established 0xe6d43140, tid 1911 +05-26 11:46:01.688 1904 1911 D gralloc_ranchu: gralloc_unregister_buffer: exiting HostConnection (is buffer-handling thread) +05-26 11:46:01.689 1904 1911 D : HostConnection::get() New Host Connection established 0xe6d43140, tid 1911 +05-26 11:46:01.690 1904 1911 D gralloc_ranchu: gralloc_unregister_buffer: exiting HostConnection (is buffer-handling thread) +05-26 11:46:01.690 1904 1911 D : HostConnection::get() New Host Connection established 0xe6d43140, tid 1911 +05-26 11:46:01.690 1904 1911 D gralloc_ranchu: gralloc_unregister_buffer: exiting HostConnection (is buffer-handling thread) +05-26 11:46:01.692 2534 2825 D EGL_emulation: eglMakeCurrent: 0xe8b06aa0: ver 3 0 (tinfo 0xe8b03b50) +05-26 11:46:01.694 2012 2265 D EGL_emulation: eglMakeCurrent: 0xe8b05420: ver 3 0 (tinfo 0xe8b03980) +05-26 11:46:01.696 1904 1911 D : HostConnection::get() New Host Connection established 0xe6d43140, tid 1911 +05-26 11:46:01.696 1733 2205 D gralloc_ranchu: gralloc_unregister_buffer: exiting HostConnection (is buffer-handling thread) +05-26 11:46:01.697 1733 2205 D : HostConnection::get() New Host Connection established 0xed960980, tid 2205 +05-26 11:46:01.697 1733 2205 D gralloc_ranchu: gralloc_unregister_buffer: exiting HostConnection (is buffer-handling thread) +05-26 11:46:01.697 1733 2205 D : HostConnection::get() New Host Connection established 0xed960980, tid 2205 +05-26 11:46:01.697 1733 2205 D gralloc_ranchu: gralloc_unregister_buffer: exiting HostConnection (is buffer-handling thread) +05-26 11:46:01.698 1733 2205 D : HostConnection::get() New Host Connection established 0xed960980, tid 2205 +05-26 11:46:01.698 1733 2205 D gralloc_ranchu: gralloc_unregister_buffer: exiting HostConnection (is buffer-handling thread) +05-26 11:46:01.707 2012 2265 D EGL_emulation: eglMakeCurrent: 0xe8b05420: ver 3 0 (tinfo 0xe8b03980) +05-26 11:46:01.714 2012 2265 I chatty : uid=10024(com.android.systemui) RenderThread identical 1 line +05-26 11:46:01.726 2012 2265 D EGL_emulation: eglMakeCurrent: 0xe8b05420: ver 3 0 (tinfo 0xe8b03980) +05-26 11:46:01.731 2482 3056 I Places : ?: PlacesBleScanner start() with priority 2 +05-26 11:46:01.734 2012 2265 D EGL_emulation: eglMakeCurrent: 0xe8b05420: ver 3 0 (tinfo 0xe8b03980) +05-26 11:46:01.742 2012 2265 I chatty : uid=10024(com.android.systemui) RenderThread identical 1 line +05-26 11:46:01.748 2012 2265 D EGL_emulation: eglMakeCurrent: 0xe8b05420: ver 3 0 (tinfo 0xe8b03980) +05-26 11:46:01.751 2482 3056 I Places : ?: PlacesBleScanner start() with priority 2 +05-26 11:46:01.753 2534 2034 I EventLogSendingHelper: Sending log events. +05-26 11:46:01.755 2482 3056 I PlaceInferenceEngine: [anon] Changed inference mode: 1 +05-26 11:46:01.763 2012 2265 D EGL_emulation: eglMakeCurrent: 0xe8b05420: ver 3 0 (tinfo 0xe8b03980) +05-26 11:46:01.796 2012 2265 I chatty : uid=10024(com.android.systemui) RenderThread identical 4 lines +05-26 11:46:01.804 2012 2265 D EGL_emulation: eglMakeCurrent: 0xe8b05420: ver 3 0 (tinfo 0xe8b03980) +05-26 11:46:01.805 3143 3163 W a.fennec_auror: Accessing hidden method Landroid/content/res/Resources$Theme;->rebase()V (dark greylist, linking) +05-26 11:46:01.807 2482 3056 I Places : Converted 0 out of 1 WiFi scans +05-26 11:46:01.809 3143 3143 D FirebaseApp: com.google.firebase.auth.FirebaseAuth is not linked. Skipping initialization. +05-26 11:46:01.810 3143 3143 D FirebaseApp: com.google.firebase.crash.FirebaseCrash is not linked. Skipping initialization. +05-26 11:46:01.810 3143 3143 I FirebaseInitProvider: FirebaseApp initialization successful +05-26 11:46:01.816 2012 2265 D EGL_emulation: eglMakeCurrent: 0xe8b05420: ver 3 0 (tinfo 0xe8b03980) +05-26 11:46:01.825 2012 2265 D EGL_emulation: eglMakeCurrent: 0xe8b05420: ver 3 0 (tinfo 0xe8b03980) +05-26 11:46:01.834 2482 11975 I PlaceInferenceEngine: No beacon scan available - ignoring candidates. +05-26 11:46:01.868 3143 3143 D FennecProfile: profiles.ini: false +05-26 11:46:01.871 3143 3143 D FennecProfile: No profiles found +05-26 11:46:01.877 3143 3143 D FennecMigrator: No migrations to run. Fennec install - false. +05-26 11:46:01.888 3143 3143 D FenixApplication: Initializing Glean (uploadEnabled=true, isFennec=true) +05-26 11:46:01.901 2482 6321 W ctxmgr : [AclManager]No 2 for (accnt=account#-517948760#, com.google.android.gms(10008):PlacesProducer, vrsn=13280000, 0, 3pPkg = null , 3pMdlId = null , pid = 2482). Was: 3 for 18, account#-517948760# +05-26 11:46:01.916 3143 3175 D RustNativeSupport: findMegazordLibraryName(viaduct, 0.58.1 +05-26 11:46:01.916 3143 3175 D RustNativeSupport: lib in use: none +05-26 11:46:01.916 3143 3175 D RustNativeSupport: lib configured: megazord +05-26 11:46:01.916 3143 3175 D RustNativeSupport: lib version configured: 0.58.1 +05-26 11:46:01.916 3143 3175 D RustNativeSupport: settled on megazord +05-26 11:46:01.967 3143 3163 I FA : Collection disabled with firebase_analytics_collection_enabled=0 +05-26 11:46:01.969 3143 3163 I FA : App measurement is starting up, version: 12780 +05-26 11:46:01.970 3143 3163 I FA : To enable debug logging run: adb shell setprop log.tag.FA VERBOSE +05-26 11:46:01.973 3143 3163 I FA : To enable faster debug mode event logging run: +05-26 11:46:01.973 3143 3163 I FA : adb shell setprop debug.firebase.analytics.app org.mozilla.fennec_aurora +05-26 11:46:02.036 3143 3173 D libglean_ffi: glean_ffi: Android logging should be hooked up! +05-26 11:46:02.037 3143 3173 I glean/Glean: Registering pings for mozilla.telemetry.glean.GleanMetrics.Pings +05-26 11:46:02.038 3143 3173 I libglean_ffi: glean_core: Creating new Glean +05-26 11:46:02.038 3143 3173 D libglean_ffi: glean_core::database: Database path: "/data/user/0/org.mozilla.fennec_aurora/glean_data/db" +05-26 11:46:02.042 3143 3143 W ActivityThread: ClassLoader.loadClass: The class loader returned by Thread.getContextClassLoader() may fail for processes that host multiple applications. You should explicitly specify a context class loader. For example: Thread.setContextClassLoader(getClass().getClassLoader()); +05-26 11:46:02.043 3143 3143 I GeckoRuntime: Adding debug configuration from: /data/local/tmp/org.mozilla.fennec_aurora-geckoview-config.yaml +05-26 11:46:02.043 3143 3143 D GeckoDebugConfig: Adding environment variables from debug config: {MOZ_CRASHREPORTER=1, MOZ_CRASHREPORTER_NO_REPORT=1, MOZ_CRASHREPORTER_SHUTDOWN=1} +05-26 11:46:02.043 3143 3143 D GeckoDebugConfig: Adding arguments from debug config: [-marionette, -profile, /mnt/sdcard/org.mozilla.fennec_aurora-geckodriver-profile] +05-26 11:46:02.043 3143 3143 D GeckoThread: State changed to LAUNCHED +05-26 11:46:02.044 3143 3175 D RustNativeSupport: findMegazordLibraryName(rustlog, 0.58.1 +05-26 11:46:02.045 3143 3175 D RustNativeSupport: lib in use: none +05-26 11:46:02.045 3143 3175 D RustNativeSupport: lib configured: megazord +05-26 11:46:02.045 3143 3175 D RustNativeSupport: lib version configured: 0.58.1 +05-26 11:46:02.045 3143 3175 D RustNativeSupport: settled on megazord +05-26 11:46:02.048 3143 3175 I rc_log_ffi::ios: rc_log adapter initialized! +05-26 11:46:02.049 3143 3179 I GeckoThread: preparing to run Gecko +05-26 11:46:02.050 3143 3173 I libglean_ffi: glean_core::database: Database initialized +05-26 11:46:02.051 3143 3179 D GeckoThread: env var: MOZ_CRASHREPORTER=1 +05-26 11:46:02.051 3143 3179 D GeckoThread: env var: MOZ_CRASHREPORTER_NO_REPORT=1 +05-26 11:46:02.051 3143 3179 D GeckoThread: env var: MOZ_CRASHREPORTER_SHUTDOWN=1 +05-26 11:46:02.054 3143 3143 D GeckoRuntime: Lifecycle: onCreate +05-26 11:46:02.090 3143 3173 I libglean_ffi: glean_ffi: Glean initialized +05-26 11:46:02.129 3143 3179 D GeckoThread: State changed to MOZGLUE_READY +05-26 11:46:02.132 3143 3143 D GleanMetricsService: Enabling Glean. +05-26 11:46:02.138 3143 3143 I glean/Dispatchers: Task queued for execution and delayed until flushed +05-26 11:46:02.140 3143 3143 I AdjustMetricsService: No adjust token defined +05-26 11:46:02.141 3143 3143 D PushConfig: Creating push configuration for autopush. +05-26 11:46:02.141 3143 3179 W Settings: Setting animator_duration_scale has moved from android.provider.Settings.System to android.provider.Settings.Global, returning read-only global URI. +05-26 11:46:02.147 3143 3179 E GeckoLibLoad: Load sqlite start +05-26 11:46:02.158 3143 3143 I App : AutoPushFeature is configured, initializing it... +05-26 11:46:02.160 3143 3143 I AutoPushFeature: Checking validity of push subscriptions. +05-26 11:46:02.169 3143 3155 I a.fennec_auror: Background concurrent copying GC freed 14684(2MB) AllocSpace objects, 4(208KB) LOS objects, 50% free, 2047KB/3MB, paused 4.855ms total 125.455ms +05-26 11:46:02.170 3143 3143 D FennecProfile: profiles.ini: false +05-26 11:46:02.170 3143 3143 D FennecProfile: No profiles found +05-26 11:46:02.182 3143 3175 W [WARNING][Leanplum]: [com.leanplum.internal.ActionManager::getLocationManager::8]: Geofencing support requires leanplum-location module and Google Play Services v8.1 and higher. +05-26 11:46:02.182 3143 3175 W [WARNING][Leanplum]: Add this to your build.gradle file: +05-26 11:46:02.182 3143 3175 W [WARNING][Leanplum]: implementation 'com.google.android.gms:play-services-location:8.3.0+' +05-26 11:46:02.182 3143 3175 W [WARNING][Leanplum]: implementation 'com.leanplum:leanplum-location:+' +05-26 11:46:02.192 3143 3175 I [INFO][Leanplum]: [com.leanplum.monitoring.ExceptionHandler::setContext::6]: LeanplumExceptionHandler could not initialize Exception Reporting.This is expected if you have not included the leanplum-monitoring module +05-26 11:46:02.205 3143 3179 E GeckoLibLoad: Load sqlite done +05-26 11:46:02.205 3143 3179 E GeckoLibLoad: Load nss start +05-26 11:46:02.205 3143 3179 E GeckoLibLoad: Load nss done +05-26 11:46:02.227 3143 3143 D FennecMigrator: This is not a Fennec installation. No migration needed. +05-26 11:46:02.247 3143 3185 I [INFO][Leanplum]: [com.leanplum.LeanplumFcmProvider::isManifestSetup::11]: Firebase Messaging is setup correctly. +05-26 11:46:02.250 3143 3143 W a.fennec_auror: Accessing hidden method Landroid/content/res/Resources$Theme;->rebase()V (dark greylist, reflection) +05-26 11:46:02.251 3143 3143 I ResourcesCompat: Failed to retrieve rebase() method +05-26 11:46:02.251 3143 3143 I ResourcesCompat: java.lang.NoSuchMethodException: rebase [] +05-26 11:46:02.251 3143 3143 I ResourcesCompat: at java.lang.Class.getMethod(Class.java:2068) +05-26 11:46:02.251 3143 3143 I ResourcesCompat: at java.lang.Class.getDeclaredMethod(Class.java:2047) +05-26 11:46:02.251 3143 3143 I ResourcesCompat: at androidx.core.content.res.ResourcesCompat$ThemeCompat$ImplApi23.rebase(ResourcesCompat.java:3) +05-26 11:46:02.251 3143 3143 I ResourcesCompat: at androidx.appcompat.app.AppCompatActivity.attachBaseContext(AppCompatActivity.java:80) +05-26 11:46:02.251 3143 3143 I ResourcesCompat: at mozilla.components.support.locale.LocaleAwareAppCompatActivity.attachBaseContext(LocaleAwareAppCompatActivity.kt:2) +05-26 11:46:02.251 3143 3143 I ResourcesCompat: at android.app.Activity.attach(Activity.java:7051) +05-26 11:46:02.251 3143 3143 I ResourcesCompat: at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2873) +05-26 11:46:02.251 3143 3143 I ResourcesCompat: at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3048) +05-26 11:46:02.251 3143 3143 I ResourcesCompat: at android.app.servertransaction.LaunchActivityItem.execute(LaunchActivityItem.java:78) +05-26 11:46:02.251 3143 3143 I ResourcesCompat: at android.app.servertransaction.TransactionExecutor.executeCallbacks(TransactionExecutor.java:108) +05-26 11:46:02.251 3143 3143 I ResourcesCompat: at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:68) +05-26 11:46:02.251 3143 3143 I ResourcesCompat: at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1808) +05-26 11:46:02.251 3143 3143 I ResourcesCompat: at android.os.Handler.dispatchMessage(Handler.java:106) +05-26 11:46:02.251 3143 3143 I ResourcesCompat: at android.os.Looper.loop(Looper.java:193) +05-26 11:46:02.251 3143 3143 I ResourcesCompat: at android.app.ActivityThread.main(ActivityThread.java:6669) +05-26 11:46:02.251 3143 3143 I ResourcesCompat: at java.lang.reflect.Method.invoke(Native Method) +05-26 11:46:02.251 3143 3143 I ResourcesCompat: at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:493) +05-26 11:46:02.251 3143 3143 I ResourcesCompat: at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:858) +05-26 11:46:02.427 3143 3179 E GeckoLibLoad: Loaded libs in 222.502000ms total, 0ms(340ms) user, 140ms(250ms) system, 9(18) faults +05-26 11:46:02.429 3143 3179 D GeckoThread: State changed to LIBS_READY +05-26 11:46:02.431 3143 3179 W GeckoThread: zerdatime 190882628 - runGecko +05-26 11:46:02.432 3143 3179 D GeckoProfile: Loading profile at: null name: default +05-26 11:46:02.432 3143 3179 D GeckoProfile: Created new profile dir. +05-26 11:46:02.433 3143 3179 I GeckoProfile: Enqueuing profile init. +05-26 11:46:02.434 3143 3179 D GeckoProfile: Found profile dir: /data/user/0/org.mozilla.fennec_aurora/files/mozilla/rvksmdxh.default +05-26 11:46:02.434 3143 3179 D GeckoProfile: Attempting to write new client ID properties +05-26 11:46:02.435 3143 3179 D GeckoProfile: Creating profile dir: /data/user/0/org.mozilla.fennec_aurora/files/mozilla/rvksmdxh.default +05-26 11:46:02.454 3143 3173 I glean/MetricsPingSched: The application just updated. Send metrics ping now. +05-26 11:46:02.477 3143 3173 I glean/MetricsPingSched: Collecting the 'metrics' ping, now = Tue May 26 11:46:02 EDT 2020, startup = true, reason = upgrade +05-26 11:46:02.477 3143 3173 I libglean_ffi: glean_core::ping: Collecting metrics +05-26 11:46:02.477 3143 3173 I libglean_ffi: glean_core::ping: Storage for metrics empty. Bailing out. +05-26 11:46:02.477 3143 3173 I libglean_ffi: glean_core: No content for ping 'metrics', therefore no ping queued. +05-26 11:46:02.480 3143 3173 D glean/MetricsPingSched: Scheduling the 'metrics' ping in 58437572ms +05-26 11:46:02.485 3143 3173 I libglean_ffi: glean_core: Upload enabled: true +05-26 11:46:02.501 3143 3179 I Gecko:DumpUtils: Fifo watcher disabled via pref. +05-26 11:46:02.551 1876 2204 I GnssLocationProvider: WakeLock acquired by sendMessage(REPORT_SV_STATUS, 0, com.android.server.location.GnssLocationProvider$SvStatusInfo@1b47420) +05-26 11:46:02.552 1876 1890 I GnssLocationProvider: WakeLock released by handleMessage(REPORT_SV_STATUS, 0, com.android.server.location.GnssLocationProvider$SvStatusInfo@1b47420) +05-26 11:46:02.571 3143 3143 I FirefoxAccountStateMachine: Enabling/updating sync with a new SyncConfig: SyncConfig(supportedEngines=[mozilla.components.service.fxa.SyncEngine$History@83c4938, mozilla.components.service.fxa.SyncEngine$Bookmarks@94a6d11, mozilla.components.service.fxa.SyncEngine$Passwords@e11ce76], syncPeriodInMinutes=240) +05-26 11:46:02.579 3143 3143 I BgSyncManager: Periodic syncing enabled at a 240 interval +05-26 11:46:02.579 3143 3143 I FirefoxAccountStateMachine: Sync is enabled +05-26 11:46:02.589 3143 3211 I FirefoxAccountStateMachine: Processing event Event$Init for state Start. Next state is Start +05-26 11:46:02.594 3143 3179 D GeckoSysInfo: System memory: 1494MB. +05-26 11:46:02.605 3143 3179 D GeckoThread: State changed to JNI_READY +05-26 11:46:02.610 3143 3143 E ActivityThread: Failed to find provider info for org.mozilla.fennec_aurora.fxa.auth +05-26 11:46:02.625 3143 3213 D ServiceAllocator: org.mozilla.gecko.process.GeckoChildProcessServices$tab0 updateBindings: BACKGROUND priority, 0 importance, 2 successful binds, 0 failed binds, 0 successful unbinds, 0 failed unbinds +05-26 11:46:02.630 3222 3222 W nec_aurora:tab: Unexpected CPU variant for X86 using defaults: x86 +05-26 11:46:02.633 1876 1893 I ActivityManager: Start proc 3222:org.mozilla.fennec_aurora:tab0/u0a92 for service org.mozilla.fennec_aurora/org.mozilla.gecko.process.GeckoChildProcessServices$tab0 +05-26 11:46:02.651 1739 1739 I keystore: del USRPKEY_org.mozilla.fennec_aurora 10092 +05-26 11:46:02.653 1739 1739 I keystore: del USRCERT_org.mozilla.fennec_aurora 10092 +05-26 11:46:02.653 3143 3143 D GeckoRuntime: Lifecycle: onStart +05-26 11:46:02.655 1739 1739 I keystore: del CACERT_org.mozilla.fennec_aurora 10092 +05-26 11:46:02.657 3143 3143 D GeckoRuntime: Lifecycle: onResume +05-26 11:46:02.658 3143 3143 D GeckoNetworkManager: Incoming event start for state OffNoListeners -> OnNoListeners +05-26 11:46:02.660 3143 3143 D GeckoNetworkManager: New network state: UP, WIFI, WIFI +05-26 11:46:02.661 3143 3143 D OpenGLRenderer: Skia GL Pipeline +05-26 11:46:02.661 3143 3185 D NetworkSecurityConfig: No Network Security Config specified, using platform default +05-26 11:46:02.666 3222 3222 I nec_aurora:tab: The ClassLoaderContext is a special shared library. +05-26 11:46:02.675 3143 3211 I FirefoxAccountStateMachine: Ran 'Event$Init' side-effects for state Start, got successive event Event$AccountNotFound +05-26 11:46:02.675 3143 3211 I FirefoxAccountStateMachine: Processing event Event$AccountNotFound for state Start. Next state is NotAuthenticated +05-26 11:46:02.676 1733 2119 E SurfaceFlinger: ro.sf.lcd_density must be defined as a build property +05-26 11:46:02.676 3143 3211 D RustNativeSupport: findMegazordLibraryName(fxaclient, 0.58.1 +05-26 11:46:02.676 3143 3211 D RustNativeSupport: lib in use: none +05-26 11:46:02.676 3143 3211 D RustNativeSupport: lib configured: megazord +05-26 11:46:02.676 3143 3211 D RustNativeSupport: lib version configured: 0.58.1 +05-26 11:46:02.676 3143 3211 D RustNativeSupport: settled on megazord +05-26 11:46:02.679 3143 3211 D fxaclient_ffi: fxa_new +05-26 11:46:02.742 3222 3222 D GeckoThread: State changed to LAUNCHED +05-26 11:46:02.743 3222 3251 I GeckoThread: preparing to run Gecko +05-26 11:46:02.755 3143 3173 I libglean_ffi: glean_core::ping: Collecting baseline +05-26 11:46:02.764 3143 3173 D libglean_ffi: glean_core::ping: Storing ping '8ce65411-ef87-4223-8242-6b48e5d710d4' at '/data/user/0/org.mozilla.fennec_aurora/glean_data/pending_pings/8ce65411-ef87-4223-8242-6b48e5d710d4' +05-26 11:46:02.765 3143 3173 I libglean_ffi: glean_core: The ping 'baseline' was submitted and will be sent as soon as possible +05-26 11:46:02.782 3143 3143 D GeckoNetworkManager: Incoming event receivedUpdate for state OnNoListeners -> OnNoListeners +05-26 11:46:02.785 3143 3143 D GeckoNetworkManager: New network state: UP, WIFI, WIFI +05-26 11:46:02.787 3143 3211 W FirefoxAccountStateMachine: Got invalid event Event$Init for state NotAuthenticated. +05-26 11:46:02.820 1876 8003 D ConnectivityService: requestNetwork for uid/pid:10092/3143 NetworkRequest [ TRACK_DEFAULT id=238, [ Capabilities: INTERNET&NOT_RESTRICTED&TRUSTED Unwanted: Uid: 10092] ] +05-26 11:46:02.823 1876 1975 D WIFI : got request NetworkRequest [ TRACK_DEFAULT id=238, [ Capabilities: INTERNET&NOT_RESTRICTED&TRUSTED Unwanted: Uid: 10092] ] with score 60 +05-26 11:46:02.823 1876 1975 D WIFI_UT : got request NetworkRequest [ TRACK_DEFAULT id=238, [ Capabilities: INTERNET&NOT_RESTRICTED&TRUSTED Unwanted: Uid: 10092] ] with score 60 +05-26 11:46:02.824 2131 2131 D PhoneSwitcherNetworkRequstListener: got request NetworkRequest [ TRACK_DEFAULT id=238, [ Capabilities: INTERNET&NOT_RESTRICTED&TRUSTED Unwanted: Uid: 10092] ] with score 60 +05-26 11:46:02.853 3143 3155 I a.fennec_auror: Background concurrent copying GC freed 8545(1150KB) AllocSpace objects, 24(1120KB) LOS objects, 49% free, 3MB/7MB, paused 2.483ms total 123.447ms +05-26 11:46:02.862 1623 5774 D gralloc_ranchu: gralloc_alloc: Creating ashmem region of size 9334784 +05-26 11:46:02.872 1733 1967 D : HostConnection::get() New Host Connection established 0xe9a2f580, tid 1967 +05-26 11:46:02.873 1623 5774 D gralloc_ranchu: gralloc_alloc: Creating ashmem region of size 9334784 +05-26 11:46:02.880 1623 5774 D gralloc_ranchu: gralloc_alloc: Creating ashmem region of size 9334784 +05-26 11:46:02.897 3143 3241 D : HostConnection::get() New Host Connection established 0xd1ca43c0, tid 3241 +05-26 11:46:02.911 3143 3241 I ConfigStore: android::hardware::configstore::V1_0::ISurfaceFlingerConfigs::hasWideColorDisplay retrieved: 0 +05-26 11:46:02.911 3143 3241 I ConfigStore: android::hardware::configstore::V1_0::ISurfaceFlingerConfigs::hasHDRDisplay retrieved: 0 +05-26 11:46:02.911 3143 3241 I OpenGLRenderer: Initialized EGL, version 1.4 +05-26 11:46:02.911 3143 3241 D OpenGLRenderer: Swap behavior 1 +05-26 11:46:02.911 3143 3241 W OpenGLRenderer: Failed to choose config with EGL_SWAP_BEHAVIOR_PRESERVED, retrying without... +05-26 11:46:02.911 3143 3241 D OpenGLRenderer: Swap behavior 0 +05-26 11:46:02.912 3143 3241 D EGL_emulation: eglCreateContext: 0xd0089240: maj 3 min 0 rcv 3 +05-26 11:46:02.912 3143 3143 D MigrationPushRenewer: Migration state: NONE +05-26 11:46:02.913 3143 3143 D MigrationTelemetryListener: Migration state: NONE +05-26 11:46:02.914 3143 3241 D EGL_emulation: eglMakeCurrent: 0xd0089240: ver 3 0 (tinfo 0xd00f6050) +05-26 11:46:02.919 1733 1967 E SurfaceFlinger: ro.sf.lcd_density must be defined as a build property +05-26 11:46:02.999 3143 3241 D EGL_emulation: eglMakeCurrent: 0xd0089240: ver 3 0 (tinfo 0xd00f6050) +05-26 11:46:03.029 3143 3260 D glean/PingUploadWorker: Processing persisted pings at /data/user/0/org.mozilla.fennec_aurora/glean_data/pending_pings +05-26 11:46:03.030 3143 3260 D glean/PingUploadWorker: Processing ping: 8ce65411-ef87-4223-8242-6b48e5d710d4 +05-26 11:46:03.036 1876 1899 I ActivityManager: Displayed org.mozilla.fennec_aurora/org.mozilla.fenix.HomeActivity: +1s462ms +05-26 11:46:03.043 2000 2000 I GoogleInputMethod: onFinishInput() : Dummy InputConnection bound +05-26 11:46:03.045 3143 3260 D glean/ConceptFetchHttpUploader: Submitting ping to: https://incoming.telemetry.mozilla.org/submit/org-mozilla-fennec-aurora/baseline/1/8ce65411-ef87-4223-8242-6b48e5d710d4 +05-26 11:46:03.047 2000 2000 I GoogleInputMethod: onStartInput() : Dummy InputConnection bound +05-26 11:46:03.051 4313 4313 E adbd : failed to connect to socket 'tcp:2829': Connection refused +05-26 11:46:03.052 3143 3143 E ActivityThread: Failed to find provider info for org.mozilla.fennec_aurora.fxa.auth +05-26 11:46:03.158 4313 4313 E adbd : failed to connect to socket 'tcp:2829': Connection refused +05-26 11:46:03.218 1876 1940 D gralloc_ranchu: gralloc_unregister_buffer: exiting HostConnection (is buffer-handling thread) +05-26 11:46:03.219 1876 1940 D : HostConnection::get() New Host Connection established 0xc8655580, tid 1940 +05-26 11:46:03.219 1876 1940 D gralloc_ranchu: gralloc_unregister_buffer: exiting HostConnection (is buffer-handling thread) +05-26 11:46:03.220 1733 2205 D : HostConnection::get() New Host Connection established 0xede987c0, tid 2205 +05-26 11:46:03.220 1733 2205 D gralloc_ranchu: gralloc_unregister_buffer: exiting HostConnection (is buffer-handling thread) +05-26 11:46:03.220 1733 2205 D : HostConnection::get() New Host Connection established 0xede987c0, tid 2205 +05-26 11:46:03.222 1733 2205 D gralloc_ranchu: gralloc_unregister_buffer: exiting HostConnection (is buffer-handling thread) +05-26 11:46:03.225 1876 1940 D : HostConnection::get() New Host Connection established 0xc8655580, tid 1940 +05-26 11:46:03.225 1876 1940 D gralloc_ranchu: gralloc_unregister_buffer: exiting HostConnection (is buffer-handling thread) +05-26 11:46:03.226 1904 1911 D gralloc_ranchu: gralloc_unregister_buffer: exiting HostConnection (is buffer-handling thread) +05-26 11:46:03.227 1904 1911 D : HostConnection::get() New Host Connection established 0xe6d43140, tid 1911 +05-26 11:46:03.228 1904 1911 D gralloc_ranchu: gralloc_unregister_buffer: exiting HostConnection (is buffer-handling thread) +05-26 11:46:03.228 1876 1940 D : HostConnection::get() New Host Connection established 0xc8655580, tid 1940 +05-26 11:46:03.230 1876 1940 D gralloc_ranchu: gralloc_unregister_buffer: exiting HostConnection (is buffer-handling thread) +05-26 11:46:03.236 1904 1911 D : HostConnection::get() New Host Connection established 0xe6d43140, tid 1911 +05-26 11:46:03.262 4313 4313 E adbd : failed to connect to socket 'tcp:2829': Connection refused +05-26 11:46:03.372 4313 4313 E adbd : failed to connect to socket 'tcp:2829': Connection refused +05-26 11:46:03.387 3143 3143 D GeckoNetworkManager: Incoming event enableNotifications for state OnNoListeners -> OnWithListeners +05-26 11:46:03.391 3143 3143 D GeckoNetworkManager: New network state: UP, WIFI, WIFI +05-26 11:46:03.392 1876 3809 W ActivityManager: Receiver with filter android.content.IntentFilter@3574dd6 already registered for pid 3143, callerPackage is org.mozilla.fennec_aurora +05-26 11:46:03.403 3143 3143 D GeckoNetworkManager: Incoming event receivedUpdate for state OnWithListeners -> OnWithListeners +05-26 11:46:03.414 3143 3143 D GeckoNetworkManager: New network state: UP, WIFI, WIFI +05-26 11:46:03.489 4313 4313 E adbd : failed to connect to socket 'tcp:2829': Connection refused +05-26 11:46:03.502 3143 3143 I [INFO][Leanplum]: [com.leanplum.LeanplumCloudMessagingProvider::onRegistrationIdReceived::3]: Device registered for push notifications with registration token, dYV3t03voH0:APA91bHDV2GKf7W7v6eMdfzj7Yie1YfP1FaV5KX7ltgDKK4ju7E0B8qjmeNhUlTdiSHvgmTQZ18T0vUsERF1cl60KsD32HbsZMWYVKehmKpWFPZiGFd0OUPM47XynN0qn4bnZYyqCS1X +05-26 11:46:03.551 1876 2204 I GnssLocationProvider: WakeLock acquired by sendMessage(REPORT_SV_STATUS, 0, com.android.server.location.GnssLocationProvider$SvStatusInfo@cf252f3) +05-26 11:46:03.552 1876 1890 I GnssLocationProvider: WakeLock released by handleMessage(REPORT_SV_STATUS, 0, com.android.server.location.GnssLocationProvider$SvStatusInfo@cf252f3) +05-26 11:46:03.599 4313 4313 E adbd : failed to connect to socket 'tcp:2829': Connection refused +05-26 11:46:03.705 3143 3276 I [INFO][Leanplum]: [com.leanplum.LeanplumCloudMessagingProvider::onRegistrationIdReceived::3]: Device registered for push notifications with registration token, dYV3t03voH0:APA91bHDV2GKf7W7v6eMdfzj7Yie1YfP1FaV5KX7ltgDKK4ju7E0B8qjmeNhUlTdiSHvgmTQZ18T0vUsERF1cl60KsD32HbsZMWYVKehmKpWFPZiGFd0OUPM47XynN0qn4bnZYyqCS1X +05-26 11:46:03.723 4313 4313 E adbd : failed to connect to socket 'tcp:2829': Connection refused +05-26 11:46:03.728 3143 3277 I AutoPushFeature: Received a new registration token from push service. +05-26 11:46:03.753 1733 1733 W SurfaceFlinger: couldn't log to binary event log: overflow. +05-26 11:46:03.756 3143 3277 D RustNativeSupport: findMegazordLibraryName(push, 0.58.1 +05-26 11:46:03.756 3143 3277 D RustNativeSupport: lib in use: none +05-26 11:46:03.757 3143 3277 D RustNativeSupport: lib configured: megazord +05-26 11:46:03.757 3143 3277 D RustNativeSupport: lib version configured: 0.58.1 +05-26 11:46:03.757 3143 3277 D RustNativeSupport: settled on megazord +05-26 11:46:03.829 4313 4313 E adbd : failed to connect to socket 'tcp:2829': Connection refused +05-26 11:46:03.873 2534 2005 I PBSessionCacheImpl: Deleted sessionId[290782986460] from persistence. +05-26 11:46:03.882 2534 2534 W SearchService: Abort, client detached. +05-26 11:46:03.905 2534 2034 I WorkController: WorkProxy is not enqueued because WorkController is disposed: WorkProxy{Name=context::j, WorkerId=context, id=bcd7568} +05-26 11:46:03.905 2534 2034 I WorkController: WorkProxy is not enqueued because WorkController is disposed: WorkProxy{Name=context::m, WorkerId=context, id=6b0dd81} +05-26 11:46:03.906 2534 2034 I WorkController: WorkProxy is not enqueued because WorkController is disposed: WorkProxy{Name=context::n, WorkerId=context, id=f91ce26} +05-26 11:46:03.908 2534 2034 I WorkController: WorkProxy is not enqueued because WorkController is disposed: WorkProxy{Name=context::p, WorkerId=context, id=5488a67} +05-26 11:46:03.908 1832 1832 E netmgr : Failed to open QEMU pipe 'qemud:network': Invalid argument +05-26 11:46:03.908 1832 1832 E netmgr : WifiForwarder unable to open QEMU pipe: Invalid argument +05-26 11:46:03.928 2012 2265 D EGL_emulation: eglMakeCurrent: 0xe8b05420: ver 3 0 (tinfo 0xe8b03980) +05-26 11:46:03.935 4313 4313 E adbd : failed to connect to socket 'tcp:2829': Connection refused +05-26 11:46:03.976 3143 3179 D GeckoThread: State changed to PROFILE_READY +05-26 11:46:04.004 3143 3179 D GeckoThread: State changed to RUNNING +05-26 11:46:04.010 3143 3179 I Gecko : -*- nsDNSServiceDiscovery.js : nsDNSServiceDiscovery +05-26 11:46:04.028 3143 3179 I Gecko : 1590507964028 Marionette TRACE Marionette enabled +05-26 11:46:04.040 4313 4313 E adbd : failed to connect to socket 'tcp:2829': Connection refused +05-26 11:46:04.142 4313 4313 E adbd : failed to connect to socket 'tcp:2829': Connection refused +05-26 11:46:04.193 3143 3143 I DefaultSupportedAddonsChecker: Register check for new supported add-ons +05-26 11:46:04.206 3143 3179 I Gecko : 1590507964206 Marionette TRACE Received observer notification marionette-startup-requested +05-26 11:46:04.207 3143 3179 I Gecko : 1590507964207 Marionette TRACE Waiting until startup recorder finished recording startup scripts... +05-26 11:46:04.239 3143 3187 I SupportedAddonsWorker: Trying to check for new supported add-ons +05-26 11:46:04.248 4313 4313 E adbd : failed to connect to socket 'tcp:2829': Connection refused +05-26 11:46:04.349 4313 4313 E adbd : failed to connect to socket 'tcp:2829': Connection refused +05-26 11:46:04.421 3143 3143 D App : Installed browser-icons extension +05-26 11:46:04.451 4313 4313 E adbd : failed to connect to socket 'tcp:2829': Connection refused +05-26 11:46:04.459 3143 3179 D : HostConnection::get() New Host Connection established 0xd1ca4f80, tid 3179 +05-26 11:46:04.461 3143 3179 E EGL_emulation: tid 3179: eglBindAPI(1259): error 0x300c (EGL_BAD_PARAMETER) +05-26 11:46:04.463 3143 3179 D EGL_emulation: eglCreateContext: 0xe5e99640: maj 3 min 0 rcv 3 +05-26 11:46:04.465 3143 3179 D EGL_emulation: eglMakeCurrent: 0xe5e99640: ver 3 0 (tinfo 0xe71136e0) +05-26 11:46:04.552 1876 2204 I GnssLocationProvider: WakeLock acquired by sendMessage(REPORT_SV_STATUS, 0, com.android.server.location.GnssLocationProvider$SvStatusInfo@2bcd886) +05-26 11:46:04.554 1876 1890 I GnssLocationProvider: WakeLock released by handleMessage(REPORT_SV_STATUS, 0, com.android.server.location.GnssLocationProvider$SvStatusInfo@2bcd886) +05-26 11:46:04.557 4313 4313 E adbd : failed to connect to socket 'tcp:2829': Connection refused +05-26 11:46:04.662 3143 3260 D glean/ConceptFetchHttpUploader: Ping successfully sent (200) +05-26 11:46:04.662 3143 3260 D glean/PingUploadWorker: 8ce65411-ef87-4223-8242-6b48e5d710d4 was deleted: true +05-26 11:46:04.662 4313 4313 E adbd : failed to connect to socket 'tcp:2829': Connection refused +05-26 11:46:04.663 3143 3177 I WM-WorkerWrapper: Worker result SUCCESS for Work [ id=30b8d5b3-35f6-406c-87ae-45da79372bef, tags={ mozilla.telemetry.glean.scheduler.PingUploadWorker, mozac_service_glean_ping_upload_worker } ] +05-26 11:46:04.669 1876 1978 D ConnectivityService: releasing NetworkRequest [ TRACK_DEFAULT id=238, [ Capabilities: INTERNET&NOT_RESTRICTED&TRUSTED Unwanted: Uid: 10092] ] (release request) +05-26 11:46:04.712 1876 1884 I system_server: Background concurrent copying GC freed 70960(3MB) AllocSpace objects, 55(2MB) LOS objects, 19% free, 25MB/31MB, paused 2.462ms total 125.489ms +05-26 11:46:04.768 4313 4313 E adbd : failed to connect to socket 'tcp:2829': Connection refused +05-26 11:46:04.819 3143 3143 D mozac-webcompat: Installed WebCompat webextension: webcompat@mozilla.com +05-26 11:46:04.865 3143 3179 I Gecko : 1590507964865 Marionette TRACE All scripts recorded. +05-26 11:46:04.865 3143 3179 I Gecko : 1590507964865 Marionette DEBUG Setting recommended pref apz.content_response_timeout to 60000 +05-26 11:46:04.866 3143 3179 I Gecko : 1590507964866 Marionette DEBUG Setting recommended pref browser.contentblocking.introCount to 99 +05-26 11:46:04.866 3143 3179 I Gecko : 1590507964866 Marionette DEBUG Setting recommended pref browser.download.panel.shown to true +05-26 11:46:04.866 3143 3179 I Gecko : 1590507964866 Marionette DEBUG Setting recommended pref browser.newtabpage.enabled to false +05-26 11:46:04.866 3143 3179 I Gecko : 1590507964866 Marionette DEBUG Setting recommended pref browser.safebrowsing.malware.enabled to false +05-26 11:46:04.870 3143 3179 I Gecko : 1590507964870 Marionette DEBUG Setting recommended pref browser.safebrowsing.phishing.enabled to false +05-26 11:46:04.872 3143 3179 I Gecko : 1590507964872 Marionette DEBUG Setting recommended pref browser.search.update to false +05-26 11:46:04.872 3143 3179 I Gecko : 1590507964872 Marionette DEBUG Setting recommended pref browser.tabs.disableBackgroundZombification to false +05-26 11:46:04.872 3143 3179 I Gecko : 1590507964872 Marionette DEBUG Setting recommended pref browser.tabs.remote.separatePrivilegedContentProcess to false +05-26 11:46:04.873 3143 3179 I Gecko : 1590507964873 Marionette DEBUG Setting recommended pref browser.tabs.unloadOnLowMemory to false +05-26 11:46:04.873 3143 3179 I Gecko : 1590507964873 Marionette DEBUG Setting recommended pref browser.tabs.warnOnCloseOtherTabs to false +05-26 11:46:04.873 3143 3179 I Gecko : 1590507964873 Marionette DEBUG Setting recommended pref browser.tabs.warnOnOpen to false +05-26 11:46:04.873 3143 3179 I Gecko : 1590507964873 Marionette DEBUG Setting recommended pref browser.usedOnWindows10.introURL to +05-26 11:46:04.874 3143 3179 I Gecko : 1590507964873 Marionette DEBUG Setting recommended pref browser.urlbar.suggest.searches to false +05-26 11:46:04.874 3143 3179 I Gecko : 1590507964874 Marionette DEBUG Setting recommended pref dom.disable_beforeunload to true +05-26 11:46:04.874 3143 3179 I Gecko : 1590507964874 Marionette DEBUG Setting recommended pref dom.file.createInChild to true +05-26 11:46:04.874 3143 3179 I Gecko : 1590507964874 Marionette DEBUG Setting recommended pref extensions.getAddons.cache.enabled to false +05-26 11:46:04.874 4313 4313 E adbd : failed to connect to socket 'tcp:2829': Connection refused +05-26 11:46:04.875 3143 3179 I Gecko : 1590507964875 Marionette DEBUG Setting recommended pref network.http.prompt-temp-redirect to false +05-26 11:46:04.875 3143 3179 I Gecko : 1590507964875 Marionette DEBUG Setting recommended pref security.notification_enable_delay to 0 +05-26 11:46:04.875 3143 3179 I Gecko : 1590507964875 Marionette DEBUG Setting recommended pref signon.autofillForms to false +05-26 11:46:04.876 3143 3179 I Gecko : 1590507964876 Marionette DEBUG Setting recommended pref signon.rememberSignons to false +05-26 11:46:04.876 3143 3179 I Gecko : 1590507964876 Marionette DEBUG Setting recommended pref toolkit.cosmeticAnimations.enabled to false +05-26 11:46:04.943 3143 3179 I Gecko : 1590507964943 Marionette INFO Listening on port 2829 +05-26 11:46:04.944 3143 3179 I Gecko : 1590507964944 Marionette DEBUG Marionette is listening +05-26 11:46:04.988 3143 3179 I Gecko : 1590507964988 Marionette DEBUG Accepted connection 0 from 127.0.0.1:44851 +05-26 11:46:05.011 3143 3179 I Gecko : 1590507965011 Marionette DEBUG 0 -> [0,1,"WebDriver:NewSession",{"browserName":"firefox","pageLoadStrategy":"none"}] +05-26 11:46:05.558 1876 2204 I GnssLocationProvider: WakeLock acquired by sendMessage(REPORT_SV_STATUS, 0, com.android.server.location.GnssLocationProvider$SvStatusInfo@2053547) +05-26 11:46:05.558 1876 1890 I GnssLocationProvider: WakeLock released by handleMessage(REPORT_SV_STATUS, 0, com.android.server.location.GnssLocationProvider$SvStatusInfo@2053547) +05-26 11:46:05.562 2482 11975 W ctxmgr : [AclManager]No 2 for (accnt=account#-517948760#, com.google.android.gms(10008):IndoorOutdoorProducer, vrsn=13280000, 0, 3pPkg = null , 3pMdlId = null , pid = 2482). Was: 3 for 57, account#-517948760# +05-26 11:46:05.659 3143 3177 I WM-WorkerWrapper: Worker result SUCCESS for Work [ id=7de11057-1656-49b2-aec1-1df4fd79ebc2, tags={ mozilla.components.feature.addons.migration.DefaultSupportedAddonsChecker.periodicWork, mozilla.components.feature.addons.migration.SupportedAddonsWorker } ] +05-26 11:46:06.561 1876 2204 I GnssLocationProvider: WakeLock acquired by sendMessage(REPORT_SV_STATUS, 0, com.android.server.location.GnssLocationProvider$SvStatusInfo@ef9a69d) +05-26 11:46:06.563 1876 1890 I GnssLocationProvider: WakeLock released by handleMessage(REPORT_SV_STATUS, 0, com.android.server.location.GnssLocationProvider$SvStatusInfo@ef9a69d) +05-26 11:46:07.562 1876 2204 I GnssLocationProvider: WakeLock acquired by sendMessage(REPORT_SV_STATUS, 0, com.android.server.location.GnssLocationProvider$SvStatusInfo@b7df712) +05-26 11:46:07.565 1876 1890 I GnssLocationProvider: WakeLock released by handleMessage(REPORT_SV_STATUS, 0, com.android.server.location.GnssLocationProvider$SvStatusInfo@b7df712) +05-26 11:46:07.793 1876 1890 E memtrack: Couldn't load memtrack module +05-26 11:46:07.793 1876 1890 W android.os.Debug: failed to get memory consumption info: -1 +05-26 11:46:07.900 3143 3143 I glean/Glean: Registering pings for org.mozilla.fenix.GleanMetrics.Pings +05-26 11:46:07.928 3143 3188 I FenixApplication: Running post-visual completeness tasks... +05-26 11:46:07.928 3143 3188 I FenixApplication: Storage initialization... +05-26 11:46:07.928 3143 3143 I FenixApplication: Kicking-off account manager... +05-26 11:46:07.929 3143 3143 I FenixApplication: 'Kicking-off account manager' took 0 ms +05-26 11:46:07.930 3143 3188 I PlacesHistoryStorage: Warming up places storage... +05-26 11:46:07.931 3143 3188 D RustNativeSupport: findMegazordLibraryName(places, 0.58.1 +05-26 11:46:07.931 3143 3188 D RustNativeSupport: lib in use: none +05-26 11:46:07.931 3143 3188 D RustNativeSupport: lib configured: megazord +05-26 11:46:07.931 3143 3188 D RustNativeSupport: lib version configured: 0.58.1 +05-26 11:46:07.931 3143 3188 D RustNativeSupport: settled on megazord +05-26 11:46:07.932 3143 3188 D places_ffi: places_api_new +05-26 11:46:07.955 3143 3188 D places::db::schema: Creating schema +05-26 11:46:07.967 3143 3187 I App : ActivationPing - generating ping with the hashed id +05-26 11:46:07.971 3143 3187 I App : ActivationPing - generating ping (has `identifier`: true) +05-26 11:46:07.983 3143 3188 D sql_support::conn_ext: Transaction commited after 27.736ms +05-26 11:46:07.983 3143 3188 D places_ffi: places_connection_new +05-26 11:46:07.986 3143 3188 D places_ffi: places_connection_new +05-26 11:46:07.987 3143 3188 I PlacesHistoryStorage: 'Warming up places storage' took 57 ms +05-26 11:46:07.987 3143 3188 I PlacesBookmarksStorage: Warming up places storage... +05-26 11:46:07.988 3143 3188 D places_ffi: places_connection_new +05-26 11:46:07.988 3143 3173 I libglean_ffi: glean_core::ping: Collecting activation +05-26 11:46:07.989 3143 3188 I PlacesBookmarksStorage: 'Warming up places storage' took 1 ms +05-26 11:46:08.003 3143 3173 D libglean_ffi: glean_core::ping: Storing ping 'dbb2e9d4-aeca-440b-be38-c6d3f7a29037' at '/data/user/0/org.mozilla.fennec_aurora/glean_data/pending_pings/dbb2e9d4-aeca-440b-be38-c6d3f7a29037' +05-26 11:46:08.003 3143 3173 I libglean_ffi: glean_core: The ping 'activation' was submitted and will be sent as soon as possible +05-26 11:46:08.003 1739 1739 I keystore: 1 0 +05-26 11:46:08.011 3143 3188 I SyncableLoginsStorage: Warming up storage... +05-26 11:46:08.015 3143 3188 D RustNativeSupport: findMegazordLibraryName(logins, 0.58.1 +05-26 11:46:08.015 3143 3188 D RustNativeSupport: lib in use: none +05-26 11:46:08.015 3143 3188 D RustNativeSupport: lib configured: megazord +05-26 11:46:08.015 3143 3188 D RustNativeSupport: lib version configured: 0.58.1 +05-26 11:46:08.015 3143 3188 D RustNativeSupport: settled on megazord +05-26 11:46:08.016 3143 3188 D logins_ffi: sync15_passwords_state_new +05-26 11:46:08.027 3143 3188 D logins::schema: Creating schema +05-26 11:46:08.028 1876 2445 D ConnectivityService: requestNetwork for uid/pid:10092/3143 NetworkRequest [ TRACK_DEFAULT id=239, [ Capabilities: INTERNET&NOT_RESTRICTED&TRUSTED Unwanted: Uid: 10092] ] +05-26 11:46:08.028 1876 1975 D WIFI : got request NetworkRequest [ TRACK_DEFAULT id=239, [ Capabilities: INTERNET&NOT_RESTRICTED&TRUSTED Unwanted: Uid: 10092] ] with score 60 +05-26 11:46:08.029 1876 1975 D WIFI_UT : got request NetworkRequest [ TRACK_DEFAULT id=239, [ Capabilities: INTERNET&NOT_RESTRICTED&TRUSTED Unwanted: Uid: 10092] ] with score 60 +05-26 11:46:08.029 2131 2131 D PhoneSwitcherNetworkRequstListener: got request NetworkRequest [ TRACK_DEFAULT id=239, [ Capabilities: INTERNET&NOT_RESTRICTED&TRUSTED Unwanted: Uid: 10092] ] with score 60 +05-26 11:46:08.041 3143 3325 D glean/PingUploadWorker: Processing persisted pings at /data/user/0/org.mozilla.fennec_aurora/glean_data/pending_pings +05-26 11:46:08.042 3143 3325 D glean/PingUploadWorker: Processing ping: dbb2e9d4-aeca-440b-be38-c6d3f7a29037 +05-26 11:46:08.044 3143 3325 D glean/ConceptFetchHttpUploader: Submitting ping to: https://incoming.telemetry.mozilla.org/submit/org-mozilla-fennec-aurora/activation/1/dbb2e9d4-aeca-440b-be38-c6d3f7a29037 +05-26 11:46:08.133 3143 3188 I SyncableLoginsStorage: 'Warming up storage' took 121 ms +05-26 11:46:08.133 3143 3188 I FenixApplication: 'Storage initialization' took 205 ms +05-26 11:46:08.567 1876 2204 I GnssLocationProvider: WakeLock acquired by sendMessage(REPORT_SV_STATUS, 0, com.android.server.location.GnssLocationProvider$SvStatusInfo@6d5b4c5) +05-26 11:46:08.569 1876 1890 I GnssLocationProvider: WakeLock released by handleMessage(REPORT_SV_STATUS, 0, com.android.server.location.GnssLocationProvider$SvStatusInfo@6d5b4c5) +05-26 11:46:08.589 3143 3325 D glean/ConceptFetchHttpUploader: Ping successfully sent (200) +05-26 11:46:08.589 3143 3325 D glean/PingUploadWorker: dbb2e9d4-aeca-440b-be38-c6d3f7a29037 was deleted: true +05-26 11:46:08.592 3143 3207 I WM-WorkerWrapper: Worker result SUCCESS for Work [ id=6620b187-5b00-46cd-a050-e01293de4e5f, tags={ mozilla.telemetry.glean.scheduler.PingUploadWorker, mozac_service_glean_ping_upload_worker } ] +05-26 11:46:08.595 1876 1978 D ConnectivityService: releasing NetworkRequest [ TRACK_DEFAULT id=239, [ Capabilities: INTERNET&NOT_RESTRICTED&TRUSTED Unwanted: Uid: 10092] ] (release request) +05-26 11:46:09.571 1876 2204 I GnssLocationProvider: WakeLock acquired by sendMessage(REPORT_SV_STATUS, 0, com.android.server.location.GnssLocationProvider$SvStatusInfo@b702e1a) +05-26 11:46:09.573 1876 1890 I GnssLocationProvider: WakeLock released by handleMessage(REPORT_SV_STATUS, 0, com.android.server.location.GnssLocationProvider$SvStatusInfo@b702e1a) +05-26 11:46:10.574 1876 2204 I GnssLocationProvider: WakeLock acquired by sendMessage(REPORT_SV_STATUS, 0, com.android.server.location.GnssLocationProvider$SvStatusInfo@eebbd4b) +05-26 11:46:10.576 1876 1890 I GnssLocationProvider: WakeLock released by handleMessage(REPORT_SV_STATUS, 0, com.android.server.location.GnssLocationProvider$SvStatusInfo@eebbd4b) +05-26 11:46:10.581 2482 11975 W ctxmgr : [AclManager]No 2 for (accnt=account#-517948760#, com.google.android.gms(10008):IndoorOutdoorProducer, vrsn=13280000, 0, 3pPkg = null , 3pMdlId = null , pid = 2482). Was: 3 for 57, account#-517948760# +05-26 11:46:10.877 3143 3179 I Gecko : 1590507970877 Marionette DEBUG Closed connection 0 diff --git a/python/mozperftest/mozperftest/tests/data/hook.py b/python/mozperftest/mozperftest/tests/data/hook.py new file mode 100644 index 0000000000..a49406e150 --- /dev/null +++ b/python/mozperftest/mozperftest/tests/data/hook.py @@ -0,0 +1,7 @@ +def doit(env): + return "OK" + + +def on_exception(env, layer, exc): + # swallow the error and abort the run + return False diff --git a/python/mozperftest/mozperftest/tests/data/hook_raises.py b/python/mozperftest/mozperftest/tests/data/hook_raises.py new file mode 100644 index 0000000000..aaba445e81 --- /dev/null +++ b/python/mozperftest/mozperftest/tests/data/hook_raises.py @@ -0,0 +1,3 @@ +def on_exception(env, layer, exc): + # re-raise + raise exc diff --git a/python/mozperftest/mozperftest/tests/data/hook_resume.py b/python/mozperftest/mozperftest/tests/data/hook_resume.py new file mode 100644 index 0000000000..5460b2e770 --- /dev/null +++ b/python/mozperftest/mozperftest/tests/data/hook_resume.py @@ -0,0 +1,3 @@ +def on_exception(env, layer, exc): + # swallow the error and resume + return True diff --git a/python/mozperftest/mozperftest/tests/data/hooks_iteration.py b/python/mozperftest/mozperftest/tests/data/hooks_iteration.py new file mode 100644 index 0000000000..f7a30ad817 --- /dev/null +++ b/python/mozperftest/mozperftest/tests/data/hooks_iteration.py @@ -0,0 +1,2 @@ +def before_iterations(kwargs): + kwargs["test_iterations"] = 5 diff --git a/python/mozperftest/mozperftest/tests/data/hooks_state.py b/python/mozperftest/mozperftest/tests/data/hooks_state.py new file mode 100644 index 0000000000..4847e3b650 --- /dev/null +++ b/python/mozperftest/mozperftest/tests/data/hooks_state.py @@ -0,0 +1,11 @@ +_GLOBAL = False + + +def before_iterations(kw): + global _GLOBAL + _GLOBAL = True + + +def before_runs(env, **kw): + if not _GLOBAL: + raise Exception("oops") diff --git a/python/mozperftest/mozperftest/tests/data/logcat b/python/mozperftest/mozperftest/tests/data/logcat new file mode 100644 index 0000000000..a7a5a0d56f --- /dev/null +++ b/python/mozperftest/mozperftest/tests/data/logcat @@ -0,0 +1,5511 @@ +--------- beginning of main +06-02 16:37:53.390 E/memtrack( 1869): Couldn't load memtrack module +06-02 16:37:53.390 W/android.os.Debug( 1869): failed to get memory consumption info: -1 +06-02 16:37:54.156 W/ctxmgr ( 2473): [AclManager]No 2 for (accnt=account#-517948760#, com.google.android.gms(10008):IndoorOutdoorProducer, vrsn=13280000, 0, 3pPkg = null , 3pMdlId = null , pid = 2473). Was: 3 for 57, account#-517948760# +06-02 16:37:54.725 I/log ( 8804): logcat cleared +06-02 16:37:59.165 W/ctxmgr ( 2473): [AclManager]No 2 for (accnt=account#-517948760#, com.google.android.gms(10008):IndoorOutdoorProducer, vrsn=13280000, 0, 3pPkg = null , 3pMdlId = null , pid = 2473). Was: 3 for 57, account#-517948760# +06-02 16:38:00.114 W/system_server( 1869): Long monitor contention with owner PackageInstaller (1929) at boolean com.android.server.pm.PackageInstallerSession$3.handleMessage(android.os.Message)(PackageInstallerSession.java:292) waiters=0 in android.content.pm.PackageInstaller$SessionInfo com.android.server.pm.PackageInstallerSession.generateInfo(boolean) for 1.379s +06-02 16:38:00.117 D/hwcomposer( 1897): hw_composer sent 6 syncs in 60s +--------- beginning of system +06-02 16:38:00.336 I/ActivityManager( 1869): Force stopping org.mozilla.fenix.debug appid=10099 user=-1: installPackageLI +06-02 16:38:00.336 I/ActivityManager( 1869): Killing 8565:org.mozilla.fenix.debug/u0a99 (adj 0): stop org.mozilla.fenix.debug +06-02 16:38:00.339 W/libprocessgroup( 1869): kill(-8565, 9) failed: No such process +06-02 16:38:00.341 W/ActivityManager( 1869): Force removing ActivityRecord{8c0a4c0 u0 org.mozilla.fenix.debug/.App t387}: app died, no saved state +06-02 16:38:00.343 I/ServiceChildProcess( 8615): Service has been unbound. Stopping. +06-02 16:38:00.378 D/gralloc_ranchu( 1897): gralloc_unregister_buffer: exiting HostConnection (is buffer-handling thread) +06-02 16:38:00.379 D/ ( 1897): HostConnection::get() New Host Connection established 0xed7c3080, tid 1897 +06-02 16:38:00.380 D/gralloc_ranchu( 1897): gralloc_unregister_buffer: exiting HostConnection (is buffer-handling thread) +06-02 16:38:00.380 D/ ( 1897): HostConnection::get() New Host Connection established 0xed7c3080, tid 1897 +06-02 16:38:00.380 D/gralloc_ranchu( 1897): gralloc_unregister_buffer: exiting HostConnection (is buffer-handling thread) +06-02 16:38:00.381 D/ ( 1897): HostConnection::get() New Host Connection established 0xed7c3080, tid 1897 +06-02 16:38:00.381 D/gralloc_ranchu( 1897): gralloc_unregister_buffer: exiting HostConnection (is buffer-handling thread) +06-02 16:38:00.381 W/libprocessgroup( 1869): kill(-8565, 9) failed: No such process +06-02 16:38:00.382 D/ ( 1897): HostConnection::get() New Host Connection established 0xed7c3080, tid 1897 +06-02 16:38:00.382 D/gralloc_ranchu( 1897): gralloc_unregister_buffer: exiting HostConnection (is buffer-handling thread) +06-02 16:38:00.382 D/ ( 1897): HostConnection::get() New Host Connection established 0xed7c3080, tid 1897 +06-02 16:38:00.382 D/gralloc_ranchu( 1897): gralloc_unregister_buffer: exiting HostConnection (is buffer-handling thread) +06-02 16:38:00.385 D/ ( 1897): HostConnection::get() New Host Connection established 0xed7c3080, tid 1897 +06-02 16:38:00.388 I/PackageManager( 1869): Update package org.mozilla.fenix.debug code path from /data/app/org.mozilla.fenix.debug-0JI_FY2TAEvhwr-Ly_nbEQ== to /data/app/org.mozilla.fenix.debug-l0coAwl06p55SDu8S60N3w==; Retain data and using new +06-02 16:38:00.388 I/PackageManager( 1869): Update package org.mozilla.fenix.debug resource path from /data/app/org.mozilla.fenix.debug-0JI_FY2TAEvhwr-Ly_nbEQ== to /data/app/org.mozilla.fenix.debug-l0coAwl06p55SDu8S60N3w==; Retain data and using new +06-02 16:38:00.388 I/ActivityManager( 1869): Killing 8615:org.mozilla.fenix.debug:tab0/u0a99 (adj 0): stop org.mozilla.fenix.debug +06-02 16:38:00.418 W/libprocessgroup( 1869): kill(-8565, 9) failed: No such process +06-02 16:38:00.422 W/InputDispatcher( 1869): channel 'ce4529b org.mozilla.fenix.debug/org.mozilla.fenix.debug.App (server)' ~ Consumer closed input channel or an error occurred. events=0x9 +06-02 16:38:00.422 E/InputDispatcher( 1869): channel 'ce4529b org.mozilla.fenix.debug/org.mozilla.fenix.debug.App (server)' ~ Channel is unrecoverably broken and will be disposed! +06-02 16:38:00.423 D/gralloc_ranchu( 1728): gralloc_unregister_buffer: exiting HostConnection (is buffer-handling thread) +06-02 16:38:00.424 D/ ( 1728): HostConnection::get() New Host Connection established 0xe50f1280, tid 2157 +06-02 16:38:00.425 D/gralloc_ranchu( 1728): gralloc_unregister_buffer: exiting HostConnection (is buffer-handling thread) +06-02 16:38:00.425 D/ ( 1728): HostConnection::get() New Host Connection established 0xe90c90c0, tid 2157 +06-02 16:38:00.425 I/Zygote ( 1729): Process 8565 exited due to signal (9) +06-02 16:38:00.425 D/gralloc_ranchu( 1728): gralloc_unregister_buffer: exiting HostConnection (is buffer-handling thread) +06-02 16:38:00.425 D/ ( 1728): HostConnection::get() New Host Connection established 0xe90c90c0, tid 2157 +06-02 16:38:00.426 D/gralloc_ranchu( 1728): gralloc_unregister_buffer: exiting HostConnection (is buffer-handling thread) +06-02 16:38:00.432 I/WindowManager( 1869): WIN DEATH: Window{ce4529b u0 org.mozilla.fenix.debug/org.mozilla.fenix.debug.App} +06-02 16:38:00.432 W/InputDispatcher( 1869): Attempted to unregister already unregistered input channel 'ce4529b org.mozilla.fenix.debug/org.mozilla.fenix.debug.App (server)' +06-02 16:38:00.433 W/ActivityManager( 1869): setHasOverlayUi called on unknown pid: 8565 +06-02 16:38:00.435 W/SurfaceFlinger( 1728): Attempting to destroy on removed layer: Task=387#0 +06-02 16:38:00.435 W/SurfaceFlinger( 1728): Attempting to destroy on removed layer: AppWindowToken{f7b293e token=Token{8b8d5f9 ActivityRecord{8c0a4c0 u0 org.mozilla.fenix.debug/.App t387}}}#0 +06-02 16:38:00.450 D/installd( 1733): Detected label change from u:object_r:app_data_file:s0 to u:object_r:app_data_file:s0:c99,c256,c512,c768 at /data/data/org.mozilla.fenix.debug/code_cache; running recursive restorecon +06-02 16:38:00.451 D/installd( 1733): Detected label change from u:object_r:app_data_file:s0 to u:object_r:app_data_file:s0:c99,c256,c512,c768 at /data/user_de/0/org.mozilla.fenix.debug/cache; running recursive restorecon +06-02 16:38:00.452 D/PackageManager( 1869): Instant App installer not found with android.intent.action.INSTALL_INSTANT_APP_PACKAGE +06-02 16:38:00.452 D/PackageManager( 1869): Clear ephemeral installer activity +06-02 16:38:00.459 D/gralloc_ranchu( 1619): gralloc_alloc: Creating ashmem region of size 9334784 +06-02 16:38:00.460 W/libprocessgroup( 1869): kill(-8565, 9) failed: No such process +06-02 16:38:00.460 I/libprocessgroup( 1869): Successfully killed process cgroup uid 10099 pid 8565 in 121ms +06-02 16:38:00.460 W/libprocessgroup( 1869): kill(-8615, 9) failed: No such process +06-02 16:38:00.460 I/Zygote ( 1729): Process 8615 exited due to signal (9) +06-02 16:38:00.471 D/ ( 1728): HostConnection::get() New Host Connection established 0xe90dda40, tid 1952 +06-02 16:38:00.471 D/gralloc_ranchu( 1619): gralloc_alloc: Creating ashmem region of size 9334784 +06-02 16:38:00.480 D/gralloc_ranchu( 1619): gralloc_alloc: Creating ashmem region of size 9334784 +06-02 16:38:00.500 W/libprocessgroup( 1869): kill(-8615, 9) failed: No such process +06-02 16:38:00.500 I/libprocessgroup( 1869): Successfully killed process cgroup uid 10099 pid 8615 in 40ms +06-02 16:38:00.507 D/SurfaceFlinger( 1728): duplicate layer name: changing com.google.android.apps.nexuslauncher/com.google.android.apps.nexuslauncher.NexusLauncherActivity to com.google.android.apps.nexuslauncher/com.google.android.apps.nexuslauncher.NexusLauncherActivity#1 +06-02 16:38:00.510 D/gralloc_ranchu( 1619): gralloc_alloc: Creating ashmem region of size 9334784 +06-02 16:38:00.523 D/gralloc_ranchu( 1619): gralloc_alloc: Creating ashmem region of size 9334784 +06-02 16:38:00.533 D/EGL_emulation( 2402): eglMakeCurrent: 0xe1911c80: ver 3 0 (tinfo 0xc8cbe260) +06-02 16:38:00.534 D/ ( 1728): HostConnection::get() New Host Connection established 0xe90c90c0, tid 2157 +06-02 16:38:00.535 D/gralloc_ranchu( 1619): gralloc_alloc: Creating ashmem region of size 9334784 +06-02 16:38:00.556 D/EGL_emulation( 2488): eglMakeCurrent: 0xe3385ae0: ver 3 0 (tinfo 0xe33838f0) +06-02 16:38:00.560 I/GoogleInputMethod( 1996): onFinishInput() : Dummy InputConnection bound +06-02 16:38:00.572 D/EGL_emulation( 2002): eglMakeCurrent: 0xe3385900: ver 3 0 (tinfo 0xe33839b0) +06-02 16:38:00.579 I/GoogleInputMethod( 1996): onStartInput() : Dummy InputConnection bound +06-02 16:38:00.593 D/EGL_emulation( 2002): eglMakeCurrent: 0xe3385900: ver 3 0 (tinfo 0xe33839b0) +06-02 16:38:00.624 I/chatty ( 2002): uid=10024(com.android.systemui) RenderThread identical 4 lines +06-02 16:38:00.630 D/EGL_emulation( 2002): eglMakeCurrent: 0xe3385900: ver 3 0 (tinfo 0xe33839b0) +06-02 16:38:00.634 I/system_server( 1869): Explicit concurrent copying GC freed 46216(2MB) AllocSpace objects, 14(664KB) LOS objects, 38% free, 9MB/15MB, paused 63us total 180.949ms +06-02 16:38:00.641 D/EGL_emulation( 2002): eglMakeCurrent: 0xe3385900: ver 3 0 (tinfo 0xe33839b0) +06-02 16:38:00.710 I/chatty ( 2002): uid=10024(com.android.systemui) RenderThread identical 8 lines +06-02 16:38:00.716 D/EGL_emulation( 2002): eglMakeCurrent: 0xe3385900: ver 3 0 (tinfo 0xe33839b0) +06-02 16:38:00.719 E/ ( 1733): Couldn't opendir /data/app/vmdl1830460407.tmp: No such file or directory +06-02 16:38:00.719 E/installd( 1733): Failed to delete /data/app/vmdl1830460407.tmp: No such file or directory +06-02 16:38:00.722 I/ActivityManager( 1869): Force stopping org.mozilla.fenix.debug appid=10099 user=0: pkg removed +06-02 16:38:00.729 W/BroadcastQueue( 1869): Background execution not allowed: receiving Intent { act=android.intent.action.PACKAGE_REMOVED dat=package:org.mozilla.fenix.debug flg=0x4000010 (has extras) } to com.android.musicfx/.Compatibility$Receiver +06-02 16:38:00.753 W/SessionLifecycleManager( 2402): Handover failed. Creating new session controller. +06-02 16:38:00.787 W/BroadcastQueue( 1869): Background execution not allowed: receiving Intent { act=android.intent.action.PACKAGE_REMOVED dat=package:org.mozilla.fenix.debug flg=0x4000010 (has extras) } to com.google.android.googlequicksearchbox/com.google.android.apps.gsa.googlequicksearchbox.GelStubAppWatcher +06-02 16:38:00.788 W/BroadcastQueue( 1869): Background execution not allowed: receiving Intent { act=android.intent.action.PACKAGE_ADDED dat=package:org.mozilla.fenix.debug flg=0x4000010 (has extras) } to com.android.musicfx/.Compatibility$Receiver +06-02 16:38:00.797 W/SurfaceFlinger( 1728): Attempting to set client state on removed layer: Surface(name=AppWindowToken{f0e79dc token=Token{f06ae4f ActivityRecord{533f0ae u0 com.google.android.apps.nexuslauncher/.NexusLauncherActivity t2}}})/@0xc6dc2b9 - animation-leash#0 +06-02 16:38:00.797 W/SurfaceFlinger( 1728): Attempting to destroy on removed layer: Surface(name=AppWindowToken{f0e79dc token=Token{f06ae4f ActivityRecord{533f0ae u0 com.google.android.apps.nexuslauncher/.NexusLauncherActivity t2}}})/@0xc6dc2b9 - animation-leash#0 +06-02 16:38:00.804 I/gle.android.gm( 2660): Waiting for a blocking GC ProfileSaver +06-02 16:38:00.812 W/BroadcastQueue( 1869): Background execution not allowed: receiving Intent { act=android.intent.action.PACKAGE_ADDED dat=package:org.mozilla.fenix.debug flg=0x4000010 (has extras) } to com.google.android.googlequicksearchbox/com.google.android.apps.gsa.googlequicksearchbox.GelStubAppWatcher +06-02 16:38:00.812 W/BroadcastQueue( 1869): Background execution not allowed: receiving Intent { act=android.intent.action.PACKAGE_REPLACED dat=package:org.mozilla.fenix.debug flg=0x4000010 (has extras) } to com.android.musicfx/.Compatibility$Receiver +06-02 16:38:00.812 W/BroadcastQueue( 1869): Background execution not allowed: receiving Intent { act=android.intent.action.PACKAGE_REPLACED dat=package:org.mozilla.fenix.debug flg=0x4000010 (has extras) } to com.google.android.apps.photos/.account.full.FetchAccountPropertiesAppUpgradeBroadcastReceiver +06-02 16:38:00.812 W/BroadcastQueue( 1869): Background execution not allowed: receiving Intent { act=android.intent.action.PACKAGE_REPLACED dat=package:org.mozilla.fenix.debug flg=0x4000010 (has extras) } to com.google.android.apps.photos/.account.full.SyncAccountsForLoginBroadcastReceiver +06-02 16:38:00.812 W/BroadcastQueue( 1869): Background execution not allowed: receiving Intent { act=android.intent.action.PACKAGE_REPLACED dat=package:org.mozilla.fenix.debug flg=0x4000010 (has extras) } to com.google.android.apps.photos/.experiments.phenotype.full.PhenotypeAppUpgradeBroadcastReceiver +06-02 16:38:00.812 W/BroadcastQueue( 1869): Background execution not allowed: receiving Intent { act=android.intent.action.PACKAGE_REPLACED dat=package:org.mozilla.fenix.debug flg=0x4000010 (has extras) } to com.google.android.apps.photos/.notificationchannels.AppUpdateBroadcastReceiver +06-02 16:38:00.834 W/BroadcastQueue( 1869): Background execution not allowed: receiving Intent { act=android.intent.action.PACKAGE_REPLACED dat=package:org.mozilla.fenix.debug flg=0x4000010 (has extras) } to com.google.android.googlequicksearchbox/com.google.android.apps.gsa.googlequicksearchbox.GelStubAppWatcher +06-02 16:38:00.841 I/s.nexuslaunche( 2488): Background concurrent copying GC freed 13104(735KB) AllocSpace objects, 9(504KB) LOS objects, 41% free, 8MB/14MB, paused 502us total 117.306ms +06-02 16:38:00.849 D/CarrierSvcBindHelper( 2121): No carrier app for: 0 +06-02 16:38:00.849 I/Auth ( 2660): [SupervisedAccountIntentOperation] onHandleIntent(): android.intent.action.PACKAGE_ADDED +06-02 16:38:00.850 I/Auth ( 2660): [SupervisedAccountIntentOperation] This operation is disabled +06-02 16:38:00.850 D/CarrierSvcBindHelper( 2121): No carrier app for: 0 +06-02 16:38:00.852 W/droid.apps.doc( 8852): Unexpected CPU variant for X86 using defaults: x86 +06-02 16:38:00.857 I/ActivityManager( 1869): Start proc 8852:com.google.android.apps.docs/u0a69 for content provider com.google.android.apps.docs/.storagebackend.StorageBackendContentProvider +06-02 16:38:00.871 E/system_server( 1869): No package ID 7f found for ID 0x7f0801a6. +06-02 16:38:00.871 E/system_server( 1869): No package ID 7f found for ID 0x7f13011d. +06-02 16:38:00.871 E/system_server( 1869): No package ID 7f found for ID 0x7f13011d. +06-02 16:38:00.871 E/system_server( 1869): No package ID 7f found for ID 0x7f0801a4. +06-02 16:38:00.871 E/system_server( 1869): No package ID 7f found for ID 0x7f13011c. +06-02 16:38:00.871 E/system_server( 1869): No package ID 7f found for ID 0x7f13011c. +06-02 16:38:00.871 I/ChromeSync( 2660): [Sync,SyncIntentOperation] Handling the intent: Intent { act=android.intent.action.PACKAGE_ADDED dat=package:org.mozilla.fenix.debug flg=0x4000010 cmp=com.google.android.gms/.chimera.GmsIntentOperationService (has extras) }. +06-02 16:38:00.871 D/ImsResolver( 2121): maybeAddedImsService, packageName: org.mozilla.fenix.debug +06-02 16:38:00.873 D/CarrierConfigLoader( 2121): mHandler: 9 phoneId: 0 +06-02 16:38:00.877 I/InputReader( 1869): Reconfiguring input devices. changes=0x00000010 +06-02 16:38:00.901 I/chatty ( 1869): uid=1000(system) InputReader identical 1 line +06-02 16:38:00.903 I/InputReader( 1869): Reconfiguring input devices. changes=0x00000010 +06-02 16:38:00.921 I/gle.android.gm( 2660): WaitForGcToComplete blocked ProfileSaver on HeapTrim for 116.746ms +06-02 16:38:00.927 W/PeopleContactsSync( 2660): CP2 sync disabled by gservices. +06-02 16:38:00.936 I/droid.apps.doc( 8852): The ClassLoaderContext is a special shared library. +06-02 16:38:00.941 I/droid.apps.doc( 8852): The ClassLoaderContext is a special shared library. +06-02 16:38:00.976 W/LocationOracle( 2402): No location history returned by ContextManager +06-02 16:38:00.984 W/Looper ( 1869): Slow delivery took 222ms main h=android.app.ActivityThread$H c=android.app.-$$Lambda$LoadedApk$ReceiverDispatcher$Args$_BumDX2UKsnxLVrE6UJsJZkotuA@fad9455 m=0 +06-02 16:38:00.986 I/Telecom ( 1869): DefaultDialerCache: Refreshing default dialer for user 0: now com.google.android.dialer: DDC.oR@ALo +06-02 16:38:00.999 D/AutofillUI( 1869): destroySaveUiUiThread(): already destroyed +06-02 16:38:00.999 D/AutofillManagerServiceImpl( 1869): Set component for user 0 as AutofillServiceInfo[ServiceInfo{f14f90d com.google.android.gms.autofill.service.AutofillService}, settings:com.google.android.gms.autofill.ui.AutofillSettingsActivity, hasCompatPckgs:false] +06-02 16:38:01.060 I/Icing ( 2660): IndexChimeraService.getServiceInterface callingPackage=com.google.android.gms componentName=AppsCorpus serviceId=32 +06-02 16:38:01.064 I/Icing ( 2660): IndexChimeraService.getServiceInterface callingPackage=com.google.android.gms componentName=AppsCorpus serviceId=36 +06-02 16:38:01.087 I/MicroDetectionWorker( 2402): #startMicroDetector [speakerMode: 0] +06-02 16:38:01.087 I/AudioController( 2402): Using mInputStreamFactoryBuilder +06-02 16:38:01.087 I/AudioController( 2402): Created new AudioSource +06-02 16:38:01.089 I/MicroDetectionWorker( 2402): onReady +06-02 16:38:01.114 D/EGL_emulation( 2002): eglMakeCurrent: 0xe3385900: ver 3 0 (tinfo 0xe33839b0) +06-02 16:38:01.137 W/ctxmgr ( 2473): [AclManager]No 3 for (accnt=account#-517948760#, com.google.android.gms(10008):UserVelocityProducer, vrsn=13280022, 0, 3pPkg = null , 3pMdlId = null , pid = 2473). Was: 3 for 1, account#-517948760# +06-02 16:38:01.150 I/Places ( 2473): Converted 0 out of 1 WiFi scans +06-02 16:38:01.176 I/GAv4 ( 8852): Google Analytics 10.2.98 is starting up. To enable debug logging on a device run: +06-02 16:38:01.176 I/GAv4 ( 8852): adb shell setprop log.tag.GAv4 DEBUG +06-02 16:38:01.176 I/GAv4 ( 8852): adb logcat -s GAv4 +06-02 16:38:01.187 I/PlaceInferenceEngine( 2473): No beacon scan available - ignoring candidates. +06-02 16:38:01.203 D/ ( 2002): HostConnection::get() New Host Connection established 0xe075c080, tid 2023 +06-02 16:38:01.216 D/gralloc_ranchu( 2002): gralloc_unregister_buffer: exiting HostConnection (is buffer-handling thread) +06-02 16:38:01.217 D/ ( 2002): HostConnection::get() New Host Connection established 0xe075c080, tid 2023 +06-02 16:38:01.217 D/gralloc_ranchu( 2002): gralloc_unregister_buffer: exiting HostConnection (is buffer-handling thread) +06-02 16:38:01.218 D/ ( 2002): HostConnection::get() New Host Connection established 0xe075cb40, tid 2023 +06-02 16:38:01.227 D/gralloc_ranchu( 2002): gralloc_unregister_buffer: exiting HostConnection (is buffer-handling thread) +06-02 16:38:01.228 D/ ( 2002): HostConnection::get() New Host Connection established 0xe075cb40, tid 2023 +06-02 16:38:01.228 W/GAv4 ( 8852): AnalyticsReceiver is not registered or is disabled. Register the receiver for reliable dispatching on non-Google Play devices. See http://goo.gl/8Rd3yj for instructions. +06-02 16:38:01.234 D/gralloc_ranchu( 2002): gralloc_unregister_buffer: exiting HostConnection (is buffer-handling thread) +06-02 16:38:01.234 D/ ( 2002): HostConnection::get() New Host Connection established 0xe075cb40, tid 2023 +06-02 16:38:01.234 D/gralloc_ranchu( 2002): gralloc_unregister_buffer: exiting HostConnection (is buffer-handling thread) +06-02 16:38:01.235 D/ ( 2002): HostConnection::get() New Host Connection established 0xe075cb40, tid 2023 +06-02 16:38:01.235 D/gralloc_ranchu( 2002): gralloc_unregister_buffer: exiting HostConnection (is buffer-handling thread) +06-02 16:38:01.248 W/ctxmgr ( 2473): [AclManager]No 2 for (accnt=account#-517948760#, com.google.android.gms(10008):UserLocationProducer, vrsn=13280000, 0, 3pPkg = null , 3pMdlId = null , pid = 2473). Was: 3 for 1, account#-517948760# +06-02 16:38:01.250 W/GAv4 ( 8852): CampaignTrackingReceiver is not registered, not exported or is disabled. Installation campaign tracking is not possible. See http://goo.gl/8Rd3yj for instructions. +06-02 16:38:01.253 W/FieldDefinition( 8852): Ignoring isIndexed constraint as field also has uniqueness constraint (on just this field, and therefore SQLite will have to create an index on that. For field: com.google.android.apps.docs.database.common.FieldDefinition$a@2f0c143 +06-02 16:38:01.256 W/GAv4 ( 8852): AnalyticsService not registered in the app manifest. Hits might not be delivered reliably. See http://goo.gl/8Rd3yj for instructions. +06-02 16:38:01.275 I/Icing ( 2660): Usage reports ok 2, Failed Usage reports 0, indexed 0, rejected 0, imm upload false +06-02 16:38:01.301 I/MicroRecognitionRunner( 2402): Starting detection. +06-02 16:38:01.301 I/MicrophoneInputStream( 2402): mic_starting SR : 16000 CC : 16 SO : 6 +06-02 16:38:01.303 I/earchbox:searc( 2402): Background concurrent copying GC freed 16338(953KB) AllocSpace objects, 1(92KB) LOS objects, 44% free, 7MB/13MB, paused 50us total 209.099ms +06-02 16:38:01.307 I/Icing ( 2660): Usage reports ok 0, Failed Usage reports 0, indexed 0, rejected 0, imm upload false +06-02 16:38:01.307 E/ ( 1627): Request requires android.permission.RECORD_AUDIO +06-02 16:38:01.307 E/AudioPolicyIntefaceImpl( 1627): getInputForAttr permission denied: recording not allowed for uid 10039 pid 2402 +06-02 16:38:01.307 E/AudioFlinger( 1627): createRecord() checkRecordThread_l failed +06-02 16:38:01.308 E/IAudioFlinger( 2402): createRecord returned error -22 +06-02 16:38:01.308 E/AudioRecord( 2402): AudioFlinger could not create record track, status: -22 +06-02 16:38:01.310 E/AudioRecord-JNI( 2402): Error creating AudioRecord instance: initialization check failed with status -22. +06-02 16:38:01.313 E/android.media.AudioRecord( 2402): Error code -20 when initializing native AudioRecord object. +06-02 16:38:01.313 I/MicrophoneInputStream( 2402): mic_started SR : 16000 CC : 16 SO : 6 +06-02 16:38:01.313 E/ActivityThread( 2402): Failed to find provider info for com.google.android.apps.gsa.testing.ui.audio.recorded +06-02 16:38:01.314 I/MicroDetectionWorker( 2402): onReady +06-02 16:38:01.314 W/SpeechLevelGenerator( 2402): Really low audio levels detected. The audio input may have issues. +06-02 16:38:01.319 I/MicrophoneInputStream( 2402): mic_close SR : 16000 CC : 16 SO : 6 +06-02 16:38:01.321 I/MicroRecognitionRunner( 2402): Detection finished +06-02 16:38:01.321 W/ErrorReporter( 2402): reportError [type: 211, code: 524300]: Error reading from input stream +06-02 16:38:01.323 I/MicroRecognitionRunner( 2402): Stopping hotword detection. +06-02 16:38:01.338 W/ErrorProcessor( 2402): onFatalError, processing error from engine(4) +06-02 16:38:01.338 W/ErrorProcessor( 2402): com.google.android.apps.gsa.shared.speech.b.g: Error reading from input stream +06-02 16:38:01.338 W/ErrorProcessor( 2402): at com.google.android.apps.gsa.staticplugins.microdetection.d.k.a(SourceFile:91) +06-02 16:38:01.338 W/ErrorProcessor( 2402): at com.google.android.apps.gsa.staticplugins.microdetection.d.l.run(Unknown Source:14) +06-02 16:38:01.338 W/ErrorProcessor( 2402): at com.google.android.libraries.gsa.runner.a.a.b(SourceFile:32) +06-02 16:38:01.338 W/ErrorProcessor( 2402): at com.google.android.libraries.gsa.runner.a.c.call(Unknown Source:4) +06-02 16:38:01.338 W/ErrorProcessor( 2402): at java.util.concurrent.FutureTask.run(FutureTask.java:266) +06-02 16:38:01.338 W/ErrorProcessor( 2402): at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:458) +06-02 16:38:01.338 W/ErrorProcessor( 2402): at java.util.concurrent.FutureTask.run(FutureTask.java:266) +06-02 16:38:01.338 W/ErrorProcessor( 2402): at com.google.android.apps.gsa.shared.util.concurrent.b.g.run(Unknown Source:4) +06-02 16:38:01.338 W/ErrorProcessor( 2402): at com.google.android.apps.gsa.shared.util.concurrent.b.aw.run(SourceFile:4) +06-02 16:38:01.338 W/ErrorProcessor( 2402): at com.google.android.apps.gsa.shared.util.concurrent.b.aw.run(SourceFile:4) +06-02 16:38:01.338 W/ErrorProcessor( 2402): at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1167) +06-02 16:38:01.338 W/ErrorProcessor( 2402): at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:641) +06-02 16:38:01.338 W/ErrorProcessor( 2402): at java.lang.Thread.run(Thread.java:764) +06-02 16:38:01.338 W/ErrorProcessor( 2402): at com.google.android.apps.gsa.shared.util.concurrent.b.i.run(SourceFile:6) +06-02 16:38:01.338 W/ErrorProcessor( 2402): Caused by: com.google.android.apps.gsa.shared.exception.GsaIOException: Error code: 393238 | Buffer overflow, no available space. +06-02 16:38:01.338 W/ErrorProcessor( 2402): at com.google.android.apps.gsa.speech.audio.Tee.j(SourceFile:103) +06-02 16:38:01.338 W/ErrorProcessor( 2402): at com.google.android.apps.gsa.speech.audio.au.read(SourceFile:2) +06-02 16:38:01.338 W/ErrorProcessor( 2402): at java.io.InputStream.read(InputStream.java:101) +06-02 16:38:01.338 W/ErrorProcessor( 2402): at com.google.android.apps.gsa.speech.audio.ao.run(SourceFile:17) +06-02 16:38:01.338 W/ErrorProcessor( 2402): at com.google.android.apps.gsa.speech.audio.an.run(SourceFile:2) +06-02 16:38:01.338 W/ErrorProcessor( 2402): at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:458) +06-02 16:38:01.338 W/ErrorProcessor( 2402): ... 10 more +06-02 16:38:01.339 I/AudioController( 2402): internalShutdown +06-02 16:38:01.340 I/MicroDetector( 2402): Keeping mic open: false +06-02 16:38:01.340 I/MicroDetectionWorker( 2402): #onError(false) +06-02 16:38:01.341 I/DeviceStateChecker( 2402): DeviceStateChecker cancelled +06-02 16:38:01.346 I/Places ( 2473): ?: PlacesBleScanner start() with priority 2 +06-02 16:38:01.365 I/Places ( 2473): ?: PlacesBleScanner start() with priority 2 +06-02 16:38:01.365 I/PlaceInferenceEngine( 2473): [anon] Changed inference mode: 1 +06-02 16:38:01.369 I/Places ( 2473): Converted 0 out of 1 WiFi scans +06-02 16:38:01.391 I/Places ( 2473): ?: PlacesBleScanner start() with priority 2 +06-02 16:38:01.398 I/Places ( 2473): ?: PlacesBleScanner start() with priority 2 +06-02 16:38:01.399 I/PlaceInferenceEngine( 2473): [anon] Changed inference mode: 1 +06-02 16:38:01.400 I/PlaceInferenceEngine( 2473): No beacon scan available - ignoring candidates. +06-02 16:38:01.422 W/droid.apps.doc( 8852): Long monitor contention with owner Binder:8852_2 (8868) at void java.lang.Object.wait(long, int)(Object.java:-2) waiters=0 in com.google.android.apps.docs.storagebackend.StorageBackendContentProvider$a com.google.android.apps.docs.storagebackend.StorageBackendContentProvider.b() for 353ms +06-02 16:38:01.423 I/Icing ( 2660): IndexChimeraService.getServiceInterface callingPackage=com.google.android.gms componentName=AppsCorpus serviceId=32 +06-02 16:38:01.423 I/Icing ( 2660): IndexChimeraService.getServiceInterface callingPackage=com.google.android.gms componentName=AppsCorpus serviceId=36 +06-02 16:38:01.435 I/ProvidersCache( 4535): Provider returned no roots. Possibly naughty: com.google.android.apps.docs.storage +06-02 16:38:01.441 I/Places ( 2473): Converted 0 out of 1 WiFi scans +06-02 16:38:01.454 I/Icing ( 2660): Usage reports ok 0, Failed Usage reports 0, indexed 0, rejected 0, imm upload false +06-02 16:38:01.456 I/ProvidersCache( 4535): Provider returned no roots. Possibly naughty: com.google.android.apps.docs.storage +06-02 16:38:01.458 W/Looper ( 1869): Drained +06-02 16:38:01.465 I/PlaceInferenceEngine( 2473): No beacon scan available - ignoring candidates. +06-02 16:38:01.467 I/Icing ( 2660): Usage reports ok 0, Failed Usage reports 0, indexed 0, rejected 0, imm upload false +06-02 16:38:01.482 W/ctxmgr ( 2473): [AclManager]No 2 for (accnt=account#-517948760#, com.google.android.gms(10008):PlacesProducer, vrsn=13280000, 0, 3pPkg = null , 3pMdlId = null , pid = 2473). Was: 3 for 18, account#-517948760# +06-02 16:38:02.182 W/ctxmgr ( 2473): [AclManager]No 2 for (accnt=account#-517948760#, com.google.android.gms(10008):UserLocationProducer, vrsn=13280000, 0, 3pPkg = null , 3pMdlId = null , pid = 2473). Was: 3 for 1, account#-517948760# +06-02 16:38:02.360 I/Icing ( 2660): Indexing com.google.android.gms-apps from com.google.android.gms +06-02 16:38:02.417 I/Icing ( 2660): Indexing com.google.android.gms-internal.3p:MobileApplication from com.google.android.gms +06-02 16:38:02.425 I/Icing ( 2660): Indexing done com.google.android.gms-apps +06-02 16:38:02.427 I/Icing ( 2660): Indexing done com.google.android.gms-internal.3p:MobileApplication +06-02 16:38:02.510 I/Icing ( 2660): Indexing com.google.android.gms-apps from com.google.android.gms +06-02 16:38:02.511 I/Icing ( 2660): Indexing done com.google.android.gms-apps +06-02 16:38:02.975 I/ActivityManager( 1869): Force stopping org.mozilla.fenix.debug appid=10099 user=0: clear data +06-02 16:38:02.976 I/ActivityManager( 1869): Force stopping org.mozilla.fenix.debug appid=10099 user=-1: clearApplicationUserData +06-02 16:38:02.977 D/ZenLog ( 1869): config: removeAutomaticZenRules,ZenModeConfig[user=0,allowAlarms=true,allowMedia=true,allowSystem=false,allowReminders=false,allowEvents=false,allowCalls=true,allowRepeatCallers=true,allowMessages=false,allowCallsFrom=stars,allowMessagesFrom=contacts,suppressedVisualEffects=511,areChannelsBypassingDnd=false,automaticRules={EVENTS_DEFAULT_RULE=ZenRule[enabled=false,snoozing=false,name=Event,zenMode=ZEN_MODE_IMPORTANT_INTERRUPTIONS,conditionId=condition://android/event?userId=-10000&calendar=&reply=1,condition=Condition[id=condition://android/event?userId=-10000&calendar=&reply=1,summary=...,line1=...,line2=...,icon=0,state=STATE_FALSE,flags=2],component=ComponentInfo{android/com.android.server.notification.EventConditionProvider},id=EVENTS_DEFAULT_RULE,creationTime=1587308662810,enabler=null], EVERY_NIGHT_DEFAULT_RULE=ZenRule[enabled=false,snoozing=false,name=Sleeping,zenMode=ZEN_MODE_IMPORTANT_INTERRUPTIONS,conditionId=condition://android/schedule?days=1.2.3.4.5.6.7&start=22.0&end=7.0&exitAtAlarm=true,condition=Condition[id=condition://android/schedule?days=1.2.3.4.5.6.7&start=22.0&end=7.0&exitAtAlarm=true,summary=...,line1=...,line2=...,icon=0,state=STATE_FALSE,flags=2],component=ComponentInfo{android/com.android.server.notification.ScheduleConditionProvider},id=EVERY_NIGHT_DEFAULT_RULE,creationTime=1587308662810,enabler=null]},manualRule=null],Diff[] +06-02 16:38:02.977 I/ConditionProviders( 1869): Disallowing condition provider org.mozilla.fenix.debug +06-02 16:38:02.977 D/ZenLog ( 1869): set_zen_mode: off,removeAutomaticZenRules +06-02 16:38:02.985 I/keystore( 1734): clear_uid 10099 +06-02 16:38:02.992 E/system_server( 1869): No package ID 7f found for ID 0x7f0801a6. +06-02 16:38:02.992 E/system_server( 1869): No package ID 7f found for ID 0x7f13011d. +06-02 16:38:02.992 E/system_server( 1869): No package ID 7f found for ID 0x7f13011d. +06-02 16:38:02.992 E/system_server( 1869): No package ID 7f found for ID 0x7f0801a4. +06-02 16:38:02.992 E/system_server( 1869): No package ID 7f found for ID 0x7f13011c. +06-02 16:38:02.992 E/system_server( 1869): No package ID 7f found for ID 0x7f13011c. +06-02 16:38:02.993 I/GeofencerStateMachine( 2473): removeGeofences: removeRequest=RemoveGeofencingRequest[REMOVE_ALL packageName=org.mozilla.fenix.debug] +06-02 16:38:02.995 D/CarrierSvcBindHelper( 2121): No carrier app for: 0 +06-02 16:38:03.007 I/ProvidersCache( 4535): Provider returned no roots. Possibly naughty: com.google.android.apps.docs.storage +06-02 16:38:03.013 D/vold ( 1558): Remounting 10099 as mode read +06-02 16:38:03.014 I/LocationSettingsChecker( 2660): Removing dialog suppression flag for package org.mozilla.fenix.debug +06-02 16:38:03.018 I/Icing ( 2660): doRemovePackageData org.mozilla.fenix.debug +06-02 16:38:03.048 D/vold ( 1558): Remounting 10099 as mode write +06-02 16:38:03.055 I/IcingNotification( 1996): Received intent: Intent { act=com.google.android.gms.icing.IME_NOTIFICATION flg=0x10 pkg=com.google.android.inputmethod.latin (has extras) } +06-02 16:38:03.104 I/ActivityManager( 1869): Force stopping org.mozilla.fenix.debug appid=10099 user=-1: set debug app +06-02 16:38:03.133 I/ActivityManager( 1869): START u0 {flg=0x10000000 cmp=org.mozilla.fenix.debug/.App (has extras)} from uid 0 +06-02 16:38:03.058 I/IcingNotification( 1996): Received intent: Intent { act=com.google.android.gms.icing.IME_NOTIFICATION flg=0x10 pkg=com.google.android.inputmethod.latin (has extras) } +06-02 16:38:03.175 I/lla.fenix.debu( 8940): Not late-enabling -Xcheck:jni (already on) +06-02 16:38:03.178 W/ctxmgr ( 2473): [AclManager]No 2 for (accnt=account#-517948760#, com.google.android.gms(10008):UserLocationProducer, vrsn=13280000, 0, 3pPkg = null , 3pMdlId = null , pid = 2473). Was: 3 for 1, account#-517948760# +06-02 16:38:03.184 D/gralloc_ranchu( 1619): gralloc_alloc: Creating ashmem region of size 9334784 +06-02 16:38:03.185 I/ActivityManager( 1869): Start proc 8940:org.mozilla.fenix.debug/u0a99 for activity org.mozilla.fenix.debug/.App +06-02 16:38:03.204 D/ ( 1869): HostConnection::get() New Host Connection established 0xc1e7f900, tid 1930 +06-02 16:38:03.246 W/lla.fenix.debu( 8940): Unexpected CPU variant for X86 using defaults: x86 +06-02 16:38:03.345 W/ActivityThread( 8940): Application org.mozilla.fenix.debug can be debugged on port 8100... +06-02 16:38:03.353 I/lla.fenix.debu( 8940): The ClassLoaderContext is a special shared library. +06-02 16:38:03.365 D/gralloc_ranchu( 1897): gralloc_unregister_buffer: exiting HostConnection (is buffer-handling thread) +06-02 16:38:03.366 D/ ( 1897): HostConnection::get() New Host Connection established 0xed7c3080, tid 1897 +06-02 16:38:03.366 D/gralloc_ranchu( 1897): gralloc_unregister_buffer: exiting HostConnection (is buffer-handling thread) +06-02 16:38:03.367 D/ ( 1897): HostConnection::get() New Host Connection established 0xed7c3080, tid 1897 +06-02 16:38:03.367 D/gralloc_ranchu( 1897): gralloc_unregister_buffer: exiting HostConnection (is buffer-handling thread) +06-02 16:38:03.367 D/ ( 1897): HostConnection::get() New Host Connection established 0xed7c3080, tid 1897 +06-02 16:38:03.367 D/gralloc_ranchu( 1897): gralloc_unregister_buffer: exiting HostConnection (is buffer-handling thread) +06-02 16:38:03.370 D/EGL_emulation( 2402): eglMakeCurrent: 0xe1911c80: ver 3 0 (tinfo 0xc8cbe260) +06-02 16:38:03.375 D/ ( 1897): HostConnection::get() New Host Connection established 0xed7c3080, tid 1897 +06-02 16:38:03.378 D/gralloc_ranchu( 1619): gralloc_alloc: Creating ashmem region of size 9334784 +06-02 16:38:03.381 D/ ( 1728): HostConnection::get() New Host Connection established 0xe90dd200, tid 2107 +06-02 16:38:03.381 D/gralloc_ranchu( 1728): gralloc_unregister_buffer: exiting HostConnection (is buffer-handling thread) +06-02 16:38:03.383 D/ ( 1728): HostConnection::get() New Host Connection established 0xe90dd200, tid 2107 +06-02 16:38:03.383 D/gralloc_ranchu( 1728): gralloc_unregister_buffer: exiting HostConnection (is buffer-handling thread) +06-02 16:38:03.385 D/ ( 1728): HostConnection::get() New Host Connection established 0xe90dd200, tid 2107 +06-02 16:38:03.385 D/gralloc_ranchu( 1728): gralloc_unregister_buffer: exiting HostConnection (is buffer-handling thread) +06-02 16:38:03.386 D/ ( 1728): HostConnection::get() New Host Connection established 0xe90dd200, tid 2107 +06-02 16:38:03.387 D/gralloc_ranchu( 1728): gralloc_unregister_buffer: exiting HostConnection (is buffer-handling thread) +06-02 16:38:03.392 D/EGL_emulation( 2488): eglMakeCurrent: 0xe3385ae0: ver 3 0 (tinfo 0xe33838f0) +06-02 16:38:03.392 D/EGL_emulation( 2002): eglMakeCurrent: 0xe3385900: ver 3 0 (tinfo 0xe33839b0) +06-02 16:38:03.395 D/ ( 1728): HostConnection::get() New Host Connection established 0xe90dda00, tid 2107 +06-02 16:38:03.395 D/gralloc_ranchu( 1728): gralloc_unregister_buffer: exiting HostConnection (is buffer-handling thread) +06-02 16:38:03.406 D/ ( 1728): HostConnection::get() New Host Connection established 0xe90dda00, tid 2107 +06-02 16:38:03.407 D/gralloc_ranchu( 1728): gralloc_unregister_buffer: exiting HostConnection (is buffer-handling thread) +06-02 16:38:03.408 D/ ( 1728): HostConnection::get() New Host Connection established 0xe90dda00, tid 2107 +06-02 16:38:03.408 D/EGL_emulation( 2002): eglMakeCurrent: 0xe3385900: ver 3 0 (tinfo 0xe33839b0) +06-02 16:38:03.412 D/gralloc_ranchu( 1728): gralloc_unregister_buffer: exiting HostConnection (is buffer-handling thread) +06-02 16:38:03.414 D/ ( 1728): HostConnection::get() New Host Connection established 0xe90dda00, tid 2107 +06-02 16:38:03.415 D/gralloc_ranchu( 1728): gralloc_unregister_buffer: exiting HostConnection (is buffer-handling thread) +06-02 16:38:03.416 D/EGL_emulation( 2002): eglMakeCurrent: 0xe3385900: ver 3 0 (tinfo 0xe33839b0) +06-02 16:38:03.504 I/chatty ( 2002): uid=10024(com.android.systemui) RenderThread identical 9 lines +06-02 16:38:03.518 D/EGL_emulation( 2002): eglMakeCurrent: 0xe3385900: ver 3 0 (tinfo 0xe33839b0) +06-02 16:38:04.180 W/ctxmgr ( 2473): [AclManager]No 2 for (accnt=account#-517948760#, com.google.android.gms(10008):IndoorOutdoorProducer, vrsn=13280000, 0, 3pPkg = null , 3pMdlId = null , pid = 2473). Was: 3 for 57, account#-517948760# +06-02 16:38:04.214 I/droid.apps.doc( 8852): The ClassLoaderContext is a special shared library. +06-02 16:38:04.261 I/chatty ( 8852): uid=10069(com.google.android.apps.docs) TaskSchedulerLo identical 2 lines +06-02 16:38:04.271 I/droid.apps.doc( 8852): The ClassLoaderContext is a special shared library. +06-02 16:38:04.298 V/NativeCrypto( 8852): Registering com/google/android/gms/org/conscrypt/NativeCrypto's 284 native methods... +06-02 16:38:04.340 D/NetworkSecurityConfig( 8852): No Network Security Config specified, using platform default +06-02 16:38:04.345 I/ProviderInstaller( 8852): Installed default security provider GmsCore_OpenSSL +06-02 16:38:04.534 D/FirebaseApp( 8940): Default FirebaseApp failed to initialize because no default options were found. This usually means that com.google.gms:google-services was not applied to your gradle project. +06-02 16:38:04.534 I/FirebaseInitProvider( 8940): FirebaseApp initialization unsuccessful +06-02 16:38:04.675 D/FenixApplication( 8940): Initializing Glean (uploadEnabled=true, isFennec=false) +06-02 16:38:04.706 D/RustNativeSupport( 8940): findMegazordLibraryName(viaduct, 0.59.0 +06-02 16:38:04.706 D/RustNativeSupport( 8940): lib in use: none +06-02 16:38:04.706 D/RustNativeSupport( 8940): lib configured: megazord +06-02 16:38:04.707 D/RustNativeSupport( 8940): lib version configured: 0.59.0 +06-02 16:38:04.707 D/RustNativeSupport( 8940): settled on megazord +06-02 16:38:04.794 D/libglean_ffi( 8940): glean_ffi: Android logging should be hooked up! +06-02 16:38:04.799 I/glean/Glean( 8940): Registering pings for mozilla.telemetry.glean.GleanMetrics.Pings +06-02 16:38:04.804 I/libglean_ffi( 8940): glean_core: Creating new Glean +06-02 16:38:04.804 D/libglean_ffi( 8940): glean_core::database: Database path: "/data/user/0/org.mozilla.fenix.debug/glean_data/db" +06-02 16:38:04.804 D/RustNativeSupport( 8940): findMegazordLibraryName(rustlog, 0.59.0 +06-02 16:38:04.804 D/RustNativeSupport( 8940): lib in use: none +06-02 16:38:04.805 D/RustNativeSupport( 8940): lib configured: megazord +06-02 16:38:04.805 D/RustNativeSupport( 8940): lib version configured: 0.59.0 +06-02 16:38:04.805 D/RustNativeSupport( 8940): settled on megazord +06-02 16:38:04.805 I/libglean_ffi( 8940): glean_core::database: Database initialized +06-02 16:38:04.812 I/rc_log_ffi::ios( 8940): rc_log adapter initialized! +06-02 16:38:04.840 I/libglean_ffi( 8940): glean_ffi: Glean initialized +06-02 16:38:04.875 I/GeckoRuntime( 8940): Adding debug configuration from: /data/local/tmp/org.mozilla.fenix.debug-geckoview-config.yaml +06-02 16:38:04.876 D/GeckoDebugConfig( 8940): Adding environment variables from debug config: {MOZ_CRASHREPORTER=1, MOZ_CRASHREPORTER_NO_REPORT=1, MOZ_CRASHREPORTER_SHUTDOWN=1} +06-02 16:38:04.876 D/GeckoDebugConfig( 8940): Adding arguments from debug config: [-marionette, -profile, /mnt/sdcard/org.mozilla.fenix.debug-geckodriver-profile] +06-02 16:38:04.877 D/GeckoThread( 8940): State changed to LAUNCHED +06-02 16:38:04.878 I/GeckoThread( 8940): preparing to run Gecko +06-02 16:38:04.879 D/GeckoThread( 8940): env var: MOZ_CRASHREPORTER=1 +06-02 16:38:04.879 D/GeckoThread( 8940): env var: MOZ_CRASHREPORTER_NO_REPORT=1 +06-02 16:38:04.879 D/GeckoThread( 8940): env var: MOZ_CRASHREPORTER_SHUTDOWN=1 +06-02 16:38:04.911 D/GeckoThread( 8940): State changed to MOZGLUE_READY +06-02 16:38:04.914 D/GeckoRuntime( 8940): Lifecycle: onCreate +06-02 16:38:04.936 I/glean/MetricsPingSched( 8940): The application just updated. Send metrics ping now. +06-02 16:38:04.947 W/Settings( 8940): Setting animator_duration_scale has moved from android.provider.Settings.System to android.provider.Settings.Global, returning read-only global URI. +06-02 16:38:04.952 E/GeckoLibLoad( 8940): Load sqlite start +06-02 16:38:04.983 E/GeckoLibLoad( 8940): Load sqlite done +06-02 16:38:04.983 E/GeckoLibLoad( 8940): Load nss start +06-02 16:38:04.983 E/GeckoLibLoad( 8940): Load nss done +06-02 16:38:04.996 I/glean/MetricsPingSched( 8940): Collecting the 'metrics' ping, now = Tue Jun 02 16:38:04 EDT 2020, startup = true, reason = upgrade +06-02 16:38:05.031 E/GeckoLibLoad( 8940): Loaded libs in 47.602025ms total, 10ms(70ms) user, 30ms(40ms) system, 0(0) faults +06-02 16:38:05.031 D/GeckoThread( 8940): State changed to LIBS_READY +06-02 16:38:05.031 I/libglean_ffi( 8940): glean_core::ping: Collecting metrics +06-02 16:38:05.031 I/libglean_ffi( 8940): glean_core::ping: Storage for metrics empty. Bailing out. +06-02 16:38:05.031 I/libglean_ffi( 8940): glean_core: No content for ping 'metrics', therefore no ping queued. +06-02 16:38:05.040 D/glean/MetricsPingSched( 8940): Scheduling the 'metrics' ping in 40915085ms +06-02 16:38:05.043 W/GeckoThread( 8940): zerdatime 4649175 - runGecko +06-02 16:38:05.049 D/GeckoProfile( 8940): Loading profile at: null name: default +06-02 16:38:05.050 D/GeckoProfile( 8940): Created new profile dir. +06-02 16:38:05.051 I/GeckoProfile( 8940): Enqueuing profile init. +06-02 16:38:05.054 D/GeckoProfile( 8940): Found profile dir: /data/user/0/org.mozilla.fenix.debug/files/mozilla/qy7f9y6n.default +06-02 16:38:05.054 D/GeckoProfile( 8940): Attempting to write new client ID properties +06-02 16:38:05.057 D/GeckoProfile( 8940): Creating profile dir: /data/user/0/org.mozilla.fenix.debug/files/mozilla/qy7f9y6n.default +06-02 16:38:05.077 D/LeakCanary( 8940): Updated AppWatcher.config: Config(no changes) +06-02 16:38:05.088 I/Gecko:DumpUtils( 8940): Fifo watcher disabled via pref. +06-02 16:38:05.113 D/GeckoSysInfo( 8940): System memory: 1494MB. +06-02 16:38:05.113 W/lla.fenix.debu( 8940): Accessing hidden method Landroid/os/MessageQueue;->next()Landroid/os/Message; (light greylist, JNI) +06-02 16:38:05.113 D/LeakCanary( 8940): Updated LeakCanary.config: Config(no changes) +06-02 16:38:05.114 D/StrictMode( 8940): StrictMode policy violation: android.os.strictmode.NonSdkApiUsedViolation: Landroid/os/MessageQueue;->next()Landroid/os/Message; +06-02 16:38:05.114 D/StrictMode( 8940): at android.os.StrictMode.lambda$static$1(StrictMode.java:428) +06-02 16:38:05.114 D/StrictMode( 8940): at android.os.-$$Lambda$StrictMode$lu9ekkHJ2HMz0jd3F8K8MnhenxQ.accept(Unknown Source:2) +06-02 16:38:05.114 D/StrictMode( 8940): at org.mozilla.gecko.mozglue.GeckoLoader.nativeRun(Native Method) +06-02 16:38:05.114 D/StrictMode( 8940): at org.mozilla.gecko.GeckoThread.run(GeckoThread.java:449) +06-02 16:38:05.114 W/lla.fenix.debu( 8940): Accessing hidden field Landroid/os/MessageQueue;->mMessages:Landroid/os/Message; (light greylist, JNI) +06-02 16:38:05.115 D/StrictMode( 8940): StrictMode policy violation: android.os.strictmode.NonSdkApiUsedViolation: Landroid/os/MessageQueue;->mMessages:Landroid/os/Message; +06-02 16:38:05.115 D/StrictMode( 8940): at android.os.StrictMode.lambda$static$1(StrictMode.java:428) +06-02 16:38:05.115 D/StrictMode( 8940): at android.os.-$$Lambda$StrictMode$lu9ekkHJ2HMz0jd3F8K8MnhenxQ.accept(Unknown Source:2) +06-02 16:38:05.115 D/StrictMode( 8940): at org.mozilla.gecko.mozglue.GeckoLoader.nativeRun(Native Method) +06-02 16:38:05.115 D/StrictMode( 8940): at org.mozilla.gecko.GeckoThread.run(GeckoThread.java:449) +06-02 16:38:05.117 W/lla.fenix.debu( 8940): Accessing hidden field Ljava/lang/Boolean;->value:Z (light greylist, JNI) +06-02 16:38:05.117 D/StrictMode( 8940): StrictMode policy violation: android.os.strictmode.NonSdkApiUsedViolation: Ljava/lang/Boolean;->value:Z +06-02 16:38:05.117 D/StrictMode( 8940): at android.os.StrictMode.lambda$static$1(StrictMode.java:428) +06-02 16:38:05.117 D/StrictMode( 8940): at android.os.-$$Lambda$StrictMode$lu9ekkHJ2HMz0jd3F8K8MnhenxQ.accept(Unknown Source:2) +06-02 16:38:05.117 D/StrictMode( 8940): at org.mozilla.gecko.mozglue.GeckoLoader.nativeRun(Native Method) +06-02 16:38:05.117 D/StrictMode( 8940): at org.mozilla.gecko.GeckoThread.run(GeckoThread.java:449) +06-02 16:38:05.117 W/lla.fenix.debu( 8940): Accessing hidden field Ljava/lang/Integer;->value:I (light greylist, JNI) +06-02 16:38:05.118 D/StrictMode( 8940): StrictMode policy violation: android.os.strictmode.NonSdkApiUsedViolation: Ljava/lang/Integer;->value:I +06-02 16:38:05.118 D/StrictMode( 8940): at android.os.StrictMode.lambda$static$1(StrictMode.java:428) +06-02 16:38:05.118 D/StrictMode( 8940): at android.os.-$$Lambda$StrictMode$lu9ekkHJ2HMz0jd3F8K8MnhenxQ.accept(Unknown Source:2) +06-02 16:38:05.118 D/StrictMode( 8940): at org.mozilla.gecko.mozglue.GeckoLoader.nativeRun(Native Method) +06-02 16:38:05.118 D/StrictMode( 8940): at org.mozilla.gecko.GeckoThread.run(GeckoThread.java:449) +06-02 16:38:05.118 W/lla.fenix.debu( 8940): Accessing hidden field Ljava/lang/Double;->value:D (light greylist, JNI) +06-02 16:38:05.119 D/StrictMode( 8940): StrictMode policy violation: android.os.strictmode.NonSdkApiUsedViolation: Ljava/lang/Double;->value:D +06-02 16:38:05.119 D/StrictMode( 8940): at android.os.StrictMode.lambda$static$1(StrictMode.java:428) +06-02 16:38:05.119 D/StrictMode( 8940): at android.os.-$$Lambda$StrictMode$lu9ekkHJ2HMz0jd3F8K8MnhenxQ.accept(Unknown Source:2) +06-02 16:38:05.119 D/StrictMode( 8940): at org.mozilla.gecko.mozglue.GeckoLoader.nativeRun(Native Method) +06-02 16:38:05.119 D/StrictMode( 8940): at org.mozilla.gecko.GeckoThread.run(GeckoThread.java:449) +06-02 16:38:05.120 D/GeckoThread( 8940): State changed to JNI_READY +06-02 16:38:05.120 D/App ( 8940): DebugMetricController: start +06-02 16:38:05.120 D/App ( 8940): DebugMetricController: start +06-02 16:38:05.122 W/PushConfig( 8940): No firebase configuration found; cannot support push service. +06-02 16:38:05.174 D/ServiceAllocator( 8940): org.mozilla.gecko.process.GeckoChildProcessServices$tab0 updateBindings: BACKGROUND priority, 0 importance, 2 successful binds, 0 failed binds, 0 successful unbinds, 0 failed unbinds +06-02 16:38:05.189 D/StrictMode( 8940): StrictMode policy violation; ~duration=351 ms: android.os.strictmode.DiskReadViolation +06-02 16:38:05.189 D/StrictMode( 8940): at android.os.StrictMode$AndroidBlockGuardPolicy.onReadFromDisk(StrictMode.java:1504) +06-02 16:38:05.189 D/StrictMode( 8940): at java.io.FileInputStream.<init>(FileInputStream.java:163) +06-02 16:38:05.189 D/StrictMode( 8940): at org.mozilla.gecko.util.DebugConfig.fromFile(DebugConfig.java:49) +06-02 16:38:05.189 D/StrictMode( 8940): at org.mozilla.geckoview.GeckoRuntime.init(GeckoRuntime.java:363) +06-02 16:38:05.189 D/StrictMode( 8940): at org.mozilla.geckoview.GeckoRuntime.create(GeckoRuntime.java:574) +06-02 16:38:05.189 D/StrictMode( 8940): at GeckoProvider.createRuntime(GeckoProvider.kt:58) +06-02 16:38:05.189 D/StrictMode( 8940): at GeckoProvider.getOrCreateRuntime(GeckoProvider.kt:28) +06-02 16:38:05.189 D/StrictMode( 8940): at org.mozilla.fenix.components.Core$engine$2.invoke(Core.kt:79) +06-02 16:38:05.189 D/StrictMode( 8940): at org.mozilla.fenix.components.Core$engine$2.invoke(Core.kt:57) +06-02 16:38:05.189 D/StrictMode( 8940): at kotlin.SynchronizedLazyImpl.getValue(LazyJVM.kt:74) +06-02 16:38:05.189 D/StrictMode( 8940): at org.mozilla.fenix.components.Core.getEngine(Unknown Source:7) +06-02 16:38:05.189 D/StrictMode( 8940): at org.mozilla.fenix.FenixApplication.setupInMainProcessOnly(FenixApplication.kt:128) +06-02 16:38:05.189 D/StrictMode( 8940): at org.mozilla.fenix.FenixApplication.onCreate(FenixApplication.kt:90) +06-02 16:38:05.189 D/StrictMode( 8940): at android.app.Instrumentation.callApplicationOnCreate(Instrumentation.java:1154) +06-02 16:38:05.189 D/StrictMode( 8940): at android.app.ActivityThread.handleBindApplication(ActivityThread.java:5871) +06-02 16:38:05.189 D/StrictMode( 8940): at android.app.ActivityThread.access$1100(ActivityThread.java:199) +06-02 16:38:05.189 D/StrictMode( 8940): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1650) +06-02 16:38:05.189 D/StrictMode( 8940): at android.os.Handler.dispatchMessage(Handler.java:106) +06-02 16:38:05.189 D/StrictMode( 8940): at android.os.Looper.loop(Looper.java:193) +06-02 16:38:05.189 D/StrictMode( 8940): at android.app.ActivityThread.main(ActivityThread.java:6669) +06-02 16:38:05.189 D/StrictMode( 8940): at java.lang.reflect.Method.invoke(Native Method) +06-02 16:38:05.189 D/StrictMode( 8940): at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:493) +06-02 16:38:05.189 D/StrictMode( 8940): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:858) +06-02 16:38:05.194 D/StrictMode( 8940): StrictMode policy violation; ~duration=336 ms: android.os.strictmode.DiskReadViolation +06-02 16:38:05.194 D/StrictMode( 8940): at android.os.StrictMode$AndroidBlockGuardPolicy.onReadFromDisk(StrictMode.java:1504) +06-02 16:38:05.194 D/StrictMode( 8940): at libcore.io.BlockGuardOs.read(BlockGuardOs.java:253) +06-02 16:38:05.194 D/StrictMode( 8940): at libcore.io.IoBridge.read(IoBridge.java:501) +06-02 16:38:05.194 D/StrictMode( 8940): at java.io.FileInputStream.read(FileInputStream.java:307) +06-02 16:38:05.194 D/StrictMode( 8940): at java.io.FilterInputStream.read(FilterInputStream.java:133) +06-02 16:38:05.194 D/StrictMode( 8940): at java.io.PushbackInputStream.read(PushbackInputStream.java:186) +06-02 16:38:05.194 D/StrictMode( 8940): at org.yaml.snakeyaml.reader.UnicodeReader.init(UnicodeReader.java:92) +06-02 16:38:05.194 D/StrictMode( 8940): at org.yaml.snakeyaml.reader.UnicodeReader.read(UnicodeReader.java:124) +06-02 16:38:05.194 D/StrictMode( 8940): at org.yaml.snakeyaml.reader.StreamReader.update(StreamReader.java:183) +06-02 16:38:05.194 D/StrictMode( 8940): at org.yaml.snakeyaml.reader.StreamReader.ensureEnoughData(StreamReader.java:176) +06-02 16:38:05.194 D/StrictMode( 8940): at org.yaml.snakeyaml.reader.StreamReader.ensureEnoughData(StreamReader.java:171) +06-02 16:38:05.194 D/StrictMode( 8940): at org.yaml.snakeyaml.reader.StreamReader.peek(StreamReader.java:126) +06-02 16:38:05.194 D/StrictMode( 8940): at org.yaml.snakeyaml.scanner.ScannerImpl.scanToNextToken(ScannerImpl.java:1177) +06-02 16:38:05.194 D/StrictMode( 8940): at org.yaml.snakeyaml.scanner.ScannerImpl.fetchMoreTokens(ScannerImpl.java:287) +06-02 16:38:05.194 D/StrictMode( 8940): at org.yaml.snakeyaml.scanner.ScannerImpl.checkToken(ScannerImpl.java:227) +06-02 16:38:05.194 D/StrictMode( 8940): at org.yaml.snakeyaml.parser.ParserImpl$ParseImplicitDocumentStart.produce(ParserImpl.java:195) +06-02 16:38:05.194 D/StrictMode( 8940): at org.yaml.snakeyaml.parser.ParserImpl.peekEvent(ParserImpl.java:158) +06-02 16:38:05.194 D/StrictMode( 8940): at org.yaml.snakeyaml.parser.ParserImpl.checkEvent(ParserImpl.java:148) +06-02 16:38:05.194 D/StrictMode( 8940): at org.yaml.snakeyaml.composer.Composer.getSingleNode(Composer.java:107) +06-02 16:38:05.194 D/StrictMode( 8940): at org.yaml.snakeyaml.constructor.BaseConstructor.getSingleData(BaseConstructor.java:141) +06-02 16:38:05.194 D/StrictMode( 8940): at org.yaml.snakeyaml.Yaml.loadFromReader(Yaml.java:525) +06-02 16:38:05.194 D/StrictMode( 8940): at org.yaml.snakeyaml.Yaml.load(Yaml.java:453) +06-02 16:38:05.194 D/StrictMode( 8940): at org.mozilla.gecko.util.DebugConfig.fromFile(DebugConfig.java:51) +06-02 16:38:05.194 D/StrictMode( 8940): at org.mozilla.geckoview.GeckoRuntime.init(GeckoRuntime.java:363) +06-02 16:38:05.194 D/StrictMode( 8940): at org.mozilla.geckoview.GeckoRuntime.create(GeckoRuntime.java:574) +06-02 16:38:05.194 D/StrictMode( 8940): at GeckoProvider.createRuntime(GeckoProvider.kt:58) +06-02 16:38:05.194 D/StrictMode( 8940): at GeckoProvider.getOrCreateRuntime(GeckoProvider.kt:28) +06-02 16:38:05.194 D/StrictMode( 8940): at org.mozilla.fenix.components.Core$engine$2.invoke(Core.kt:79) +06-02 16:38:05.194 D/StrictMode( 8940): at org.mozilla.fenix.components.Core$engine$2.invoke(Core.kt:57) +06-02 16:38:05.194 D/StrictMode( 8940): at kotlin.SynchronizedLazyImpl.getValue(LazyJVM.kt:74) +06-02 16:38:05.194 D/StrictMode( 8940): at org.mozilla.fenix.components.Core.getEngine(Unknown Source:7) +06-02 16:38:05.194 D/StrictMode( 8940): at org.mozilla.fenix.FenixApplication.setupInMainProcessOnly(FenixApplication.kt:128) +06-02 16:38:05.194 D/StrictMode( 8940): at org.mozilla.fenix.FenixApplication.onCreate(FenixApplication.kt:90) +06-02 16:38:05.194 D/StrictMode( 8940): at android.app.Instrumentation.callApplicationOnCreate(Instrumentation.java:1154) +06-02 16:38:05.194 D/StrictMode( 8940): at android.app.ActivityThread.handleBindApplication(ActivityThread.java:5871) +06-02 16:38:05.194 D/StrictMode( 8940): at android.app.ActivityThread.access$1100(ActivityThread.java:199) +06-02 16:38:05.194 D/StrictMode( 8940): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1650) +06-02 16:38:05.194 D/StrictMode( 8940): at android.os.Handler.dispatchMessage(Handler.java:106) +06-02 16:38:05.194 D/StrictMode( 8940): at android.os.Looper.loop(Looper.java:193) +06-02 16:38:05.194 D/StrictMode( 8940): at android.app.ActivityThread.main(ActivityThread.java:6669) +06-02 16:38:05.194 D/StrictMode( 8940): at java.lang.reflect.Method.invoke(Native Method) +06-02 16:38:05.194 D/StrictMode( 8940): at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:493) +06-02 16:38:05.194 D/StrictMode( 8940): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:858) +06-02 16:38:05.200 D/StrictMode( 8940): StrictMode policy violation; ~duration=336 ms: android.os.strictmode.DiskReadViolation +06-02 16:38:05.200 D/StrictMode( 8940): at android.os.StrictMode$AndroidBlockGuardPolicy.onReadFromDisk(StrictMode.java:1504) +06-02 16:38:05.200 D/StrictMode( 8940): at libcore.io.BlockGuardOs.read(BlockGuardOs.java:253) +06-02 16:38:05.200 D/StrictMode( 8940): at libcore.io.IoBridge.read(IoBridge.java:501) +06-02 16:38:05.200 D/StrictMode( 8940): at java.io.FileInputStream.read(FileInputStream.java:307) +06-02 16:38:05.200 D/StrictMode( 8940): at java.io.FilterInputStream.read(FilterInputStream.java:133) +06-02 16:38:05.200 D/StrictMode( 8940): at java.io.PushbackInputStream.read(PushbackInputStream.java:186) +06-02 16:38:05.200 D/StrictMode( 8940): at sun.nio.cs.StreamDecoder.readBytes(StreamDecoder.java:288) +06-02 16:38:05.200 D/StrictMode( 8940): at sun.nio.cs.StreamDecoder.implRead(StreamDecoder.java:351) +06-02 16:38:05.200 D/StrictMode( 8940): at sun.nio.cs.StreamDecoder.read(StreamDecoder.java:180) +06-02 16:38:05.200 D/StrictMode( 8940): at java.io.InputStreamReader.read(InputStreamReader.java:184) +06-02 16:38:05.200 D/StrictMode( 8940): at org.yaml.snakeyaml.reader.UnicodeReader.read(UnicodeReader.java:125) +06-02 16:38:05.200 D/StrictMode( 8940): at org.yaml.snakeyaml.reader.StreamReader.update(StreamReader.java:183) +06-02 16:38:05.200 D/StrictMode( 8940): at org.yaml.snakeyaml.reader.StreamReader.ensureEnoughData(StreamReader.java:176) +06-02 16:38:05.200 D/StrictMode( 8940): at org.yaml.snakeyaml.reader.StreamReader.ensureEnoughData(StreamReader.java:171) +06-02 16:38:05.200 D/StrictMode( 8940): at org.yaml.snakeyaml.reader.StreamReader.peek(StreamReader.java:126) +06-02 16:38:05.200 D/StrictMode( 8940): at org.yaml.snakeyaml.scanner.ScannerImpl.scanToNextToken(ScannerImpl.java:1177) +06-02 16:38:05.200 D/StrictMode( 8940): at org.yaml.snakeyaml.scanner.ScannerImpl.fetchMoreTokens(ScannerImpl.java:287) +06-02 16:38:05.200 D/StrictMode( 8940): at org.yaml.snakeyaml.scanner.ScannerImpl.checkToken(ScannerImpl.java:227) +06-02 16:38:05.200 D/StrictMode( 8940): at org.yaml.snakeyaml.parser.ParserImpl$ParseImplicitDocumentStart.produce(ParserImpl.java:195) +06-02 16:38:05.200 D/StrictMode( 8940): at org.yaml.snakeyaml.parser.ParserImpl.peekEvent(ParserImpl.java:158) +06-02 16:38:05.200 D/StrictMode( 8940): at org.yaml.snakeyaml.parser.ParserImpl.checkEvent(ParserImpl.java:148) +06-02 16:38:05.200 D/StrictMode( 8940): at org.yaml.snakeyaml.composer.Composer.getSingleNode(Composer.java:107) +06-02 16:38:05.200 D/StrictMode( 8940): at org.yaml.snakeyaml.constructor.BaseConstructor.getSingleData(BaseConstructor.java:141) +06-02 16:38:05.200 D/StrictMode( 8940): at org.yaml.snakeyaml.Yaml.loadFromReader(Yaml.java:525) +06-02 16:38:05.200 D/StrictMode( 8940): at org.yaml.snakeyaml.Yaml.load(Yaml.java:453) +06-02 16:38:05.200 D/StrictMode( 8940): at org.mozilla.gecko.util.DebugConfig.fromFile(DebugConfig.java:51) +06-02 16:38:05.200 D/StrictMode( 8940): at org.mozilla.geckoview.GeckoRuntime.init(GeckoRuntime.java:363) +06-02 16:38:05.200 D/StrictMode( 8940): at org.mozilla.geckoview.GeckoRuntime.create(GeckoRuntime.java:574) +06-02 16:38:05.200 D/StrictMode( 8940): at GeckoProvider.createRuntime(GeckoProvider.kt:58) +06-02 16:38:05.200 D/StrictMode( 8940): at GeckoProvider.getOrCreateRuntime(GeckoProvider.kt:28) +06-02 16:38:05.200 D/StrictMode( 8940): at org.mozilla.fenix.components.Core$engine$2.invoke(Core.kt:79) +06-02 16:38:05.200 D/StrictMode( 8940): at org.mozilla.fenix.components.Core$engine$2.invoke(Core.kt:57) +06-02 16:38:05.200 D/StrictMode( 8940): at kotlin.SynchronizedLazyImpl.getValue(LazyJVM.kt:74) +06-02 16:38:05.200 D/StrictMode( 8940): at org.mozilla.fenix.components.Core.getEngine(Unknown Source:7) +06-02 16:38:05.200 D/StrictMode( 8940): at org.mozilla.fenix.FenixApplication.setupInMainProcessOnly(FenixApplication.kt:128) +06-02 16:38:05.200 D/StrictMode( 8940): at org.mozilla.fenix.FenixApplication.onCreate(FenixApplication.kt:90) +06-02 16:38:05.200 D/StrictMode( 8940): at android.app.Instrumentation.callApplicationOnCreate(Instrumentation.java:1154) +06-02 16:38:05.200 D/StrictMode( 8940): at android.app.ActivityThread.handleBindApplication(ActivityThread.java:5871) +06-02 16:38:05.200 D/StrictMode( 8940): at android.app.ActivityThread.access$1100(ActivityThread.java:199) +06-02 16:38:05.200 D/StrictMode( 8940): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1650) +06-02 16:38:05.200 D/StrictMode( 8940): at android.os.Handler.dispatchMessage(Handler.java:106) +06-02 16:38:05.200 D/StrictMode( 8940): at android.os.Looper.loop(Looper.java:193) +06-02 16:38:05.200 D/StrictMode( 8940): at android.app.ActivityThread.main(ActivityThread.java:6669) +06-02 16:38:05.200 D/StrictMode( 8940): at java.lang.reflect.Method.invoke(Native Method) +06-02 16:38:05.200 D/StrictMode( 8940): at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:493) +06-02 16:38:05.200 D/StrictMode( 8940): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:858) +06-02 16:38:05.202 I/enix.debug:tab( 8988): Not late-enabling -Xcheck:jni (already on) +06-02 16:38:05.203 D/StrictMode( 8940): StrictMode policy violation; ~duration=320 ms: android.os.strictmode.DiskReadViolation +06-02 16:38:05.203 D/StrictMode( 8940): at android.os.StrictMode$AndroidBlockGuardPolicy.onReadFromDisk(StrictMode.java:1504) +06-02 16:38:05.203 D/StrictMode( 8940): at libcore.io.BlockGuardOs.read(BlockGuardOs.java:253) +06-02 16:38:05.203 D/StrictMode( 8940): at libcore.io.IoBridge.read(IoBridge.java:501) +06-02 16:38:05.203 D/StrictMode( 8940): at java.io.FileInputStream.read(FileInputStream.java:307) +06-02 16:38:05.203 D/StrictMode( 8940): at java.io.FilterInputStream.read(FilterInputStream.java:133) +06-02 16:38:05.203 D/StrictMode( 8940): at java.io.PushbackInputStream.read(PushbackInputStream.java:186) +06-02 16:38:05.203 D/StrictMode( 8940): at sun.nio.cs.StreamDecoder.readBytes(StreamDecoder.java:288) +06-02 16:38:05.203 D/StrictMode( 8940): at sun.nio.cs.StreamDecoder.implRead(StreamDecoder.java:351) +06-02 16:38:05.203 D/StrictMode( 8940): at sun.nio.cs.StreamDecoder.read(StreamDecoder.java:180) +06-02 16:38:05.203 D/StrictMode( 8940): at java.io.InputStreamReader.read(InputStreamReader.java:184) +06-02 16:38:05.203 D/StrictMode( 8940): at org.yaml.snakeyaml.reader.UnicodeReader.read(UnicodeReader.java:125) +06-02 16:38:05.203 D/StrictMode( 8940): at org.yaml.snakeyaml.reader.StreamReader.update(StreamReader.java:183) +06-02 16:38:05.203 D/StrictMode( 8940): at org.yaml.snakeyaml.reader.StreamReader.ensureEnoughData(StreamReader.java:176) +06-02 16:38:05.203 D/StrictMode( 8940): at org.yaml.snakeyaml.reader.StreamReader.peek(StreamReader.java:136) +06-02 16:38:05.203 D/StrictMode( 8940): at org.yaml.snakeyaml.scanner.ScannerImpl.scanPlain(ScannerImpl.java:1999) +06-02 16:38:05.203 D/StrictMode( 8940): at org.yaml.snakeyaml.scanner.ScannerImpl.fetchPlain(ScannerImpl.java:1044) +06-02 16:38:05.203 D/StrictMode( 8940): at org.yaml.snakeyaml.scanner.ScannerImpl.fetchMoreTokens(ScannerImpl.java:399) +06-02 16:38:05.203 D/StrictMode( 8940): at org.yaml.snakeyaml.scanner.ScannerImpl.checkToken(ScannerImpl.java:227) +06-02 16:38:05.203 D/StrictMode( 8940): at org.yaml.snakeyaml.parser.ParserImpl$ParseBlockSequenceEntry.produce(ParserImpl.java:504) +06-02 16:38:05.203 D/StrictMode( 8940): at org.yaml.snakeyaml.parser.ParserImpl.peekEvent(ParserImpl.java:158) +06-02 16:38:05.203 D/StrictMode( 8940): at org.yaml.snakeyaml.parser.ParserImpl.checkEvent(ParserImpl.java:148) +06-02 16:38:05.203 D/StrictMode( 8940): at org.yaml.snakeyaml.composer.Composer.composeSequenceNode(Composer.java:188) +06-02 16:38:05.203 D/StrictMode( 8940): at org.yaml.snakeyaml.composer.Composer.composeNode(Composer.java:142) +06-02 16:38:05.203 D/StrictMode( 8940): at org.yaml.snakeyaml.composer.Composer.composeValueNode(Composer.java:236) +06-02 16:38:05.203 D/StrictMode( 8940): at org.yaml.snakeyaml.composer.Composer.composeMappingChildren(Composer.java:227) +06-02 16:38:05.203 D/StrictMode( 8940): at org.yaml.snakeyaml.composer.Composer.composeMappingNode(Composer.java:215) +06-02 16:38:05.203 D/StrictMode( 8940): at org.yaml.snakeyaml.composer.Composer.composeNode(Composer.java:144) +06-02 16:38:05.203 D/StrictMode( 8940): at org.yaml.snakeyaml.composer.Composer.getNode(Composer.java:85) +06-02 16:38:05.203 D/StrictMode( 8940): at org.yaml.snakeyaml.composer.Composer.getSingleNode(Composer.java:108) +06-02 16:38:05.203 D/StrictMode( 8940): at org.yaml.snakeyaml.constructor.BaseConstructor.getSingleData(BaseConstructor.java:141) +06-02 16:38:05.203 D/StrictMode( 8940): at org.yaml.snakeyaml.Yaml.loadFromReader(Yaml.java:525) +06-02 16:38:05.203 D/StrictMode( 8940): at org.yaml.snakeyaml.Yaml.load(Yaml.java:453) +06-02 16:38:05.203 D/StrictMode( 8940): at org.mozilla.gecko.util.DebugConfig.fromFile(DebugConfig.java:51) +06-02 16:38:05.203 D/StrictMode( 8940): at org.mozilla.geckoview.GeckoRuntime.init(GeckoRuntime.java:363) +06-02 16:38:05.203 D/StrictMode( 8940): at org.mozilla.geckoview.GeckoRuntime.create(GeckoRuntime.java:574) +06-02 16:38:05.203 D/StrictMode( 8940): at GeckoProvider.createRuntime(GeckoProvider.kt:58) +06-02 16:38:05.203 D/StrictMode( 8940): at GeckoProvider.getOrCreateRuntime(GeckoProvider.kt:28) +06-02 16:38:05.203 D/StrictMode( 8940): at org.mozilla.fenix.components.Core$engine$2.invoke(Core.kt:79) +06-02 16:38:05.203 D/StrictMode( 8940): at org.mozilla.fenix.components.Core$engine$2.invoke(Core.kt:57) +06-02 16:38:05.203 D/StrictMode( 8940): at kotlin.SynchronizedLazyImpl.getValue(LazyJVM.kt:74) +06-02 16:38:05.203 D/StrictMode( 8940): at org.mozilla.fenix.components.Core.getEngine(Unknown Source:7) +06-02 16:38:05.203 D/StrictMode( 8940): at org.mozilla.fenix.FenixApplication.setupInMainProcessOnly(FenixApplication.kt:128) +06-02 16:38:05.203 D/StrictMode( 8940): at org.mozilla.fenix.FenixApplication.onCreate(FenixApplication.kt:90) +06-02 16:38:05.203 D/StrictMode( 8940): at android.app.Instrumentation.callApplicationOnCreate(Instrumentation.java:1154) +06-02 16:38:05.203 D/StrictMode( 8940): at android.app.ActivityThread.handleBindApplication(ActivityThread.java:5871) +06-02 16:38:05.203 D/StrictMode( 8940): at android.app.ActivityThread.access$1100(ActivityThread.java:199) +06-02 16:38:05.203 D/StrictMode( 8940): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1650) +06-02 16:38:05.203 D/StrictMode( 8940): at android.os.Handler.dispatchMessage(Handler.java:106) +06-02 16:38:05.203 D/StrictMode( 8940): at android.os.Looper.loop(Looper.java:193) +06-02 16:38:05.203 D/StrictMode( 8940): at android.app.ActivityThread.main(ActivityThread.java:6669) +06-02 16:38:05.203 D/StrictMode( 8940): at java.lang.reflect.Method.invoke(Native Method) +06-02 16:38:05.203 D/StrictMode( 8940): at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:493) +06-02 16:38:05.203 D/StrictMode( 8940): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:858) +06-02 16:38:05.205 D/StrictMode( 8940): StrictMode policy violation; ~duration=266 ms: android.os.strictmode.DiskReadViolation +06-02 16:38:05.205 D/StrictMode( 8940): at android.os.StrictMode$AndroidBlockGuardPolicy.onReadFromDisk(StrictMode.java:1504) +06-02 16:38:05.205 D/StrictMode( 8940): at java.io.UnixFileSystem.checkAccess(UnixFileSystem.java:251) +06-02 16:38:05.205 D/StrictMode( 8940): at java.io.File.exists(File.java:815) +06-02 16:38:05.205 D/StrictMode( 8940): at android.app.ContextImpl.ensurePrivateDirExists(ContextImpl.java:605) +06-02 16:38:05.205 D/StrictMode( 8940): at android.app.ContextImpl.ensurePrivateDirExists(ContextImpl.java:596) +06-02 16:38:05.205 D/StrictMode( 8940): at android.app.ContextImpl.getPreferencesDir(ContextImpl.java:552) +06-02 16:38:05.205 D/StrictMode( 8940): at android.app.ContextImpl.getSharedPreferencesPath(ContextImpl.java:747) +06-02 16:38:05.205 D/StrictMode( 8940): at android.app.ContextImpl.getSharedPreferences(ContextImpl.java:400) +06-02 16:38:05.205 D/StrictMode( 8940): at android.content.ContextWrapper.getSharedPreferences(ContextWrapper.java:174) +06-02 16:38:05.205 D/StrictMode( 8940): at mozilla.components.browser.engine.gecko.GeckoEngine.<init>(GeckoEngine.kt:68) +06-02 16:38:05.205 D/StrictMode( 8940): at mozilla.components.browser.engine.gecko.GeckoEngine.<init>(GeckoEngine.kt:63) +06-02 16:38:05.205 D/StrictMode( 8940): at org.mozilla.fenix.components.Core$engine$2.invoke(Core.kt:76) +06-02 16:38:05.205 D/StrictMode( 8940): at org.mozilla.fenix.components.Core$engine$2.invoke(Core.kt:57) +06-02 16:38:05.205 D/StrictMode( 8940): at kotlin.SynchronizedLazyImpl.getValue(LazyJVM.kt:74) +06-02 16:38:05.205 D/StrictMode( 8940): at org.mozilla.fenix.components.Core.getEngine(Unknown Source:7) +06-02 16:38:05.205 D/StrictMode( 8940): at org.mozilla.fenix.FenixApplication.setupInMainProcessOnly(FenixApplication.kt:128) +06-02 16:38:05.205 D/StrictMode( 8940): at org.mozilla.fenix.FenixApplication.onCreate(FenixApplication.kt:90) +06-02 16:38:05.205 D/StrictMode( 8940): at android.app.Instrumentation.callApplicationOnCreate(Instrumentation.java:1154) +06-02 16:38:05.205 D/StrictMode( 8940): at android.app.ActivityThread.handleBindApplication(ActivityThread.java:5871) +06-02 16:38:05.205 D/StrictMode( 8940): at android.app.ActivityThread.access$1100(ActivityThread.java:199) +06-02 16:38:05.205 D/StrictMode( 8940): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1650) +06-02 16:38:05.205 D/StrictMode( 8940): at android.os.Handler.dispatchMessage(Handler.java:106) +06-02 16:38:05.205 D/StrictMode( 8940): at android.os.Looper.loop(Looper.java:193) +06-02 16:38:05.205 D/StrictMode( 8940): at android.app.ActivityThread.main(ActivityThread.java:6669) +06-02 16:38:05.205 D/StrictMode( 8940): at java.lang.reflect.Method.invoke(Native Method) +06-02 16:38:05.205 D/StrictMode( 8940): at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:493) +06-02 16:38:05.205 D/StrictMode( 8940): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:858) +06-02 16:38:05.205 I/ActivityManager( 1869): Start proc 8988:org.mozilla.fenix.debug:tab0/u0a99 for service org.mozilla.fenix.debug/org.mozilla.gecko.process.GeckoChildProcessServices$tab0 +06-02 16:38:05.206 D/StrictMode( 8940): StrictMode policy violation; ~duration=112 ms: android.os.strictmode.DiskReadViolation +06-02 16:38:05.206 D/StrictMode( 8940): at android.os.StrictMode$AndroidBlockGuardPolicy.onReadFromDisk(StrictMode.java:1504) +06-02 16:38:05.206 D/StrictMode( 8940): at java.io.UnixFileSystem.checkAccess(UnixFileSystem.java:251) +06-02 16:38:05.206 D/StrictMode( 8940): at java.io.File.exists(File.java:815) +06-02 16:38:05.206 D/StrictMode( 8940): at android.app.ContextImpl.ensurePrivateDirExists(ContextImpl.java:605) +06-02 16:38:05.206 D/StrictMode( 8940): at android.app.ContextImpl.ensurePrivateDirExists(ContextImpl.java:596) +06-02 16:38:05.206 D/StrictMode( 8940): at android.app.ContextImpl.getPreferencesDir(ContextImpl.java:552) +06-02 16:38:05.206 D/StrictMode( 8940): at android.app.ContextImpl.getSharedPreferencesPath(ContextImpl.java:747) +06-02 16:38:05.206 D/StrictMode( 8940): at android.app.ContextImpl.getSharedPreferences(ContextImpl.java:400) +06-02 16:38:05.206 D/StrictMode( 8940): at android.content.ContextWrapper.getSharedPreferences(ContextWrapper.java:174) +06-02 16:38:05.206 D/StrictMode( 8940): at androidx.preference.PreferenceManager.getDefaultSharedPreferences(PreferenceManager.java:119) +06-02 16:38:05.206 D/StrictMode( 8940): at org.mozilla.fenix.DebugFenixApplication.setupLeakCanary(DebugFenixApplication.kt:15) +06-02 16:38:05.206 D/StrictMode( 8940): at org.mozilla.fenix.FenixApplication.setupInMainProcessOnly(FenixApplication.kt:140) +06-02 16:38:05.206 D/StrictMode( 8940): at org.mozilla.fenix.FenixApplication.onCreate(FenixApplication.kt:90) +06-02 16:38:05.206 D/StrictMode( 8940): at android.app.Instrumentation.callApplicationOnCreate(Instrumentation.java:1154) +06-02 16:38:05.206 D/StrictMode( 8940): at android.app.ActivityThread.handleBindApplication(ActivityThread.java:5871) +06-02 16:38:05.206 D/StrictMode( 8940): at android.app.ActivityThread.access$1100(ActivityThread.java:199) +06-02 16:38:05.206 D/StrictMode( 8940): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1650) +06-02 16:38:05.206 D/StrictMode( 8940): at android.os.Handler.dispatchMessage(Handler.java:106) +06-02 16:38:05.206 D/StrictMode( 8940): at android.os.Looper.loop(Looper.java:193) +06-02 16:38:05.206 D/StrictMode( 8940): at android.app.ActivityThread.main(ActivityThread.java:6669) +06-02 16:38:05.206 D/StrictMode( 8940): at java.lang.reflect.Method.invoke(Native Method) +06-02 16:38:05.206 D/StrictMode( 8940): at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:493) +06-02 16:38:05.206 D/StrictMode( 8940): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:858) +06-02 16:38:05.207 D/StrictMode( 8940): StrictMode policy violation; ~duration=110 ms: android.os.strictmode.DiskReadViolation +06-02 16:38:05.207 D/StrictMode( 8940): at android.os.StrictMode$AndroidBlockGuardPolicy.onReadFromDisk(StrictMode.java:1504) +06-02 16:38:05.207 D/StrictMode( 8940): at android.app.SharedPreferencesImpl.awaitLoadedLocked(SharedPreferencesImpl.java:256) +06-02 16:38:05.207 D/StrictMode( 8940): at android.app.SharedPreferencesImpl.getBoolean(SharedPreferencesImpl.java:325) +06-02 16:38:05.207 D/StrictMode( 8940): at org.mozilla.fenix.DebugFenixApplication.setupLeakCanary(DebugFenixApplication.kt:16) +06-02 16:38:05.207 D/StrictMode( 8940): at org.mozilla.fenix.FenixApplication.setupInMainProcessOnly(FenixApplication.kt:140) +06-02 16:38:05.207 D/StrictMode( 8940): at org.mozilla.fenix.FenixApplication.onCreate(FenixApplication.kt:90) +06-02 16:38:05.207 D/StrictMode( 8940): at android.app.Instrumentation.callApplicationOnCreate(Instrumentation.java:1154) +06-02 16:38:05.207 D/StrictMode( 8940): at android.app.ActivityThread.handleBindApplication(ActivityThread.java:5871) +06-02 16:38:05.207 D/StrictMode( 8940): at android.app.ActivityThread.access$1100(ActivityThread.java:199) +06-02 16:38:05.207 D/StrictMode( 8940): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1650) +06-02 16:38:05.207 D/StrictMode( 8940): at android.os.Handler.dispatchMessage(Handler.java:106) +06-02 16:38:05.207 D/StrictMode( 8940): at android.os.Looper.loop(Looper.java:193) +06-02 16:38:05.207 D/StrictMode( 8940): at android.app.ActivityThread.main(ActivityThread.java:6669) +06-02 16:38:05.207 D/StrictMode( 8940): at java.lang.reflect.Method.invoke(Native Method) +06-02 16:38:05.207 D/StrictMode( 8940): at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:493) +06-02 16:38:05.207 D/StrictMode( 8940): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:858) +06-02 16:38:05.262 W/enix.debug:tab( 8988): Unexpected CPU variant for X86 using defaults: x86 +06-02 16:38:05.304 W/lla.fenix.debu( 8940): Accessing hidden method Landroid/content/res/Resources$Theme;->rebase()V (dark greylist, reflection) +06-02 16:38:05.309 D/StrictMode( 8940): StrictMode policy violation: android.os.strictmode.NonSdkApiUsedViolation: Landroid/content/res/Resources$Theme;->rebase()V +06-02 16:38:05.309 D/StrictMode( 8940): at android.os.StrictMode.lambda$static$1(StrictMode.java:428) +06-02 16:38:05.309 D/StrictMode( 8940): at android.os.-$$Lambda$StrictMode$lu9ekkHJ2HMz0jd3F8K8MnhenxQ.accept(Unknown Source:2) +06-02 16:38:05.309 D/StrictMode( 8940): at java.lang.Class.getDeclaredMethodInternal(Native Method) +06-02 16:38:05.309 D/StrictMode( 8940): at java.lang.Class.getMethod(Class.java:2064) +06-02 16:38:05.309 D/StrictMode( 8940): at java.lang.Class.getDeclaredMethod(Class.java:2047) +06-02 16:38:05.309 D/StrictMode( 8940): at androidx.core.content.res.ResourcesCompat$ThemeCompat$ImplApi23.rebase(ResourcesCompat.java:501) +06-02 16:38:05.309 D/StrictMode( 8940): at androidx.core.content.res.ResourcesCompat$ThemeCompat.rebase(ResourcesCompat.java:477) +06-02 16:38:05.309 D/StrictMode( 8940): at androidx.appcompat.app.AppCompatDelegateImpl.attachBaseContext2(AppCompatDelegateImpl.java:465) +06-02 16:38:05.309 D/StrictMode( 8940): at androidx.appcompat.app.AppCompatActivity.attachBaseContext(AppCompatActivity.java:107) +06-02 16:38:05.309 D/StrictMode( 8940): at mozilla.components.support.locale.LocaleAwareAppCompatActivity.attachBaseContext(LocaleAwareAppCompatActivity.kt:19) +06-02 16:38:05.309 D/StrictMode( 8940): at android.app.Activity.attach(Activity.java:7051) +06-02 16:38:05.309 D/StrictMode( 8940): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2873) +06-02 16:38:05.309 D/StrictMode( 8940): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3048) +06-02 16:38:05.309 D/StrictMode( 8940): at android.app.servertransaction.LaunchActivityItem.execute(LaunchActivityItem.java:78) +06-02 16:38:05.309 D/StrictMode( 8940): at android.app.servertransaction.TransactionExecutor.executeCallbacks(TransactionExecutor.java:108) +06-02 16:38:05.309 D/StrictMode( 8940): at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:68) +06-02 16:38:05.309 D/StrictMode( 8940): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1808) +06-02 16:38:05.309 D/StrictMode( 8940): at android.os.Handler.dispatchMessage(Handler.java:106) +06-02 16:38:05.309 D/StrictMode( 8940): at android.os.Looper.loop(Looper.java:193) +06-02 16:38:05.309 D/StrictMode( 8940): at android.app.ActivityThread.main(ActivityThread.java:6669) +06-02 16:38:05.309 D/StrictMode( 8940): at java.lang.reflect.Method.invoke(Native Method) +06-02 16:38:05.309 D/StrictMode( 8940): at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:493) +06-02 16:38:05.309 D/StrictMode( 8940): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:858) +06-02 16:38:05.314 I/ResourcesCompat( 8940): Failed to retrieve rebase() method +06-02 16:38:05.314 I/ResourcesCompat( 8940): java.lang.NoSuchMethodException: rebase [] +06-02 16:38:05.314 I/ResourcesCompat( 8940): at java.lang.Class.getMethod(Class.java:2068) +06-02 16:38:05.314 I/ResourcesCompat( 8940): at java.lang.Class.getDeclaredMethod(Class.java:2047) +06-02 16:38:05.314 I/ResourcesCompat( 8940): at androidx.core.content.res.ResourcesCompat$ThemeCompat$ImplApi23.rebase(ResourcesCompat.java:501) +06-02 16:38:05.314 I/ResourcesCompat( 8940): at androidx.core.content.res.ResourcesCompat$ThemeCompat.rebase(ResourcesCompat.java:477) +06-02 16:38:05.314 I/ResourcesCompat( 8940): at androidx.appcompat.app.AppCompatDelegateImpl.attachBaseContext2(AppCompatDelegateImpl.java:465) +06-02 16:38:05.314 I/ResourcesCompat( 8940): at androidx.appcompat.app.AppCompatActivity.attachBaseContext(AppCompatActivity.java:107) +06-02 16:38:05.314 I/ResourcesCompat( 8940): at mozilla.components.support.locale.LocaleAwareAppCompatActivity.attachBaseContext(LocaleAwareAppCompatActivity.kt:19) +06-02 16:38:05.314 I/ResourcesCompat( 8940): at android.app.Activity.attach(Activity.java:7051) +06-02 16:38:05.314 I/ResourcesCompat( 8940): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2873) +06-02 16:38:05.314 I/ResourcesCompat( 8940): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3048) +06-02 16:38:05.314 I/ResourcesCompat( 8940): at android.app.servertransaction.LaunchActivityItem.execute(LaunchActivityItem.java:78) +06-02 16:38:05.314 I/ResourcesCompat( 8940): at android.app.servertransaction.TransactionExecutor.executeCallbacks(TransactionExecutor.java:108) +06-02 16:38:05.314 I/ResourcesCompat( 8940): at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:68) +06-02 16:38:05.314 I/ResourcesCompat( 8940): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1808) +06-02 16:38:05.314 I/ResourcesCompat( 8940): at android.os.Handler.dispatchMessage(Handler.java:106) +06-02 16:38:05.314 I/ResourcesCompat( 8940): at android.os.Looper.loop(Looper.java:193) +06-02 16:38:05.314 I/ResourcesCompat( 8940): at android.app.ActivityThread.main(ActivityThread.java:6669) +06-02 16:38:05.314 I/ResourcesCompat( 8940): at java.lang.reflect.Method.invoke(Native Method) +06-02 16:38:05.314 I/ResourcesCompat( 8940): at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:493) +06-02 16:38:05.314 I/ResourcesCompat( 8940): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:858) +06-02 16:38:05.335 I/enix.debug:tab( 8988): The ClassLoaderContext is a special shared library. +06-02 16:38:05.356 W/lla.fenix.debu( 8940): Accessing hidden method Landroid/graphics/drawable/Drawable;->getOpticalInsets()Landroid/graphics/Insets; (light greylist, linking) +06-02 16:38:05.356 W/lla.fenix.debu( 8940): Accessing hidden field Landroid/graphics/Insets;->left:I (light greylist, linking) +06-02 16:38:05.357 W/lla.fenix.debu( 8940): Accessing hidden field Landroid/graphics/Insets;->right:I (light greylist, linking) +06-02 16:38:05.357 W/lla.fenix.debu( 8940): Accessing hidden field Landroid/graphics/Insets;->top:I (light greylist, linking) +06-02 16:38:05.357 W/lla.fenix.debu( 8940): Accessing hidden field Landroid/graphics/Insets;->bottom:I (light greylist, linking) +06-02 16:38:05.361 D/GeckoViewStartup( 8940): observe: app-startup +06-02 16:38:05.391 D/GeckoViewConsole( 8940): enabled = true +06-02 16:38:05.453 W/lla.fenix.debu( 8940): Accessing hidden method Landroid/view/View;->getAccessibilityDelegate()Landroid/view/View$AccessibilityDelegate; (light greylist, linking) +06-02 16:38:05.461 W/lla.fenix.debu( 8940): Accessing hidden method Landroid/view/View;->computeFitSystemWindows(Landroid/graphics/Rect;Landroid/graphics/Rect;)Z (light greylist, reflection) +06-02 16:38:05.466 D/StrictMode( 8940): StrictMode policy violation: android.os.strictmode.NonSdkApiUsedViolation: Landroid/view/View;->computeFitSystemWindows(Landroid/graphics/Rect;Landroid/graphics/Rect;)Z +06-02 16:38:05.466 D/StrictMode( 8940): at android.os.StrictMode.lambda$static$1(StrictMode.java:428) +06-02 16:38:05.466 D/StrictMode( 8940): at android.os.-$$Lambda$StrictMode$lu9ekkHJ2HMz0jd3F8K8MnhenxQ.accept(Unknown Source:2) +06-02 16:38:05.466 D/StrictMode( 8940): at java.lang.Class.getDeclaredMethodInternal(Native Method) +06-02 16:38:05.466 D/StrictMode( 8940): at java.lang.Class.getMethod(Class.java:2064) +06-02 16:38:05.466 D/StrictMode( 8940): at java.lang.Class.getDeclaredMethod(Class.java:2047) +06-02 16:38:05.466 D/StrictMode( 8940): at androidx.appcompat.widget.ViewUtils.<clinit>(ViewUtils.java:44) +06-02 16:38:05.466 D/StrictMode( 8940): at androidx.appcompat.widget.ViewUtils.makeOptionalFitsSystemWindows(ViewUtils.java:80) +06-02 16:38:05.466 D/StrictMode( 8940): at androidx.appcompat.app.AppCompatDelegateImpl.createSubDecor(AppCompatDelegateImpl.java:970) +06-02 16:38:05.466 D/StrictMode( 8940): at androidx.appcompat.app.AppCompatDelegateImpl.ensureSubDecor(AppCompatDelegateImpl.java:803) +06-02 16:38:05.466 D/StrictMode( 8940): at androidx.appcompat.app.AppCompatDelegateImpl.setContentView(AppCompatDelegateImpl.java:692) +06-02 16:38:05.466 D/StrictMode( 8940): at androidx.appcompat.app.AppCompatActivity.setContentView(AppCompatActivity.java:170) +06-02 16:38:05.466 D/StrictMode( 8940): at org.mozilla.fenix.HomeActivity.onCreate(HomeActivity.kt:130) +06-02 16:38:05.466 D/StrictMode( 8940): at android.app.Activity.performCreate(Activity.java:7136) +06-02 16:38:05.466 D/StrictMode( 8940): at android.app.Activity.performCreate(Activity.java:7127) +06-02 16:38:05.466 D/StrictMode( 8940): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1271) +06-02 16:38:05.466 D/StrictMode( 8940): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2893) +06-02 16:38:05.466 D/StrictMode( 8940): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3048) +06-02 16:38:05.466 D/StrictMode( 8940): at android.app.servertransaction.LaunchActivityItem.execute(LaunchActivityItem.java:78) +06-02 16:38:05.466 D/StrictMode( 8940): at android.app.servertransaction.TransactionExecutor.executeCallbacks(TransactionExecutor.java:108) +06-02 16:38:05.466 D/StrictMode( 8940): at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:68) +06-02 16:38:05.466 D/StrictMode( 8940): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1808) +06-02 16:38:05.466 D/StrictMode( 8940): at android.os.Handler.dispatchMessage(Handler.java:106) +06-02 16:38:05.466 D/StrictMode( 8940): at android.os.Looper.loop(Looper.java:193) +06-02 16:38:05.466 D/StrictMode( 8940): at android.app.ActivityThread.main(ActivityThread.java:6669) +06-02 16:38:05.466 D/StrictMode( 8940): at java.lang.reflect.Method.invoke(Native Method) +06-02 16:38:05.466 D/StrictMode( 8940): at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:493) +06-02 16:38:05.466 D/StrictMode( 8940): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:858) +06-02 16:38:05.468 W/lla.fenix.debu( 8940): Accessing hidden method Landroid/view/ViewGroup;->makeOptionalFitsSystemWindows()V (light greylist, reflection) +06-02 16:38:05.470 D/StrictMode( 8940): StrictMode policy violation: android.os.strictmode.NonSdkApiUsedViolation: Landroid/view/ViewGroup;->makeOptionalFitsSystemWindows()V +06-02 16:38:05.470 D/StrictMode( 8940): at android.os.StrictMode.lambda$static$1(StrictMode.java:428) +06-02 16:38:05.470 D/StrictMode( 8940): at android.os.-$$Lambda$StrictMode$lu9ekkHJ2HMz0jd3F8K8MnhenxQ.accept(Unknown Source:2) +06-02 16:38:05.470 D/StrictMode( 8940): at java.lang.Class.getDeclaredMethodInternal(Native Method) +06-02 16:38:05.470 D/StrictMode( 8940): at java.lang.Class.getPublicMethodRecursive(Class.java:2075) +06-02 16:38:05.470 D/StrictMode( 8940): at java.lang.Class.getMethod(Class.java:2063) +06-02 16:38:05.470 D/StrictMode( 8940): at java.lang.Class.getMethod(Class.java:1690) +06-02 16:38:05.470 D/StrictMode( 8940): at androidx.appcompat.widget.ViewUtils.makeOptionalFitsSystemWindows(ViewUtils.java:84) +06-02 16:38:05.470 D/StrictMode( 8940): at androidx.appcompat.app.AppCompatDelegateImpl.createSubDecor(AppCompatDelegateImpl.java:970) +06-02 16:38:05.470 D/StrictMode( 8940): at androidx.appcompat.app.AppCompatDelegateImpl.ensureSubDecor(AppCompatDelegateImpl.java:803) +06-02 16:38:05.470 D/StrictMode( 8940): at androidx.appcompat.app.AppCompatDelegateImpl.setContentView(AppCompatDelegateImpl.java:692) +06-02 16:38:05.470 D/StrictMode( 8940): at androidx.appcompat.app.AppCompatActivity.setContentView(AppCompatActivity.java:170) +06-02 16:38:05.470 D/StrictMode( 8940): at org.mozilla.fenix.HomeActivity.onCreate(HomeActivity.kt:130) +06-02 16:38:05.470 D/StrictMode( 8940): at android.app.Activity.performCreate(Activity.java:7136) +06-02 16:38:05.470 D/StrictMode( 8940): at android.app.Activity.performCreate(Activity.java:7127) +06-02 16:38:05.470 D/StrictMode( 8940): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1271) +06-02 16:38:05.470 D/StrictMode( 8940): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2893) +06-02 16:38:05.470 D/StrictMode( 8940): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3048) +06-02 16:38:05.470 D/StrictMode( 8940): at android.app.servertransaction.LaunchActivityItem.execute(LaunchActivityItem.java:78) +06-02 16:38:05.470 D/StrictMode( 8940): at android.app.servertransaction.TransactionExecutor.executeCallbacks(TransactionExecutor.java:108) +06-02 16:38:05.470 D/StrictMode( 8940): at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:68) +06-02 16:38:05.470 D/StrictMode( 8940): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1808) +06-02 16:38:05.470 D/StrictMode( 8940): at android.os.Handler.dispatchMessage(Handler.java:106) +06-02 16:38:05.470 D/StrictMode( 8940): at android.os.Looper.loop(Looper.java:193) +06-02 16:38:05.470 D/StrictMode( 8940): at android.app.ActivityThread.main(ActivityThread.java:6669) +06-02 16:38:05.470 D/StrictMode( 8940): at java.lang.reflect.Method.invoke(Native Method) +06-02 16:38:05.470 D/StrictMode( 8940): at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:493) +06-02 16:38:05.470 D/StrictMode( 8940): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:858) +06-02 16:38:05.546 I/GeckoConsole( 8940): No chrome package registered for chrome://browser/content/built_in_addons.json +06-02 16:38:05.598 I/AJC ( 8940): isPerformanceTest +06-02 16:38:05.601 I/AJC ( 8940): isPerformanceTest : isPhonePlugged: true +06-02 16:38:05.601 I/AJC ( 8940): isPerformanceTest : isAdbEnabled: true +06-02 16:38:05.606 D/App ( 8940): DebugMetricController: track event: org.mozilla.fenix.components.metrics.Event$DismissedOnboarding@6354493 +06-02 16:38:05.893 W/lla.fenix.debu( 8940): Accessing hidden method Landroid/graphics/FontFamily;-><init>()V (light greylist, reflection) +06-02 16:38:05.900 D/StrictMode( 8940): StrictMode policy violation: android.os.strictmode.NonSdkApiUsedViolation: Landroid/graphics/FontFamily;-><init>()V +06-02 16:38:05.900 D/StrictMode( 8940): at android.os.StrictMode.lambda$static$1(StrictMode.java:428) +06-02 16:38:05.900 D/StrictMode( 8940): at android.os.-$$Lambda$StrictMode$lu9ekkHJ2HMz0jd3F8K8MnhenxQ.accept(Unknown Source:2) +06-02 16:38:05.900 D/StrictMode( 8940): at java.lang.Class.getDeclaredConstructorInternal(Native Method) +06-02 16:38:05.900 D/StrictMode( 8940): at java.lang.Class.getConstructor0(Class.java:2325) +06-02 16:38:05.900 D/StrictMode( 8940): at java.lang.Class.getConstructor(Class.java:1725) +06-02 16:38:05.900 D/StrictMode( 8940): at androidx.core.graphics.TypefaceCompatApi26Impl.obtainFontFamilyCtor(TypefaceCompatApi26Impl.java:321) +06-02 16:38:05.900 D/StrictMode( 8940): at androidx.core.graphics.TypefaceCompatApi26Impl.<init>(TypefaceCompatApi26Impl.java:84) +06-02 16:38:05.900 D/StrictMode( 8940): at androidx.core.graphics.TypefaceCompatApi28Impl.<init>(TypefaceCompatApi28Impl.java:36) +06-02 16:38:05.900 D/StrictMode( 8940): at androidx.core.graphics.TypefaceCompat.<clinit>(TypefaceCompat.java:51) +06-02 16:38:05.900 D/StrictMode( 8940): at androidx.core.graphics.TypefaceCompat.create(TypefaceCompat.java:194) +06-02 16:38:05.900 D/StrictMode( 8940): at androidx.appcompat.widget.AppCompatTextView.setTypeface(AppCompatTextView.java:708) +06-02 16:38:05.900 D/StrictMode( 8940): at android.widget.TextView.resolveStyleAndSetTypeface(TextView.java:2037) +06-02 16:38:05.900 D/StrictMode( 8940): at android.widget.TextView.setTypefaceFromAttrs(TextView.java:2008) +06-02 16:38:05.900 D/StrictMode( 8940): at android.widget.TextView.applyTextAppearance(TextView.java:3640) +06-02 16:38:05.900 D/StrictMode( 8940): at android.widget.TextView.<init>(TextView.java:1498) +06-02 16:38:05.900 D/StrictMode( 8940): at android.widget.TextView.<init>(TextView.java:869) +06-02 16:38:05.900 D/StrictMode( 8940): at androidx.appcompat.widget.AppCompatTextView.<init>(AppCompatTextView.java:100) +06-02 16:38:05.900 D/StrictMode( 8940): at androidx.appcompat.widget.AppCompatTextView.<init>(AppCompatTextView.java:95) +06-02 16:38:05.900 D/StrictMode( 8940): at androidx.appcompat.app.AppCompatViewInflater.createTextView(AppCompatViewInflater.java:194) +06-02 16:38:05.900 D/StrictMode( 8940): at androidx.appcompat.app.AppCompatViewInflater.createView(AppCompatViewInflater.java:115) +06-02 16:38:05.900 D/StrictMode( 8940): at androidx.appcompat.app.AppCompatDelegateImpl.createView(AppCompatDelegateImpl.java:1548) +06-02 16:38:05.900 D/StrictMode( 8940): at androidx.appcompat.app.AppCompatDelegateImpl.onCreateView(AppCompatDelegateImpl.java:1599) +06-02 16:38:05.900 D/StrictMode( 8940): at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:772) +06-02 16:38:05.900 D/StrictMode( 8940): at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:730) +06-02 16:38:05.900 D/StrictMode( 8940): at android.view.LayoutInflater.rInflate(LayoutInflater.java:863) +06-02 16:38:05.900 D/StrictMode( 8940): at android.view.LayoutInflater.rInflateChildren(LayoutInflater.java:824) +06-02 16:38:05.900 D/StrictMode( 8940): at android.view.LayoutInflater.rInflate(LayoutInflater.java:866) +06-02 16:38:05.900 D/StrictMode( 8940): at android.view.LayoutInflater.inflate(LayoutInflater.java:489) +06-02 16:38:05.900 D/StrictMode( 8940): at android.view.LayoutInflater.inflate(LayoutInflater.java:423) +06-02 16:38:05.900 D/StrictMode( 8940): at android.view.LayoutInflater.inflate(LayoutInflater.java:374) +06-02 16:38:05.900 D/StrictMode( 8940): at org.mozilla.fenix.components.toolbar.TabCounter.<init>(TabCounter.kt:30) +06-02 16:38:05.900 D/StrictMode( 8940): at org.mozilla.fenix.components.toolbar.TabCounter.<init>(TabCounter.kt:22) +06-02 16:38:05.900 D/StrictMode( 8940): at org.mozilla.fenix.components.toolbar.TabCounter.<init>(Unknown Source:6) +06-02 16:38:05.900 D/StrictMode( 8940): at java.lang.reflect.Constructor.newInstance0(Native Method) +06-02 16:38:05.900 D/StrictMode( 8940): at java.lang.reflect.Constructor.newInstance(Constructor.java:343) +06-02 16:38:05.900 D/StrictMode( 8940): at android.view.LayoutInflater.createView(LayoutInflater.java:647) +06-02 16:38:05.900 D/StrictMode( 8940): at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:790) +06-02 16:38:05.900 D/StrictMode( 8940): at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:730) +06-02 16:38:05.900 D/StrictMode( 8940): at android.view.LayoutInflater.rInflate(LayoutInflater.java:863) +06-02 16:38:05.900 D/StrictMode( 8940): at android.view.LayoutInflater.rInflateChildren(LayoutInflater.java:824) +06-02 16:38:05.900 D/StrictMode( 8940): at android.view.LayoutInflater.rInflate(LayoutInflater.java:866) +06-02 16:38:05.900 D/StrictMode( 8940): at android.view.LayoutInflater.rInflateChildren(LayoutInflater.java:824) +06-02 16:38:05.900 D/StrictMode( 8940): at android.view.LayoutInflater.inflate(LayoutInflater.java:515) +06-02 16:38:05.900 D/StrictMode( 8940): at android.view.LayoutInflater.inflate(LayoutInflater.java:423) +06-02 16:38:05.900 D/StrictMode( 8940): at org.mozilla.fenix.home.HomeFragment.onCreateView(HomeFragment.kt:183) +06-02 16:38:05.900 D/StrictMode( 8940): at androidx.fragment.app.Fragment.performCreateView(Fragment.java:2698) +06-02 16:38:05.900 D/StrictMode( 8940): at androidx.fragment.app.FragmentStateManager.createView(FragmentStateManager.java:320) +06-02 16:38:05.900 D/StrictMode( 8940): at androidx.fragment.app.FragmentManager.moveToState(FragmentManager.java:1187) +06-02 16:38:05.900 D/StrictMode( 8940): at androidx.fragment.app.FragmentManager.addAddedFragments(FragmentManager.java:2224) +06-02 16:38:05.900 D/StrictMode( 8940): at androidx.fragment.app.FragmentManager.executeOpsTogether(FragmentManager.java:1997) +06-02 16:38:05.900 D/StrictMode( 8940): at androidx.fragment.app.FragmentManager.removeRedundantOperationsAndExecute(FragmentManager.java:1953) +06-02 16:38:05.900 D/StrictMode( 8940): at androidx.fragment.app.FragmentManager.execPendingActions(FragmentManager.java:1849) +06-02 16:38:05.900 D/StrictMode( 8940): at +06-02 16:38:05.901 W/lla.fenix.debu( 8940): Accessing hidden method Landroid/graphics/FontFamily;->addFontFromAssetManager(Landroid/content/res/AssetManager;Ljava/lang/String;IZIII[Landroid/graphics/fonts/FontVariationAxis;)Z (light greylist, reflection) +06-02 16:38:05.914 D/StrictMode( 8940): StrictMode policy violation: android.os.strictmode.NonSdkApiUsedViolation: Landroid/graphics/FontFamily;->addFontFromAssetManager(Landroid/content/res/AssetManager;Ljava/lang/String;IZIII[Landroid/graphics/fonts/FontVariationAxis;)Z +06-02 16:38:05.914 D/StrictMode( 8940): at android.os.StrictMode.lambda$static$1(StrictMode.java:428) +06-02 16:38:05.914 D/StrictMode( 8940): at android.os.-$$Lambda$StrictMode$lu9ekkHJ2HMz0jd3F8K8MnhenxQ.accept(Unknown Source:2) +06-02 16:38:05.914 D/StrictMode( 8940): at java.lang.Class.getDeclaredMethodInternal(Native Method) +06-02 16:38:05.914 D/StrictMode( 8940): at java.lang.Class.getPublicMethodRecursive(Class.java:2075) +06-02 16:38:05.914 D/StrictMode( 8940): at java.lang.Class.getMethod(Class.java:2063) +06-02 16:38:05.914 D/StrictMode( 8940): at java.lang.Class.getMethod(Class.java:1690) +06-02 16:38:05.914 D/StrictMode( 8940): at androidx.core.graphics.TypefaceCompatApi26Impl.obtainAddFontFromAssetManagerMethod(TypefaceCompatApi26Impl.java:326) +06-02 16:38:05.914 D/StrictMode( 8940): at androidx.core.graphics.TypefaceCompatApi26Impl.<init>(TypefaceCompatApi26Impl.java:85) +06-02 16:38:05.914 D/StrictMode( 8940): at androidx.core.graphics.TypefaceCompatApi28Impl.<init>(TypefaceCompatApi28Impl.java:36) +06-02 16:38:05.914 D/StrictMode( 8940): at androidx.core.graphics.TypefaceCompat.<clinit>(TypefaceCompat.java:51) +06-02 16:38:05.914 D/StrictMode( 8940): at androidx.core.graphics.TypefaceCompat.create(TypefaceCompat.java:194) +06-02 16:38:05.914 D/StrictMode( 8940): at androidx.appcompat.widget.AppCompatTextView.setTypeface(AppCompatTextView.java:708) +06-02 16:38:05.914 D/StrictMode( 8940): at android.widget.TextView.resolveStyleAndSetTypeface(TextView.java:2037) +06-02 16:38:05.914 D/StrictMode( 8940): at android.widget.TextView.setTypefaceFromAttrs(TextView.java:2008) +06-02 16:38:05.914 D/StrictMode( 8940): at android.widget.TextView.applyTextAppearance(TextView.java:3640) +06-02 16:38:05.914 D/StrictMode( 8940): at android.widget.TextView.<init>(TextView.java:1498) +06-02 16:38:05.914 D/StrictMode( 8940): at android.widget.TextView.<init>(TextView.java:869) +06-02 16:38:05.914 D/StrictMode( 8940): at androidx.appcompat.widget.AppCompatTextView.<init>(AppCompatTextView.java:100) +06-02 16:38:05.914 D/StrictMode( 8940): at androidx.appcompat.widget.AppCompatTextView.<init>(AppCompatTextView.java:95) +06-02 16:38:05.914 D/StrictMode( 8940): at androidx.appcompat.app.AppCompatViewInflater.createTextView(AppCompatViewInflater.java:194) +06-02 16:38:05.914 D/StrictMode( 8940): at androidx.appcompat.app.AppCompatViewInflater.createView(AppCompatViewInflater.java:115) +06-02 16:38:05.914 D/StrictMode( 8940): at androidx.appcompat.app.AppCompatDelegateImpl.createView(AppCompatDelegateImpl.java:1548) +06-02 16:38:05.914 D/StrictMode( 8940): at androidx.appcompat.app.AppCompatDelegateImpl.onCreateView(AppCompatDelegateImpl.java:1599) +06-02 16:38:05.914 D/StrictMode( 8940): at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:772) +06-02 16:38:05.914 D/StrictMode( 8940): at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:730) +06-02 16:38:05.914 D/StrictMode( 8940): at android.view.LayoutInflater.rInflate(LayoutInflater.java:863) +06-02 16:38:05.914 D/StrictMode( 8940): at android.view.LayoutInflater.rInflateChildren(LayoutInflater.java:824) +06-02 16:38:05.914 D/StrictMode( 8940): at android.view.LayoutInflater.rInflate(LayoutInflater.java:866) +06-02 16:38:05.914 D/StrictMode( 8940): at android.view.LayoutInflater.inflate(LayoutInflater.java:489) +06-02 16:38:05.914 D/StrictMode( 8940): at android.view.LayoutInflater.inflate(LayoutInflater.java:423) +06-02 16:38:05.914 D/StrictMode( 8940): at android.view.LayoutInflater.inflate(LayoutInflater.java:374) +06-02 16:38:05.914 D/StrictMode( 8940): at org.mozilla.fenix.components.toolbar.TabCounter.<init>(TabCounter.kt:30) +06-02 16:38:05.914 D/StrictMode( 8940): at org.mozilla.fenix.components.toolbar.TabCounter.<init>(TabCounter.kt:22) +06-02 16:38:05.914 D/StrictMode( 8940): at org.mozilla.fenix.components.toolbar.TabCounter.<init>(Unknown Source:6) +06-02 16:38:05.914 D/StrictMode( 8940): at java.lang.reflect.Constructor.newInstance0(Native Method) +06-02 16:38:05.914 D/StrictMode( 8940): at java.lang.reflect.Constructor.newInstance(Constructor.java:343) +06-02 16:38:05.914 D/StrictMode( 8940): at android.view.LayoutInflater.createView(LayoutInflater.java:647) +06-02 16:38:05.914 D/StrictMode( 8940): at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:790) +06-02 16:38:05.914 D/StrictMode( 8940): at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:730) +06-02 16:38:05.914 D/StrictMode( 8940): at android.view.LayoutInflater.rInflate(LayoutInflater.java:863) +06-02 16:38:05.914 D/StrictMode( 8940): at android.view.LayoutInflater.rInflateChildren(LayoutInflater.java:824) +06-02 16:38:05.914 D/StrictMode( 8940): at android.view.LayoutInflater.rInflate(LayoutInflater.java:866) +06-02 16:38:05.914 D/StrictMode( 8940): at android.view.LayoutInflater.rInflateChildren(LayoutInflater.java:824) +06-02 16:38:05.914 D/StrictMode( 8940): at android.view.LayoutInflater.inflate(LayoutInflater.java:515) +06-02 16:38:05.914 D/StrictMode( 8940): at android.view.LayoutInflater.inflate(LayoutInflater.java:423) +06-02 16:38:05.914 D/StrictMode( 8940): at org.mozilla.fenix.home.HomeFragment.onCreateView(HomeFragment.kt:183) +06-02 16:38:05.914 D/StrictMode( 8940): at androidx.fragment.app.Fragment.performCreateView(Fragment.java:2698) +06-02 16:38:05.914 D/StrictMode( 8940): at androidx.fragment.app.FragmentStateManager.createView(FragmentStateManager.java:320) +06-02 16:38:05.914 D/StrictMode( 8940): at androidx.fragment.app.FragmentManager.moveToState(FragmentManager.java:1187) +06-02 16:38:05.914 D/StrictMode( 8940): at androidx.fragment.app.FragmentManager.addAddedFragments(FragmentManager.java:2224) +06-02 16:38:05.914 D/StrictMode( 8940): at androidx.fragment.app.FragmentManager.executeOpsTogether(FragmentManager.java:1997) +06-02 16:38:05.914 D/StrictMode( 8940): at androidx.fragme +06-02 16:38:05.915 W/lla.fenix.debu( 8940): Accessing hidden method Landroid/graphics/FontFamily;->addFontFromBuffer(Ljava/nio/ByteBuffer;I[Landroid/graphics/fonts/FontVariationAxis;II)Z (light greylist, reflection) +06-02 16:38:05.924 D/StrictMode( 8940): StrictMode policy violation: android.os.strictmode.NonSdkApiUsedViolation: Landroid/graphics/FontFamily;->addFontFromBuffer(Ljava/nio/ByteBuffer;I[Landroid/graphics/fonts/FontVariationAxis;II)Z +06-02 16:38:05.924 D/StrictMode( 8940): at android.os.StrictMode.lambda$static$1(StrictMode.java:428) +06-02 16:38:05.924 D/StrictMode( 8940): at android.os.-$$Lambda$StrictMode$lu9ekkHJ2HMz0jd3F8K8MnhenxQ.accept(Unknown Source:2) +06-02 16:38:05.924 D/StrictMode( 8940): at java.lang.Class.getDeclaredMethodInternal(Native Method) +06-02 16:38:05.924 D/StrictMode( 8940): at java.lang.Class.getPublicMethodRecursive(Class.java:2075) +06-02 16:38:05.924 D/StrictMode( 8940): at java.lang.Class.getMethod(Class.java:2063) +06-02 16:38:05.924 D/StrictMode( 8940): at java.lang.Class.getMethod(Class.java:1690) +06-02 16:38:05.924 D/StrictMode( 8940): at androidx.core.graphics.TypefaceCompatApi26Impl.obtainAddFontFromBufferMethod(TypefaceCompatApi26Impl.java:333) +06-02 16:38:05.924 D/StrictMode( 8940): at androidx.core.graphics.TypefaceCompatApi26Impl.<init>(TypefaceCompatApi26Impl.java:86) +06-02 16:38:05.924 D/StrictMode( 8940): at androidx.core.graphics.TypefaceCompatApi28Impl.<init>(TypefaceCompatApi28Impl.java:36) +06-02 16:38:05.924 D/StrictMode( 8940): at androidx.core.graphics.TypefaceCompat.<clinit>(TypefaceCompat.java:51) +06-02 16:38:05.924 D/StrictMode( 8940): at androidx.core.graphics.TypefaceCompat.create(TypefaceCompat.java:194) +06-02 16:38:05.924 D/StrictMode( 8940): at androidx.appcompat.widget.AppCompatTextView.setTypeface(AppCompatTextView.java:708) +06-02 16:38:05.924 D/StrictMode( 8940): at android.widget.TextView.resolveStyleAndSetTypeface(TextView.java:2037) +06-02 16:38:05.924 D/StrictMode( 8940): at android.widget.TextView.setTypefaceFromAttrs(TextView.java:2008) +06-02 16:38:05.924 D/StrictMode( 8940): at android.widget.TextView.applyTextAppearance(TextView.java:3640) +06-02 16:38:05.924 D/StrictMode( 8940): at android.widget.TextView.<init>(TextView.java:1498) +06-02 16:38:05.924 D/StrictMode( 8940): at android.widget.TextView.<init>(TextView.java:869) +06-02 16:38:05.924 D/StrictMode( 8940): at androidx.appcompat.widget.AppCompatTextView.<init>(AppCompatTextView.java:100) +06-02 16:38:05.924 D/StrictMode( 8940): at androidx.appcompat.widget.AppCompatTextView.<init>(AppCompatTextView.java:95) +06-02 16:38:05.924 D/StrictMode( 8940): at androidx.appcompat.app.AppCompatViewInflater.createTextView(AppCompatViewInflater.java:194) +06-02 16:38:05.924 D/StrictMode( 8940): at androidx.appcompat.app.AppCompatViewInflater.createView(AppCompatViewInflater.java:115) +06-02 16:38:05.924 D/StrictMode( 8940): at androidx.appcompat.app.AppCompatDelegateImpl.createView(AppCompatDelegateImpl.java:1548) +06-02 16:38:05.924 D/StrictMode( 8940): at androidx.appcompat.app.AppCompatDelegateImpl.onCreateView(AppCompatDelegateImpl.java:1599) +06-02 16:38:05.924 D/StrictMode( 8940): at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:772) +06-02 16:38:05.924 D/StrictMode( 8940): at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:730) +06-02 16:38:05.924 D/StrictMode( 8940): at android.view.LayoutInflater.rInflate(LayoutInflater.java:863) +06-02 16:38:05.924 D/StrictMode( 8940): at android.view.LayoutInflater.rInflateChildren(LayoutInflater.java:824) +06-02 16:38:05.924 D/StrictMode( 8940): at android.view.LayoutInflater.rInflate(LayoutInflater.java:866) +06-02 16:38:05.924 D/StrictMode( 8940): at android.view.LayoutInflater.inflate(LayoutInflater.java:489) +06-02 16:38:05.924 D/StrictMode( 8940): at android.view.LayoutInflater.inflate(LayoutInflater.java:423) +06-02 16:38:05.924 D/StrictMode( 8940): at android.view.LayoutInflater.inflate(LayoutInflater.java:374) +06-02 16:38:05.924 D/StrictMode( 8940): at org.mozilla.fenix.components.toolbar.TabCounter.<init>(TabCounter.kt:30) +06-02 16:38:05.924 D/StrictMode( 8940): at org.mozilla.fenix.components.toolbar.TabCounter.<init>(TabCounter.kt:22) +06-02 16:38:05.924 D/StrictMode( 8940): at org.mozilla.fenix.components.toolbar.TabCounter.<init>(Unknown Source:6) +06-02 16:38:05.924 D/StrictMode( 8940): at java.lang.reflect.Constructor.newInstance0(Native Method) +06-02 16:38:05.924 D/StrictMode( 8940): at java.lang.reflect.Constructor.newInstance(Constructor.java:343) +06-02 16:38:05.924 D/StrictMode( 8940): at android.view.LayoutInflater.createView(LayoutInflater.java:647) +06-02 16:38:05.924 D/StrictMode( 8940): at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:790) +06-02 16:38:05.924 D/StrictMode( 8940): at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:730) +06-02 16:38:05.924 D/StrictMode( 8940): at android.view.LayoutInflater.rInflate(LayoutInflater.java:863) +06-02 16:38:05.924 D/StrictMode( 8940): at android.view.LayoutInflater.rInflateChildren(LayoutInflater.java:824) +06-02 16:38:05.924 D/StrictMode( 8940): at android.view.LayoutInflater.rInflate(LayoutInflater.java:866) +06-02 16:38:05.924 D/StrictMode( 8940): at android.view.LayoutInflater.rInflateChildren(LayoutInflater.java:824) +06-02 16:38:05.924 D/StrictMode( 8940): at android.view.LayoutInflater.inflate(LayoutInflater.java:515) +06-02 16:38:05.924 D/StrictMode( 8940): at android.view.LayoutInflater.inflate(LayoutInflater.java:423) +06-02 16:38:05.924 D/StrictMode( 8940): at org.mozilla.fenix.home.HomeFragment.onCreateView(HomeFragment.kt:183) +06-02 16:38:05.924 D/StrictMode( 8940): at androidx.fragment.app.Fragment.performCreateView(Fragment.java:2698) +06-02 16:38:05.924 D/StrictMode( 8940): at androidx.fragment.app.FragmentStateManager.createView(FragmentStateManager.java:320) +06-02 16:38:05.924 D/StrictMode( 8940): at androidx.fragment.app.FragmentManager.moveToState(FragmentManager.java:1187) +06-02 16:38:05.924 D/StrictMode( 8940): at androidx.fragment.app.FragmentManager.addAddedFragments(FragmentManager.java:2224) +06-02 16:38:05.924 D/StrictMode( 8940): at androidx.fragment.app.FragmentManager.executeOpsTogether(FragmentManager.java:1997) +06-02 16:38:05.924 D/StrictMode( 8940): at androidx.fragment.app.FragmentManager.removeRedundantOperati +06-02 16:38:05.924 W/lla.fenix.debu( 8940): Accessing hidden method Landroid/graphics/FontFamily;->freeze()Z (light greylist, reflection) +06-02 16:38:05.931 D/StrictMode( 8940): StrictMode policy violation: android.os.strictmode.NonSdkApiUsedViolation: Landroid/graphics/FontFamily;->freeze()Z +06-02 16:38:05.931 D/StrictMode( 8940): at android.os.StrictMode.lambda$static$1(StrictMode.java:428) +06-02 16:38:05.931 D/StrictMode( 8940): at android.os.-$$Lambda$StrictMode$lu9ekkHJ2HMz0jd3F8K8MnhenxQ.accept(Unknown Source:2) +06-02 16:38:05.931 D/StrictMode( 8940): at java.lang.Class.getDeclaredMethodInternal(Native Method) +06-02 16:38:05.931 D/StrictMode( 8940): at java.lang.Class.getPublicMethodRecursive(Class.java:2075) +06-02 16:38:05.931 D/StrictMode( 8940): at java.lang.Class.getMethod(Class.java:2063) +06-02 16:38:05.931 D/StrictMode( 8940): at java.lang.Class.getMethod(Class.java:1690) +06-02 16:38:05.931 D/StrictMode( 8940): at androidx.core.graphics.TypefaceCompatApi26Impl.obtainFreezeMethod(TypefaceCompatApi26Impl.java:339) +06-02 16:38:05.931 D/StrictMode( 8940): at androidx.core.graphics.TypefaceCompatApi26Impl.<init>(TypefaceCompatApi26Impl.java:87) +06-02 16:38:05.931 D/StrictMode( 8940): at androidx.core.graphics.TypefaceCompatApi28Impl.<init>(TypefaceCompatApi28Impl.java:36) +06-02 16:38:05.931 D/StrictMode( 8940): at androidx.core.graphics.TypefaceCompat.<clinit>(TypefaceCompat.java:51) +06-02 16:38:05.931 D/StrictMode( 8940): at androidx.core.graphics.TypefaceCompat.create(TypefaceCompat.java:194) +06-02 16:38:05.931 D/StrictMode( 8940): at androidx.appcompat.widget.AppCompatTextView.setTypeface(AppCompatTextView.java:708) +06-02 16:38:05.931 D/StrictMode( 8940): at android.widget.TextView.resolveStyleAndSetTypeface(TextView.java:2037) +06-02 16:38:05.931 D/StrictMode( 8940): at android.widget.TextView.setTypefaceFromAttrs(TextView.java:2008) +06-02 16:38:05.931 D/StrictMode( 8940): at android.widget.TextView.applyTextAppearance(TextView.java:3640) +06-02 16:38:05.931 D/StrictMode( 8940): at android.widget.TextView.<init>(TextView.java:1498) +06-02 16:38:05.931 D/StrictMode( 8940): at android.widget.TextView.<init>(TextView.java:869) +06-02 16:38:05.931 D/StrictMode( 8940): at androidx.appcompat.widget.AppCompatTextView.<init>(AppCompatTextView.java:100) +06-02 16:38:05.931 D/StrictMode( 8940): at androidx.appcompat.widget.AppCompatTextView.<init>(AppCompatTextView.java:95) +06-02 16:38:05.931 D/StrictMode( 8940): at androidx.appcompat.app.AppCompatViewInflater.createTextView(AppCompatViewInflater.java:194) +06-02 16:38:05.931 D/StrictMode( 8940): at androidx.appcompat.app.AppCompatViewInflater.createView(AppCompatViewInflater.java:115) +06-02 16:38:05.931 D/StrictMode( 8940): at androidx.appcompat.app.AppCompatDelegateImpl.createView(AppCompatDelegateImpl.java:1548) +06-02 16:38:05.931 D/StrictMode( 8940): at androidx.appcompat.app.AppCompatDelegateImpl.onCreateView(AppCompatDelegateImpl.java:1599) +06-02 16:38:05.931 D/StrictMode( 8940): at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:772) +06-02 16:38:05.931 D/StrictMode( 8940): at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:730) +06-02 16:38:05.931 D/StrictMode( 8940): at android.view.LayoutInflater.rInflate(LayoutInflater.java:863) +06-02 16:38:05.931 D/StrictMode( 8940): at android.view.LayoutInflater.rInflateChildren(LayoutInflater.java:824) +06-02 16:38:05.931 D/StrictMode( 8940): at android.view.LayoutInflater.rInflate(LayoutInflater.java:866) +06-02 16:38:05.931 D/StrictMode( 8940): at android.view.LayoutInflater.inflate(LayoutInflater.java:489) +06-02 16:38:05.931 D/StrictMode( 8940): at android.view.LayoutInflater.inflate(LayoutInflater.java:423) +06-02 16:38:05.931 D/StrictMode( 8940): at android.view.LayoutInflater.inflate(LayoutInflater.java:374) +06-02 16:38:05.931 D/StrictMode( 8940): at org.mozilla.fenix.components.toolbar.TabCounter.<init>(TabCounter.kt:30) +06-02 16:38:05.931 D/StrictMode( 8940): at org.mozilla.fenix.components.toolbar.TabCounter.<init>(TabCounter.kt:22) +06-02 16:38:05.931 D/StrictMode( 8940): at org.mozilla.fenix.components.toolbar.TabCounter.<init>(Unknown Source:6) +06-02 16:38:05.931 D/StrictMode( 8940): at java.lang.reflect.Constructor.newInstance0(Native Method) +06-02 16:38:05.931 D/StrictMode( 8940): at java.lang.reflect.Constructor.newInstance(Constructor.java:343) +06-02 16:38:05.931 D/StrictMode( 8940): at android.view.LayoutInflater.createView(LayoutInflater.java:647) +06-02 16:38:05.931 D/StrictMode( 8940): at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:790) +06-02 16:38:05.931 D/StrictMode( 8940): at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:730) +06-02 16:38:05.931 D/StrictMode( 8940): at android.view.LayoutInflater.rInflate(LayoutInflater.java:863) +06-02 16:38:05.931 D/StrictMode( 8940): at android.view.LayoutInflater.rInflateChildren(LayoutInflater.java:824) +06-02 16:38:05.931 D/StrictMode( 8940): at android.view.LayoutInflater.rInflate(LayoutInflater.java:866) +06-02 16:38:05.931 D/StrictMode( 8940): at android.view.LayoutInflater.rInflateChildren(LayoutInflater.java:824) +06-02 16:38:05.931 D/StrictMode( 8940): at android.view.LayoutInflater.inflate(LayoutInflater.java:515) +06-02 16:38:05.931 D/StrictMode( 8940): at android.view.LayoutInflater.inflate(LayoutInflater.java:423) +06-02 16:38:05.931 D/StrictMode( 8940): at org.mozilla.fenix.home.HomeFragment.onCreateView(HomeFragment.kt:183) +06-02 16:38:05.931 D/StrictMode( 8940): at androidx.fragment.app.Fragment.performCreateView(Fragment.java:2698) +06-02 16:38:05.931 D/StrictMode( 8940): at androidx.fragment.app.FragmentStateManager.createView(FragmentStateManager.java:320) +06-02 16:38:05.931 D/StrictMode( 8940): at androidx.fragment.app.FragmentManager.moveToState(FragmentManager.java:1187) +06-02 16:38:05.931 D/StrictMode( 8940): at androidx.fragment.app.FragmentManager.addAddedFragments(FragmentManager.java:2224) +06-02 16:38:05.931 D/StrictMode( 8940): at androidx.fragment.app.FragmentManager.executeOpsTogether(FragmentManager.java:1997) +06-02 16:38:05.931 D/StrictMode( 8940): at androidx.fragment.app.FragmentManager.removeRedundantOperationsAndExecute(FragmentManager.java:1953) +06-02 16:38:05.931 D/StrictMode( 8940): at androidx.fragment.app.FragmentManager.execPe +06-02 16:38:05.931 W/lla.fenix.debu( 8940): Accessing hidden method Landroid/graphics/FontFamily;->abortCreation()V (light greylist, reflection) +06-02 16:38:05.938 D/StrictMode( 8940): StrictMode policy violation: android.os.strictmode.NonSdkApiUsedViolation: Landroid/graphics/FontFamily;->abortCreation()V +06-02 16:38:05.938 D/StrictMode( 8940): at android.os.StrictMode.lambda$static$1(StrictMode.java:428) +06-02 16:38:05.938 D/StrictMode( 8940): at android.os.-$$Lambda$StrictMode$lu9ekkHJ2HMz0jd3F8K8MnhenxQ.accept(Unknown Source:2) +06-02 16:38:05.938 D/StrictMode( 8940): at java.lang.Class.getDeclaredMethodInternal(Native Method) +06-02 16:38:05.938 D/StrictMode( 8940): at java.lang.Class.getPublicMethodRecursive(Class.java:2075) +06-02 16:38:05.938 D/StrictMode( 8940): at java.lang.Class.getMethod(Class.java:2063) +06-02 16:38:05.938 D/StrictMode( 8940): at java.lang.Class.getMethod(Class.java:1690) +06-02 16:38:05.938 D/StrictMode( 8940): at androidx.core.graphics.TypefaceCompatApi26Impl.obtainAbortCreationMethod(TypefaceCompatApi26Impl.java:343) +06-02 16:38:05.938 D/StrictMode( 8940): at androidx.core.graphics.TypefaceCompatApi26Impl.<init>(TypefaceCompatApi26Impl.java:88) +06-02 16:38:05.938 D/StrictMode( 8940): at androidx.core.graphics.TypefaceCompatApi28Impl.<init>(TypefaceCompatApi28Impl.java:36) +06-02 16:38:05.938 D/StrictMode( 8940): at androidx.core.graphics.TypefaceCompat.<clinit>(TypefaceCompat.java:51) +06-02 16:38:05.938 D/StrictMode( 8940): at androidx.core.graphics.TypefaceCompat.create(TypefaceCompat.java:194) +06-02 16:38:05.938 D/StrictMode( 8940): at androidx.appcompat.widget.AppCompatTextView.setTypeface(AppCompatTextView.java:708) +06-02 16:38:05.938 D/StrictMode( 8940): at android.widget.TextView.resolveStyleAndSetTypeface(TextView.java:2037) +06-02 16:38:05.938 D/StrictMode( 8940): at android.widget.TextView.setTypefaceFromAttrs(TextView.java:2008) +06-02 16:38:05.938 D/StrictMode( 8940): at android.widget.TextView.applyTextAppearance(TextView.java:3640) +06-02 16:38:05.938 D/StrictMode( 8940): at android.widget.TextView.<init>(TextView.java:1498) +06-02 16:38:05.938 D/StrictMode( 8940): at android.widget.TextView.<init>(TextView.java:869) +06-02 16:38:05.938 D/StrictMode( 8940): at androidx.appcompat.widget.AppCompatTextView.<init>(AppCompatTextView.java:100) +06-02 16:38:05.938 D/StrictMode( 8940): at androidx.appcompat.widget.AppCompatTextView.<init>(AppCompatTextView.java:95) +06-02 16:38:05.938 D/StrictMode( 8940): at androidx.appcompat.app.AppCompatViewInflater.createTextView(AppCompatViewInflater.java:194) +06-02 16:38:05.938 D/StrictMode( 8940): at androidx.appcompat.app.AppCompatViewInflater.createView(AppCompatViewInflater.java:115) +06-02 16:38:05.938 D/StrictMode( 8940): at androidx.appcompat.app.AppCompatDelegateImpl.createView(AppCompatDelegateImpl.java:1548) +06-02 16:38:05.938 D/StrictMode( 8940): at androidx.appcompat.app.AppCompatDelegateImpl.onCreateView(AppCompatDelegateImpl.java:1599) +06-02 16:38:05.938 D/StrictMode( 8940): at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:772) +06-02 16:38:05.938 D/StrictMode( 8940): at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:730) +06-02 16:38:05.938 D/StrictMode( 8940): at android.view.LayoutInflater.rInflate(LayoutInflater.java:863) +06-02 16:38:05.938 D/StrictMode( 8940): at android.view.LayoutInflater.rInflateChildren(LayoutInflater.java:824) +06-02 16:38:05.938 D/StrictMode( 8940): at android.view.LayoutInflater.rInflate(LayoutInflater.java:866) +06-02 16:38:05.938 D/StrictMode( 8940): at android.view.LayoutInflater.inflate(LayoutInflater.java:489) +06-02 16:38:05.938 D/StrictMode( 8940): at android.view.LayoutInflater.inflate(LayoutInflater.java:423) +06-02 16:38:05.938 D/StrictMode( 8940): at android.view.LayoutInflater.inflate(LayoutInflater.java:374) +06-02 16:38:05.938 D/StrictMode( 8940): at org.mozilla.fenix.components.toolbar.TabCounter.<init>(TabCounter.kt:30) +06-02 16:38:05.938 D/StrictMode( 8940): at org.mozilla.fenix.components.toolbar.TabCounter.<init>(TabCounter.kt:22) +06-02 16:38:05.938 D/StrictMode( 8940): at org.mozilla.fenix.components.toolbar.TabCounter.<init>(Unknown Source:6) +06-02 16:38:05.938 D/StrictMode( 8940): at java.lang.reflect.Constructor.newInstance0(Native Method) +06-02 16:38:05.938 D/StrictMode( 8940): at java.lang.reflect.Constructor.newInstance(Constructor.java:343) +06-02 16:38:05.938 D/StrictMode( 8940): at android.view.LayoutInflater.createView(LayoutInflater.java:647) +06-02 16:38:05.938 D/StrictMode( 8940): at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:790) +06-02 16:38:05.938 D/StrictMode( 8940): at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:730) +06-02 16:38:05.938 D/StrictMode( 8940): at android.view.LayoutInflater.rInflate(LayoutInflater.java:863) +06-02 16:38:05.938 D/StrictMode( 8940): at android.view.LayoutInflater.rInflateChildren(LayoutInflater.java:824) +06-02 16:38:05.938 D/StrictMode( 8940): at android.view.LayoutInflater.rInflate(LayoutInflater.java:866) +06-02 16:38:05.938 D/StrictMode( 8940): at android.view.LayoutInflater.rInflateChildren(LayoutInflater.java:824) +06-02 16:38:05.938 D/StrictMode( 8940): at android.view.LayoutInflater.inflate(LayoutInflater.java:515) +06-02 16:38:05.938 D/StrictMode( 8940): at android.view.LayoutInflater.inflate(LayoutInflater.java:423) +06-02 16:38:05.938 D/StrictMode( 8940): at org.mozilla.fenix.home.HomeFragment.onCreateView(HomeFragment.kt:183) +06-02 16:38:05.938 D/StrictMode( 8940): at androidx.fragment.app.Fragment.performCreateView(Fragment.java:2698) +06-02 16:38:05.938 D/StrictMode( 8940): at androidx.fragment.app.FragmentStateManager.createView(FragmentStateManager.java:320) +06-02 16:38:05.938 D/StrictMode( 8940): at androidx.fragment.app.FragmentManager.moveToState(FragmentManager.java:1187) +06-02 16:38:05.938 D/StrictMode( 8940): at androidx.fragment.app.FragmentManager.addAddedFragments(FragmentManager.java:2224) +06-02 16:38:05.938 D/StrictMode( 8940): at androidx.fragment.app.FragmentManager.executeOpsTogether(FragmentManager.java:1997) +06-02 16:38:05.938 D/StrictMode( 8940): at androidx.fragment.app.FragmentManager.removeRedundantOperationsAndExecute(FragmentManager.java:1953) +06-02 16:38:05.938 D/StrictMode( 8940): at androidx.fragment.app.Fragment +06-02 16:38:05.943 W/lla.fenix.debu( 8940): Accessing hidden method Landroid/graphics/Typeface;->createFromFamiliesWithDefault([Landroid/graphics/FontFamily;Ljava/lang/String;II)Landroid/graphics/Typeface; (light greylist, reflection) +06-02 16:38:05.948 D/StrictMode( 8940): StrictMode policy violation: android.os.strictmode.NonSdkApiUsedViolation: Landroid/graphics/Typeface;->createFromFamiliesWithDefault([Landroid/graphics/FontFamily;Ljava/lang/String;II)Landroid/graphics/Typeface; +06-02 16:38:05.948 D/StrictMode( 8940): at android.os.StrictMode.lambda$static$1(StrictMode.java:428) +06-02 16:38:05.948 D/StrictMode( 8940): at android.os.-$$Lambda$StrictMode$lu9ekkHJ2HMz0jd3F8K8MnhenxQ.accept(Unknown Source:2) +06-02 16:38:05.948 D/StrictMode( 8940): at java.lang.Class.getDeclaredMethodInternal(Native Method) +06-02 16:38:05.948 D/StrictMode( 8940): at java.lang.Class.getMethod(Class.java:2064) +06-02 16:38:05.948 D/StrictMode( 8940): at java.lang.Class.getDeclaredMethod(Class.java:2047) +06-02 16:38:05.948 D/StrictMode( 8940): at androidx.core.graphics.TypefaceCompatApi28Impl.obtainCreateFromFamiliesWithDefaultMethod(TypefaceCompatApi28Impl.java:62) +06-02 16:38:05.948 D/StrictMode( 8940): at androidx.core.graphics.TypefaceCompatApi26Impl.<init>(TypefaceCompatApi26Impl.java:89) +06-02 16:38:05.948 D/StrictMode( 8940): at androidx.core.graphics.TypefaceCompatApi28Impl.<init>(TypefaceCompatApi28Impl.java:36) +06-02 16:38:05.948 D/StrictMode( 8940): at androidx.core.graphics.TypefaceCompat.<clinit>(TypefaceCompat.java:51) +06-02 16:38:05.948 D/StrictMode( 8940): at androidx.core.graphics.TypefaceCompat.create(TypefaceCompat.java:194) +06-02 16:38:05.948 D/StrictMode( 8940): at androidx.appcompat.widget.AppCompatTextView.setTypeface(AppCompatTextView.java:708) +06-02 16:38:05.948 D/StrictMode( 8940): at android.widget.TextView.resolveStyleAndSetTypeface(TextView.java:2037) +06-02 16:38:05.948 D/StrictMode( 8940): at android.widget.TextView.setTypefaceFromAttrs(TextView.java:2008) +06-02 16:38:05.948 D/StrictMode( 8940): at android.widget.TextView.applyTextAppearance(TextView.java:3640) +06-02 16:38:05.948 D/StrictMode( 8940): at android.widget.TextView.<init>(TextView.java:1498) +06-02 16:38:05.948 D/StrictMode( 8940): at android.widget.TextView.<init>(TextView.java:869) +06-02 16:38:05.948 D/StrictMode( 8940): at androidx.appcompat.widget.AppCompatTextView.<init>(AppCompatTextView.java:100) +06-02 16:38:05.948 D/StrictMode( 8940): at androidx.appcompat.widget.AppCompatTextView.<init>(AppCompatTextView.java:95) +06-02 16:38:05.948 D/StrictMode( 8940): at androidx.appcompat.app.AppCompatViewInflater.createTextView(AppCompatViewInflater.java:194) +06-02 16:38:05.948 D/StrictMode( 8940): at androidx.appcompat.app.AppCompatViewInflater.createView(AppCompatViewInflater.java:115) +06-02 16:38:05.948 D/StrictMode( 8940): at androidx.appcompat.app.AppCompatDelegateImpl.createView(AppCompatDelegateImpl.java:1548) +06-02 16:38:05.948 D/StrictMode( 8940): at androidx.appcompat.app.AppCompatDelegateImpl.onCreateView(AppCompatDelegateImpl.java:1599) +06-02 16:38:05.948 D/StrictMode( 8940): at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:772) +06-02 16:38:05.948 D/StrictMode( 8940): at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:730) +06-02 16:38:05.948 D/StrictMode( 8940): at android.view.LayoutInflater.rInflate(LayoutInflater.java:863) +06-02 16:38:05.948 D/StrictMode( 8940): at android.view.LayoutInflater.rInflateChildren(LayoutInflater.java:824) +06-02 16:38:05.948 D/StrictMode( 8940): at android.view.LayoutInflater.rInflate(LayoutInflater.java:866) +06-02 16:38:05.948 D/StrictMode( 8940): at android.view.LayoutInflater.inflate(LayoutInflater.java:489) +06-02 16:38:05.948 D/StrictMode( 8940): at android.view.LayoutInflater.inflate(LayoutInflater.java:423) +06-02 16:38:05.948 D/StrictMode( 8940): at android.view.LayoutInflater.inflate(LayoutInflater.java:374) +06-02 16:38:05.948 D/StrictMode( 8940): at org.mozilla.fenix.components.toolbar.TabCounter.<init>(TabCounter.kt:30) +06-02 16:38:05.948 D/StrictMode( 8940): at org.mozilla.fenix.components.toolbar.TabCounter.<init>(TabCounter.kt:22) +06-02 16:38:05.948 D/StrictMode( 8940): at org.mozilla.fenix.components.toolbar.TabCounter.<init>(Unknown Source:6) +06-02 16:38:05.948 D/StrictMode( 8940): at java.lang.reflect.Constructor.newInstance0(Native Method) +06-02 16:38:05.948 D/StrictMode( 8940): at java.lang.reflect.Constructor.newInstance(Constructor.java:343) +06-02 16:38:05.948 D/StrictMode( 8940): at android.view.LayoutInflater.createView(LayoutInflater.java:647) +06-02 16:38:05.948 D/StrictMode( 8940): at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:790) +06-02 16:38:05.948 D/StrictMode( 8940): at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:730) +06-02 16:38:05.948 D/StrictMode( 8940): at android.view.LayoutInflater.rInflate(LayoutInflater.java:863) +06-02 16:38:05.948 D/StrictMode( 8940): at android.view.LayoutInflater.rInflateChildren(LayoutInflater.java:824) +06-02 16:38:05.948 D/StrictMode( 8940): at android.view.LayoutInflater.rInflate(LayoutInflater.java:866) +06-02 16:38:05.948 D/StrictMode( 8940): at android.view.LayoutInflater.rInflateChildren(LayoutInflater.java:824) +06-02 16:38:05.948 D/StrictMode( 8940): at android.view.LayoutInflater.inflate(LayoutInflater.java:515) +06-02 16:38:05.948 D/StrictMode( 8940): at android.view.LayoutInflater.inflate(LayoutInflater.java:423) +06-02 16:38:05.948 D/StrictMode( 8940): at org.mozilla.fenix.home.HomeFragment.onCreateView(HomeFragment.kt:183) +06-02 16:38:05.948 D/StrictMode( 8940): at androidx.fragment.app.Fragment.performCreateView(Fragment.java:2698) +06-02 16:38:05.948 D/StrictMode( 8940): at androidx.fragment.app.FragmentStateManager.createView(FragmentStateManager.java:320) +06-02 16:38:05.948 D/StrictMode( 8940): at androidx.fragment.app.FragmentManager.moveToState(FragmentManager.java:1187) +06-02 16:38:05.948 D/StrictMode( 8940): at androidx.fragment.app.FragmentManager.addAddedFragments(FragmentManager.java:2224) +06-02 16:38:05.948 D/StrictMode( 8940): at androidx.fragment.app.FragmentManager.executeOpsTogether(FragmentManager.java:1997) +06-02 16:38:05.948 D/StrictMode( 8940): at androidx.fragment.app.FragmentManager.removeRedundantOperationsAndExecute(FragmentMa +06-02 16:38:05.990 I/droid.apps.doc( 8852): Waiting for a blocking GC ProfileSaver +06-02 16:38:06.011 I/droid.apps.doc( 8852): WaitForGcToComplete blocked ProfileSaver on HeapTrim for 20.559ms +06-02 16:38:06.052 I/EventLogSendingHelper( 2402): Sending log events. +06-02 16:38:06.103 D/GeckoThread( 8940): State changed to PROFILE_READY +06-02 16:38:06.164 D/GeckoViewStartup( 8940): observe: profile-after-change +06-02 16:38:06.183 D/GeckoViewTelemetryController( 8940): setup - canRecordPrereleaseData true, canRecordReleaseData true +06-02 16:38:06.247 D/GeckoRuntime( 8940): Lifecycle: onStart +06-02 16:38:06.250 D/GeckoThread( 8940): State changed to RUNNING +06-02 16:38:06.252 D/GeckoRuntime( 8940): Lifecycle: onResume +06-02 16:38:06.256 D/GeckoNetworkManager( 8940): Incoming event start for state OffNoListeners -> OnNoListeners +06-02 16:38:06.258 D/GeckoNetworkManager( 8940): New network state: UP, WIFI, WIFI +06-02 16:38:06.264 D/OpenGLRenderer( 8940): Skia GL Pipeline +06-02 16:38:06.277 I/Gecko ( 8940): -*- nsDNSServiceDiscovery.js : nsDNSServiceDiscovery +06-02 16:38:06.302 E/SurfaceFlinger( 1728): ro.sf.lcd_density must be defined as a build property +06-02 16:38:06.327 D/StrictMode( 8940): StrictMode policy violation; ~duration=1066 ms: android.os.strictmode.DiskReadViolation +06-02 16:38:06.327 D/StrictMode( 8940): at android.os.StrictMode$AndroidBlockGuardPolicy.onReadFromDisk(StrictMode.java:1504) +06-02 16:38:06.327 D/StrictMode( 8940): at java.io.UnixFileSystem.checkAccess(UnixFileSystem.java:251) +06-02 16:38:06.327 D/StrictMode( 8940): at java.io.File.exists(File.java:815) +06-02 16:38:06.327 D/StrictMode( 8940): at android.app.ContextImpl.getDataDir(ContextImpl.java:2253) +06-02 16:38:06.327 D/StrictMode( 8940): at android.app.ContextImpl.getPreferencesDir(ContextImpl.java:550) +06-02 16:38:06.327 D/StrictMode( 8940): at android.app.ContextImpl.getSharedPreferencesPath(ContextImpl.java:747) +06-02 16:38:06.327 D/StrictMode( 8940): at android.app.ContextImpl.getSharedPreferences(ContextImpl.java:400) +06-02 16:38:06.327 D/StrictMode( 8940): at mozilla.components.support.locale.LocaleManager$Storage.getSharedPreferences(LocaleManager.kt:123) +06-02 16:38:06.327 D/StrictMode( 8940): at mozilla.components.support.locale.LocaleManager$Storage.getLocale(LocaleManager.kt:99) +06-02 16:38:06.327 D/StrictMode( 8940): at mozilla.components.support.locale.LocaleManager.getCurrentLocale(LocaleManager.kt:42) +06-02 16:38:06.327 D/StrictMode( 8940): at mozilla.components.support.locale.LocaleManager.updateResources$support_locale_release(LocaleManager.kt:72) +06-02 16:38:06.327 D/StrictMode( 8940): at mozilla.components.support.locale.LocaleAwareAppCompatActivity.attachBaseContext(LocaleAwareAppCompatActivity.kt:18) +06-02 16:38:06.327 D/StrictMode( 8940): at android.app.Activity.attach(Activity.java:7051) +06-02 16:38:06.327 D/StrictMode( 8940): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2873) +06-02 16:38:06.327 D/StrictMode( 8940): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3048) +06-02 16:38:06.327 D/StrictMode( 8940): at android.app.servertransaction.LaunchActivityItem.execute(LaunchActivityItem.java:78) +06-02 16:38:06.327 D/StrictMode( 8940): at android.app.servertransaction.TransactionExecutor.executeCallbacks(TransactionExecutor.java:108) +06-02 16:38:06.327 D/StrictMode( 8940): at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:68) +06-02 16:38:06.327 D/StrictMode( 8940): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1808) +06-02 16:38:06.327 D/StrictMode( 8940): at android.os.Handler.dispatchMessage(Handler.java:106) +06-02 16:38:06.327 D/StrictMode( 8940): at android.os.Looper.loop(Looper.java:193) +06-02 16:38:06.327 D/StrictMode( 8940): at android.app.ActivityThread.main(ActivityThread.java:6669) +06-02 16:38:06.327 D/StrictMode( 8940): at java.lang.reflect.Method.invoke(Native Method) +06-02 16:38:06.327 D/StrictMode( 8940): at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:493) +06-02 16:38:06.327 D/StrictMode( 8940): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:858) +06-02 16:38:06.328 D/StrictMode( 8940): StrictMode policy violation; ~duration=1066 ms: android.os.strictmode.DiskReadViolation +06-02 16:38:06.328 D/StrictMode( 8940): at android.os.StrictMode$AndroidBlockGuardPolicy.onReadFromDisk(StrictMode.java:1504) +06-02 16:38:06.328 D/StrictMode( 8940): at java.io.UnixFileSystem.checkAccess(UnixFileSystem.java:251) +06-02 16:38:06.328 D/StrictMode( 8940): at java.io.File.exists(File.java:815) +06-02 16:38:06.328 D/StrictMode( 8940): at android.app.ContextImpl.ensurePrivateDirExists(ContextImpl.java:605) +06-02 16:38:06.328 D/StrictMode( 8940): at android.app.ContextImpl.ensurePrivateDirExists(ContextImpl.java:596) +06-02 16:38:06.328 D/StrictMode( 8940): at android.app.ContextImpl.getPreferencesDir(ContextImpl.java:552) +06-02 16:38:06.328 D/StrictMode( 8940): at android.app.ContextImpl.getSharedPreferencesPath(ContextImpl.java:747) +06-02 16:38:06.328 D/StrictMode( 8940): at android.app.ContextImpl.getSharedPreferences(ContextImpl.java:400) +06-02 16:38:06.328 D/StrictMode( 8940): at mozilla.components.support.locale.LocaleManager$Storage.getSharedPreferences(LocaleManager.kt:123) +06-02 16:38:06.328 D/StrictMode( 8940): at mozilla.components.support.locale.LocaleManager$Storage.getLocale(LocaleManager.kt:99) +06-02 16:38:06.328 D/StrictMode( 8940): at mozilla.components.support.locale.LocaleManager.getCurrentLocale(LocaleManager.kt:42) +06-02 16:38:06.328 D/StrictMode( 8940): at mozilla.components.support.locale.LocaleManager.updateResources$support_locale_release(LocaleManager.kt:72) +06-02 16:38:06.328 D/StrictMode( 8940): at mozilla.components.support.locale.LocaleAwareAppCompatActivity.attachBaseContext(LocaleAwareAppCompatActivity.kt:18) +06-02 16:38:06.328 D/StrictMode( 8940): at android.app.Activity.attach(Activity.java:7051) +06-02 16:38:06.328 D/StrictMode( 8940): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2873) +06-02 16:38:06.328 D/StrictMode( 8940): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3048) +06-02 16:38:06.328 D/StrictMode( 8940): at android.app.servertransaction.LaunchActivityItem.execute(LaunchActivityItem.java:78) +06-02 16:38:06.328 D/StrictMode( 8940): at android.app.servertransaction.TransactionExecutor.executeCallbacks(TransactionExecutor.java:108) +06-02 16:38:06.328 D/StrictMode( 8940): at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:68) +06-02 16:38:06.328 D/StrictMode( 8940): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1808) +06-02 16:38:06.328 D/StrictMode( 8940): at android.os.Handler.dispatchMessage(Handler.java:106) +06-02 16:38:06.328 D/StrictMode( 8940): at android.os.Looper.loop(Looper.java:193) +06-02 16:38:06.328 D/StrictMode( 8940): at android.app.ActivityThread.main(ActivityThread.java:6669) +06-02 16:38:06.328 D/StrictMode( 8940): at java.lang.reflect.Method.invoke(Native Method) +06-02 16:38:06.328 D/StrictMode( 8940): at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:493) +06-02 16:38:06.328 D/StrictMode( 8940): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:858) +06-02 16:38:06.332 D/StrictMode( 8940): StrictMode policy violation; ~duration=725 ms: android.os.strictmode.DiskReadViolation +06-02 16:38:06.332 D/StrictMode( 8940): at android.os.StrictMode$AndroidBlockGuardPolicy.onReadFromDisk(StrictMode.java:1504) +06-02 16:38:06.332 D/StrictMode( 8940): at java.io.UnixFileSystem.checkAccess(UnixFileSystem.java:251) +06-02 16:38:06.332 D/StrictMode( 8940): at java.io.File.exists(File.java:815) +06-02 16:38:06.332 D/StrictMode( 8940): at android.app.ContextImpl.getDataDir(ContextImpl.java:2253) +06-02 16:38:06.332 D/StrictMode( 8940): at android.app.ContextImpl.getPreferencesDir(ContextImpl.java:550) +06-02 16:38:06.332 D/StrictMode( 8940): at android.app.ContextImpl.getSharedPreferencesPath(ContextImpl.java:747) +06-02 16:38:06.332 D/StrictMode( 8940): at android.app.ContextImpl.getSharedPreferences(ContextImpl.java:400) +06-02 16:38:06.332 D/StrictMode( 8940): at android.content.ContextWrapper.getSharedPreferences(ContextWrapper.java:174) +06-02 16:38:06.332 D/StrictMode( 8940): at android.content.ContextWrapper.getSharedPreferences(ContextWrapper.java:174) +06-02 16:38:06.332 D/StrictMode( 8940): at org.mozilla.fenix.onboarding.FenixOnboarding.<init>(FenixOnboarding.kt:15) +06-02 16:38:06.332 D/StrictMode( 8940): at org.mozilla.fenix.perf.Performance.disableOnboarding(Performance.kt:72) +06-02 16:38:06.332 D/StrictMode( 8940): at org.mozilla.fenix.perf.Performance.processIntentIfPerformanceTest(Performance.kt:32) +06-02 16:38:06.332 D/StrictMode( 8940): at org.mozilla.fenix.HomeActivity.onCreate(HomeActivity.kt:145) +06-02 16:38:06.332 D/StrictMode( 8940): at android.app.Activity.performCreate(Activity.java:7136) +06-02 16:38:06.332 D/StrictMode( 8940): at android.app.Activity.performCreate(Activity.java:7127) +06-02 16:38:06.332 D/StrictMode( 8940): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1271) +06-02 16:38:06.332 D/StrictMode( 8940): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2893) +06-02 16:38:06.332 D/StrictMode( 8940): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3048) +06-02 16:38:06.332 D/StrictMode( 8940): at android.app.servertransaction.LaunchActivityItem.execute(LaunchActivityItem.java:78) +06-02 16:38:06.332 D/StrictMode( 8940): at android.app.servertransaction.TransactionExecutor.executeCallbacks(TransactionExecutor.java:108) +06-02 16:38:06.332 D/StrictMode( 8940): at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:68) +06-02 16:38:06.332 D/StrictMode( 8940): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1808) +06-02 16:38:06.332 D/StrictMode( 8940): at android.os.Handler.dispatchMessage(Handler.java:106) +06-02 16:38:06.332 D/StrictMode( 8940): at android.os.Looper.loop(Looper.java:193) +06-02 16:38:06.332 D/StrictMode( 8940): at android.app.ActivityThread.main(ActivityThread.java:6669) +06-02 16:38:06.332 D/StrictMode( 8940): at java.lang.reflect.Method.invoke(Native Method) +06-02 16:38:06.332 D/StrictMode( 8940): at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:493) +06-02 16:38:06.332 D/StrictMode( 8940): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:858) +06-02 16:38:06.342 D/StrictMode( 8940): StrictMode policy violation; ~duration=725 ms: android.os.strictmode.DiskReadViolation +06-02 16:38:06.342 D/StrictMode( 8940): at android.os.StrictMode$AndroidBlockGuardPolicy.onReadFromDisk(StrictMode.java:1504) +06-02 16:38:06.342 D/StrictMode( 8940): at java.io.UnixFileSystem.checkAccess(UnixFileSystem.java:251) +06-02 16:38:06.342 D/StrictMode( 8940): at java.io.File.exists(File.java:815) +06-02 16:38:06.342 D/StrictMode( 8940): at android.app.ContextImpl.ensurePrivateDirExists(ContextImpl.java:605) +06-02 16:38:06.342 D/StrictMode( 8940): at android.app.ContextImpl.ensurePrivateDirExists(ContextImpl.java:596) +06-02 16:38:06.342 D/StrictMode( 8940): at android.app.ContextImpl.getPreferencesDir(ContextImpl.java:552) +06-02 16:38:06.342 D/StrictMode( 8940): at android.app.ContextImpl.getSharedPreferencesPath(ContextImpl.java:747) +06-02 16:38:06.342 D/StrictMode( 8940): at android.app.ContextImpl.getSharedPreferences(ContextImpl.java:400) +06-02 16:38:06.342 D/StrictMode( 8940): at android.content.ContextWrapper.getSharedPreferences(ContextWrapper.java:174) +06-02 16:38:06.342 D/StrictMode( 8940): at android.content.ContextWrapper.getSharedPreferences(ContextWrapper.java:174) +06-02 16:38:06.342 D/StrictMode( 8940): at org.mozilla.fenix.onboarding.FenixOnboarding.<init>(FenixOnboarding.kt:15) +06-02 16:38:06.342 D/StrictMode( 8940): at org.mozilla.fenix.perf.Performance.disableOnboarding(Performance.kt:72) +06-02 16:38:06.342 D/StrictMode( 8940): at org.mozilla.fenix.perf.Performance.processIntentIfPerformanceTest(Performance.kt:32) +06-02 16:38:06.342 D/StrictMode( 8940): at org.mozilla.fenix.HomeActivity.onCreate(HomeActivity.kt:145) +06-02 16:38:06.342 D/StrictMode( 8940): at android.app.Activity.performCreate(Activity.java:7136) +06-02 16:38:06.342 D/StrictMode( 8940): at android.app.Activity.performCreate(Activity.java:7127) +06-02 16:38:06.342 D/StrictMode( 8940): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1271) +06-02 16:38:06.342 D/StrictMode( 8940): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2893) +06-02 16:38:06.342 D/StrictMode( 8940): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3048) +06-02 16:38:06.342 D/StrictMode( 8940): at android.app.servertransaction.LaunchActivityItem.execute(LaunchActivityItem.java:78) +06-02 16:38:06.342 D/StrictMode( 8940): at android.app.servertransaction.TransactionExecutor.executeCallbacks(TransactionExecutor.java:108) +06-02 16:38:06.342 D/StrictMode( 8940): at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:68) +06-02 16:38:06.342 D/StrictMode( 8940): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1808) +06-02 16:38:06.342 D/StrictMode( 8940): at android.os.Handler.dispatchMessage(Handler.java:106) +06-02 16:38:06.342 D/StrictMode( 8940): at android.os.Looper.loop(Looper.java:193) +06-02 16:38:06.342 D/StrictMode( 8940): at android.app.ActivityThread.main(ActivityThread.java:6669) +06-02 16:38:06.342 D/StrictMode( 8940): at java.lang.reflect.Method.invoke(Native Method) +06-02 16:38:06.342 D/StrictMode( 8940): at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:493) +06-02 16:38:06.342 D/StrictMode( 8940): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:858) +06-02 16:38:06.348 D/StrictMode( 8940): StrictMode policy violation; ~duration=724 ms: android.os.strictmode.DiskReadViolation +06-02 16:38:06.348 D/StrictMode( 8940): at android.os.StrictMode$AndroidBlockGuardPolicy.onReadFromDisk(StrictMode.java:1504) +06-02 16:38:06.348 D/StrictMode( 8940): at android.app.SharedPreferencesImpl.awaitLoadedLocked(SharedPreferencesImpl.java:256) +06-02 16:38:06.348 D/StrictMode( 8940): at android.app.SharedPreferencesImpl.edit(SharedPreferencesImpl.java:349) +06-02 16:38:06.348 D/StrictMode( 8940): at org.mozilla.fenix.onboarding.FenixOnboarding.setOnboardedVersion(FenixOnboarding.kt:42) +06-02 16:38:06.348 D/StrictMode( 8940): at org.mozilla.fenix.onboarding.FenixOnboarding.finish(FenixOnboarding.kt:25) +06-02 16:38:06.348 D/StrictMode( 8940): at org.mozilla.fenix.perf.Performance.disableOnboarding(Performance.kt:72) +06-02 16:38:06.348 D/StrictMode( 8940): at org.mozilla.fenix.perf.Performance.processIntentIfPerformanceTest(Performance.kt:32) +06-02 16:38:06.348 D/StrictMode( 8940): at org.mozilla.fenix.HomeActivity.onCreate(HomeActivity.kt:145) +06-02 16:38:06.348 D/StrictMode( 8940): at android.app.Activity.performCreate(Activity.java:7136) +06-02 16:38:06.348 D/StrictMode( 8940): at android.app.Activity.performCreate(Activity.java:7127) +06-02 16:38:06.348 D/StrictMode( 8940): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1271) +06-02 16:38:06.348 D/StrictMode( 8940): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2893) +06-02 16:38:06.348 D/StrictMode( 8940): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3048) +06-02 16:38:06.348 D/StrictMode( 8940): at android.app.servertransaction.LaunchActivityItem.execute(LaunchActivityItem.java:78) +06-02 16:38:06.348 D/StrictMode( 8940): at android.app.servertransaction.TransactionExecutor.executeCallbacks(TransactionExecutor.java:108) +06-02 16:38:06.348 D/StrictMode( 8940): at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:68) +06-02 16:38:06.348 D/StrictMode( 8940): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1808) +06-02 16:38:06.348 D/StrictMode( 8940): at android.os.Handler.dispatchMessage(Handler.java:106) +06-02 16:38:06.348 D/StrictMode( 8940): at android.os.Looper.loop(Looper.java:193) +06-02 16:38:06.348 D/StrictMode( 8940): at android.app.ActivityThread.main(ActivityThread.java:6669) +06-02 16:38:06.348 D/StrictMode( 8940): at java.lang.reflect.Method.invoke(Native Method) +06-02 16:38:06.348 D/StrictMode( 8940): at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:493) +06-02 16:38:06.348 D/StrictMode( 8940): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:858) +06-02 16:38:06.352 D/StrictMode( 8940): StrictMode policy violation; ~duration=237 ms: android.os.strictmode.DiskReadViolation +06-02 16:38:06.352 D/StrictMode( 8940): at android.os.StrictMode$AndroidBlockGuardPolicy.onReadFromDisk(StrictMode.java:1504) +06-02 16:38:06.352 D/StrictMode( 8940): at java.io.UnixFileSystem.checkAccess(UnixFileSystem.java:251) +06-02 16:38:06.352 D/StrictMode( 8940): at java.io.File.exists(File.java:815) +06-02 16:38:06.352 D/StrictMode( 8940): at android.app.ContextImpl.ensurePrivateDirExists(ContextImpl.java:605) +06-02 16:38:06.352 D/StrictMode( 8940): at android.app.ContextImpl.ensurePrivateDirExists(ContextImpl.java:596) +06-02 16:38:06.352 D/StrictMode( 8940): at android.app.ContextImpl.getPreferencesDir(ContextImpl.java:552) +06-02 16:38:06.352 D/StrictMode( 8940): at android.app.ContextImpl.getSharedPreferencesPath(ContextImpl.java:747) +06-02 16:38:06.352 D/StrictMode( 8940): at android.app.ContextImpl.getSharedPreferences(ContextImpl.java:400) +06-02 16:38:06.352 D/StrictMode( 8940): at android.content.ContextWrapper.getSharedPreferences(ContextWrapper.java:174) +06-02 16:38:06.352 D/StrictMode( 8940): at mozilla.components.support.locale.LocaleManager$Storage.getSharedPreferences(LocaleManager.kt:123) +06-02 16:38:06.352 D/StrictMode( 8940): at mozilla.components.support.locale.LocaleManager$Storage.getLocale(LocaleManager.kt:99) +06-02 16:38:06.352 D/StrictMode( 8940): at mozilla.components.support.locale.LocaleManager.getCurrentLocale(LocaleManager.kt:42) +06-02 16:38:06.352 D/StrictMode( 8940): at org.mozilla.fenix.settings.advanced.LocaleManagerExtensionKt.getSelectedLocale(LocaleManagerExtension.kt:39) +06-02 16:38:06.352 D/StrictMode( 8940): at org.mozilla.fenix.settings.advanced.LocaleManagerExtensionKt.getSelectedLocale$default(LocaleManagerExtension.kt:37) +06-02 16:38:06.352 D/StrictMode( 8940): at org.mozilla.fenix.components.TopSiteStorage.addDefaultTopSites(TopSiteStorage.kt:57) +06-02 16:38:06.352 D/StrictMode( 8940): at org.mozilla.fenix.components.TopSiteStorage.<init>(TopSiteStorage.kt:30) +06-02 16:38:06.352 D/StrictMode( 8940): at org.mozilla.fenix.components.Core$topSiteStorage$2.invoke(Core.kt:216) +06-02 16:38:06.352 D/StrictMode( 8940): at org.mozilla.fenix.components.Core$topSiteStorage$2.invoke(Core.kt:57) +06-02 16:38:06.352 D/StrictMode( 8940): at kotlin.SynchronizedLazyImpl.getValue(LazyJVM.kt:74) +06-02 16:38:06.352 D/StrictMode( 8940): at org.mozilla.fenix.components.Core.getTopSiteStorage(Unknown Source:8) +06-02 16:38:06.352 D/StrictMode( 8940): at org.mozilla.fenix.home.HomeFragment$onCreateView$2.invoke(HomeFragment.kt:210) +06-02 16:38:06.352 D/StrictMode( 8940): at org.mozilla.fenix.home.HomeFragment$onCreateView$2.invoke(HomeFragment.kt:114) +06-02 16:38:06.352 D/StrictMode( 8940): at org.mozilla.fenix.components.StoreProviderFactory.create(StoreProvider.kt:42) +06-02 16:38:06.352 D/StrictMode( 8940): at androidx.lifecycle.ViewModelProvider.get(ViewModelProvider.java:187) +06-02 16:38:06.352 D/StrictMode( 8940): at androidx.lifecycle.ViewModelProvider.get(ViewModelProvider.java:150) +06-02 16:38:06.352 D/StrictMode( 8940): at org.mozilla.fenix.components.StoreProvider$Companion.get(StoreProvider.kt:46) +06-02 16:38:06.352 D/StrictMode( 8940): at org.mozilla.fenix.home.HomeFragment.onCreateView(HomeFragment.kt:203) +06-02 16:38:06.352 D/StrictMode( 8940): at androidx.fragment.app.Fragment.performCreateView(Fragment.java:2698) +06-02 16:38:06.352 D/StrictMode( 8940): at androidx.fragment.app.FragmentStateManager.createView(FragmentStateManager.java:320) +06-02 16:38:06.352 D/StrictMode( 8940): at androidx.fragment.app.FragmentManager.moveToState(FragmentManager.java:1187) +06-02 16:38:06.352 D/StrictMode( 8940): at androidx.fragment.app.FragmentManager.addAddedFragments(FragmentManager.java:2224) +06-02 16:38:06.352 D/StrictMode( 8940): at androidx.fragment.app.FragmentManager.executeOpsTogether(FragmentManager.java:1997) +06-02 16:38:06.352 D/StrictMode( 8940): at androidx.fragment.app.FragmentManager.removeRedundantOperationsAndExecute(FragmentManager.java:1953) +06-02 16:38:06.352 D/StrictMode( 8940): at androidx.fragment.app.FragmentManager.execPendingActions(FragmentManager.java:1849) +06-02 16:38:06.352 D/StrictMode( 8940): at androidx.fragment.app.FragmentManager.dispatchStateChange(FragmentManager.java:2629) +06-02 16:38:06.352 D/StrictMode( 8940): at androidx.fragment.app.FragmentManager.dispatchActivityCreated(FragmentManager.java:2577) +06-02 16:38:06.352 D/StrictMode( 8940): at androidx.fragment.app.Fragment.performActivityCreated(Fragment.java:2722) +06-02 16:38:06.352 D/StrictMode( 8940): at androidx.fragment.app.FragmentStateManager.activityCreated(FragmentStateManager.java:346) +06-02 16:38:06.352 D/StrictMode( 8940): at androidx.fragment.app.FragmentManager.moveToState(FragmentManager.java:1188) +06-02 16:38:06.352 D/StrictMode( 8940): at androidx.fragment.app.FragmentManager.moveToState(FragmentManager.java:1356) +06-02 16:38:06.352 D/StrictMode( 8940): at androidx.fragment.app.FragmentManager.moveFragmentToExpectedState(FragmentManager.java:1434) +06-02 16:38:06.352 D/StrictMode( 8940): at androidx.fragment.app.FragmentManager.moveToState(FragmentManager.java:1497) +06-02 16:38:06.352 D/StrictMode( 8940): at androidx.fragment.app.FragmentManager.dispatchStateChange(FragmentManager.java:2625) +06-02 16:38:06.352 D/StrictMode( 8940): at androidx.fragment.app.FragmentManager.dispatchActivityCreated(FragmentManager.java:2577) +06-02 16:38:06.352 D/StrictMode( 8940): at androidx.fragment.app.FragmentController.dispatchActivityCreated(FragmentController.java:247) +06-02 16:38:06.352 D/StrictMode( 8940): at androidx.fragment.app.FragmentActivity.onStart(FragmentActivity.java:541) +06-02 16:38:06.352 D/StrictMode( 8940): at androidx.appcompat.app.AppCompatActivity.onStart(AppCompatActivity.java:210) +06-02 16:38:06.352 D/StrictMode( 8940): at android.app.Instrumentation.callActivityOnStart(Instrumentation.java:1391) +06-02 16:38:06.352 D/StrictMode( 8940): +06-02 16:38:06.368 D/StrictMode( 8940): StrictMode policy violation; ~duration=131 ms: android.os.strictmode.DiskReadViolation +06-02 16:38:06.368 D/StrictMode( 8940): at android.os.StrictMode$AndroidBlockGuardPolicy.onReadFromDisk(StrictMode.java:1504) +06-02 16:38:06.368 D/StrictMode( 8940): at java.io.UnixFileSystem.checkAccess(UnixFileSystem.java:251) +06-02 16:38:06.368 D/StrictMode( 8940): at java.io.File.exists(File.java:815) +06-02 16:38:06.368 D/StrictMode( 8940): at android.app.ContextImpl.ensurePrivateDirExists(ContextImpl.java:605) +06-02 16:38:06.368 D/StrictMode( 8940): at android.app.ContextImpl.ensurePrivateDirExists(ContextImpl.java:596) +06-02 16:38:06.368 D/StrictMode( 8940): at android.app.ContextImpl.getPreferencesDir(ContextImpl.java:552) +06-02 16:38:06.368 D/StrictMode( 8940): at android.app.ContextImpl.getSharedPreferencesPath(ContextImpl.java:747) +06-02 16:38:06.368 D/StrictMode( 8940): at android.app.ContextImpl.getSharedPreferences(ContextImpl.java:400) +06-02 16:38:06.368 D/StrictMode( 8940): at android.content.ContextWrapper.getSharedPreferences(ContextWrapper.java:174) +06-02 16:38:06.368 D/StrictMode( 8940): at org.mozilla.fenix.components.AccountAbnormalities.<init>(AccountAbnormalities.kt:78) +06-02 16:38:06.368 D/StrictMode( 8940): at org.mozilla.fenix.components.AccountAbnormalities.<init>(AccountAbnormalities.kt:60) +06-02 16:38:06.368 D/StrictMode( 8940): at org.mozilla.fenix.components.BackgroundServices.<init>(BackgroundServices.kt:103) +06-02 16:38:06.368 D/StrictMode( 8940): at org.mozilla.fenix.components.Components$backgroundServices$2.invoke(Components.kt:34) +06-02 16:38:06.368 D/StrictMode( 8940): at org.mozilla.fenix.components.Components$backgroundServices$2.invoke(Components.kt:32) +06-02 16:38:06.368 D/StrictMode( 8940): at kotlin.SynchronizedLazyImpl.getValue(LazyJVM.kt:74) +06-02 16:38:06.368 D/StrictMode( 8940): at org.mozilla.fenix.components.Components.getBackgroundServices(Unknown Source:7) +06-02 16:38:06.368 D/StrictMode( 8940): at org.mozilla.fenix.home.HomeMenu$coreMenuItems$2.invoke(HomeMenu.kt:131) +06-02 16:38:06.368 D/StrictMode( 8940): at org.mozilla.fenix.home.HomeMenu$coreMenuItems$2.invoke(HomeMenu.kt:31) +06-02 16:38:06.368 D/StrictMode( 8940): at kotlin.SynchronizedLazyImpl.getValue(LazyJVM.kt:74) +06-02 16:38:06.368 D/StrictMode( 8940): at org.mozilla.fenix.home.HomeMenu.getCoreMenuItems(Unknown Source:7) +06-02 16:38:06.368 D/StrictMode( 8940): at org.mozilla.fenix.home.HomeMenu.<init>(HomeMenu.kt:170) +06-02 16:38:06.368 D/StrictMode( 8940): at org.mozilla.fenix.home.HomeFragment.createHomeMenu(HomeFragment.kt:668) +06-02 16:38:06.368 D/StrictMode( 8940): at org.mozilla.fenix.home.HomeFragment.onViewCreated(HomeFragment.kt:337) +06-02 16:38:06.368 D/StrictMode( 8940): at androidx.fragment.app.FragmentStateManager.createView(FragmentStateManager.java:332) +06-02 16:38:06.368 D/StrictMode( 8940): at androidx.fragment.app.FragmentManager.moveToState(FragmentManager.java:1187) +06-02 16:38:06.368 D/StrictMode( 8940): at androidx.fragment.app.FragmentManager.addAddedFragments(FragmentManager.java:2224) +06-02 16:38:06.368 D/StrictMode( 8940): at androidx.fragment.app.FragmentManager.executeOpsTogether(FragmentManager.java:1997) +06-02 16:38:06.368 D/StrictMode( 8940): at androidx.fragment.app.FragmentManager.removeRedundantOperationsAndExecute(FragmentManager.java:1953) +06-02 16:38:06.368 D/StrictMode( 8940): at androidx.fragment.app.FragmentManager.execPendingActions(FragmentManager.java:1849) +06-02 16:38:06.368 D/StrictMode( 8940): at androidx.fragment.app.FragmentManager.dispatchStateChange(FragmentManager.java:2629) +06-02 16:38:06.368 D/StrictMode( 8940): at androidx.fragment.app.FragmentManager.dispatchActivityCreated(FragmentManager.java:2577) +06-02 16:38:06.368 D/StrictMode( 8940): at androidx.fragment.app.Fragment.performActivityCreated(Fragment.java:2722) +06-02 16:38:06.368 D/StrictMode( 8940): at androidx.fragment.app.FragmentStateManager.activityCreated(FragmentStateManager.java:346) +06-02 16:38:06.368 D/StrictMode( 8940): at androidx.fragment.app.FragmentManager.moveToState(FragmentManager.java:1188) +06-02 16:38:06.368 D/StrictMode( 8940): at androidx.fragment.app.FragmentManager.moveToState(FragmentManager.java:1356) +06-02 16:38:06.368 D/StrictMode( 8940): at androidx.fragment.app.FragmentManager.moveFragmentToExpectedState(FragmentManager.java:1434) +06-02 16:38:06.368 D/StrictMode( 8940): at androidx.fragment.app.FragmentManager.moveToState(FragmentManager.java:1497) +06-02 16:38:06.368 D/StrictMode( 8940): at androidx.fragment.app.FragmentManager.dispatchStateChange(FragmentManager.java:2625) +06-02 16:38:06.368 D/StrictMode( 8940): at androidx.fragment.app.FragmentManager.dispatchActivityCreated(FragmentManager.java:2577) +06-02 16:38:06.368 D/StrictMode( 8940): at androidx.fragment.app.FragmentController.dispatchActivityCreated(FragmentController.java:247) +06-02 16:38:06.368 D/StrictMode( 8940): at androidx.fragment.app.FragmentActivity.onStart(FragmentActivity.java:541) +06-02 16:38:06.368 D/StrictMode( 8940): at androidx.appcompat.app.AppCompatActivity.onStart(AppCompatActivity.java:210) +06-02 16:38:06.368 D/StrictMode( 8940): at android.app.Instrumentation.callActivityOnStart(Instrumentation.java:1391) +06-02 16:38:06.368 D/StrictMode( 8940): at android.app.Activity.performStart(Activity.java:7157) +06-02 16:38:06.368 D/StrictMode( 8940): at android.app.ActivityThread.handleStartActivity(ActivityThread.java:2937) +06-02 16:38:06.368 D/StrictMode( 8940): at android.app.servertransaction.TransactionExecutor.performLifecycleSequence(TransactionExecutor.java:180) +06-02 16:38:06.368 D/StrictMode( 8940): at android.app.servertransaction.TransactionExecutor.cycleToPath(TransactionExecutor.java:165) +06-02 16:38:06.368 D/StrictMode( 8940): at android.app.servertransaction.TransactionExecutor.executeLifecycleState(TransactionExecutor.java:142) +06-02 16:38:06.368 D/StrictMode( 8940): at android.app.servertransaction.TransactionExecutor.execute(Transa +06-02 16:38:06.379 D/StrictMode( 8940): StrictMode policy violation; ~duration=96 ms: android.os.strictmode.DiskReadViolation +06-02 16:38:06.379 D/StrictMode( 8940): at android.os.StrictMode$AndroidBlockGuardPolicy.onReadFromDisk(StrictMode.java:1504) +06-02 16:38:06.379 D/StrictMode( 8940): at java.io.UnixFileSystem.checkAccess(UnixFileSystem.java:251) +06-02 16:38:06.379 D/StrictMode( 8940): at java.io.File.exists(File.java:815) +06-02 16:38:06.379 D/StrictMode( 8940): at android.app.ContextImpl.ensurePrivateDirExists(ContextImpl.java:605) +06-02 16:38:06.379 D/StrictMode( 8940): at android.app.ContextImpl.ensurePrivateDirExists(ContextImpl.java:596) +06-02 16:38:06.379 D/StrictMode( 8940): at android.app.ContextImpl.getPreferencesDir(ContextImpl.java:552) +06-02 16:38:06.379 D/StrictMode( 8940): at android.app.ContextImpl.getSharedPreferencesPath(ContextImpl.java:747) +06-02 16:38:06.379 D/StrictMode( 8940): at android.app.ContextImpl.getSharedPreferences(ContextImpl.java:400) +06-02 16:38:06.379 D/StrictMode( 8940): at android.content.ContextWrapper.getSharedPreferences(ContextWrapper.java:174) +06-02 16:38:06.379 D/StrictMode( 8940): at android.content.ContextWrapper.getSharedPreferences(ContextWrapper.java:174) +06-02 16:38:06.379 D/StrictMode( 8940): at android.preference.PreferenceManager.getDefaultSharedPreferences(PreferenceManager.java:526) +06-02 16:38:06.379 D/StrictMode( 8940): at org.mozilla.fenix.whatsnew.SharedPreferenceWhatsNewStorage.<init>(WhatsNewStorage.kt:35) +06-02 16:38:06.379 D/StrictMode( 8940): at org.mozilla.fenix.whatsnew.WhatsNew$Companion.shouldHighlightWhatsNew(WhatsNew.kt:71) +06-02 16:38:06.379 D/StrictMode( 8940): at org.mozilla.fenix.home.HomeMenu$coreMenuItems$2$whatsNewItem$1.invoke(HomeMenu.kt:92) +06-02 16:38:06.379 D/StrictMode( 8940): at org.mozilla.fenix.home.HomeMenu$coreMenuItems$2$whatsNewItem$1.invoke(HomeMenu.kt:31) +06-02 16:38:06.379 D/StrictMode( 8940): at mozilla.components.browser.menu.ext.BrowserMenuItemKt$getHighlight$3.invoke(BrowserMenuItem.kt:18) +06-02 16:38:06.379 D/StrictMode( 8940): at mozilla.components.browser.menu.ext.BrowserMenuItemKt$getHighlight$3.invoke(Unknown Source:2) +06-02 16:38:06.379 D/StrictMode( 8940): at kotlin.sequences.FilteringSequence$iterator$1.calcNext(Sequences.kt:133) +06-02 16:38:06.379 D/StrictMode( 8940): at kotlin.sequences.FilteringSequence$iterator$1.hasNext(Sequences.kt:156) +06-02 16:38:06.379 D/StrictMode( 8940): at kotlin.sequences.TransformingSequence$iterator$1.hasNext(Sequences.kt:176) +06-02 16:38:06.379 D/StrictMode( 8940): at kotlin.sequences.FilteringSequence$iterator$1.calcNext(Sequences.kt:131) +06-02 16:38:06.379 D/StrictMode( 8940): at kotlin.sequences.FilteringSequence$iterator$1.hasNext(Sequences.kt:156) +06-02 16:38:06.379 D/StrictMode( 8940): at mozilla.components.browser.menu.ext.BrowserMenuItemKt.getHighlight(BrowserMenuItem.kt:31) +06-02 16:38:06.379 D/StrictMode( 8940): at org.mozilla.fenix.home.HomeMenu$coreMenuItems$2.invoke(HomeMenu.kt:149) +06-02 16:38:06.379 D/StrictMode( 8940): at org.mozilla.fenix.home.HomeMenu$coreMenuItems$2.invoke(HomeMenu.kt:31) +06-02 16:38:06.379 D/StrictMode( 8940): at kotlin.SynchronizedLazyImpl.getValue(LazyJVM.kt:74) +06-02 16:38:06.379 D/StrictMode( 8940): at org.mozilla.fenix.home.HomeMenu.getCoreMenuItems(Unknown Source:7) +06-02 16:38:06.379 D/StrictMode( 8940): at org.mozilla.fenix.home.HomeMenu.<init>(HomeMenu.kt:170) +06-02 16:38:06.379 D/StrictMode( 8940): at org.mozilla.fenix.home.HomeFragment.createHomeMenu(HomeFragment.kt:668) +06-02 16:38:06.379 D/StrictMode( 8940): at org.mozilla.fenix.home.HomeFragment.onViewCreated(HomeFragment.kt:337) +06-02 16:38:06.379 D/StrictMode( 8940): at androidx.fragment.app.FragmentStateManager.createView(FragmentStateManager.java:332) +06-02 16:38:06.379 D/StrictMode( 8940): at androidx.fragment.app.FragmentManager.moveToState(FragmentManager.java:1187) +06-02 16:38:06.379 D/StrictMode( 8940): at androidx.fragment.app.FragmentManager.addAddedFragments(FragmentManager.java:2224) +06-02 16:38:06.379 D/StrictMode( 8940): at androidx.fragment.app.FragmentManager.executeOpsTogether(FragmentManager.java:1997) +06-02 16:38:06.379 D/StrictMode( 8940): at androidx.fragment.app.FragmentManager.removeRedundantOperationsAndExecute(FragmentManager.java:1953) +06-02 16:38:06.379 D/StrictMode( 8940): at androidx.fragment.app.FragmentManager.execPendingActions(FragmentManager.java:1849) +06-02 16:38:06.379 D/StrictMode( 8940): at androidx.fragment.app.FragmentManager.dispatchStateChange(FragmentManager.java:2629) +06-02 16:38:06.379 D/StrictMode( 8940): at androidx.fragment.app.FragmentManager.dispatchActivityCreated(FragmentManager.java:2577) +06-02 16:38:06.379 D/StrictMode( 8940): at androidx.fragment.app.Fragment.performActivityCreated(Fragment.java:2722) +06-02 16:38:06.379 D/StrictMode( 8940): at androidx.fragment.app.FragmentStateManager.activityCreated(FragmentStateManager.java:346) +06-02 16:38:06.379 D/StrictMode( 8940): at androidx.fragment.app.FragmentManager.moveToState(FragmentManager.java:1188) +06-02 16:38:06.379 D/StrictMode( 8940): at androidx.fragment.app.FragmentManager.moveToState(FragmentManager.java:1356) +06-02 16:38:06.379 D/StrictMode( 8940): at androidx.fragment.app.FragmentManager.moveFragmentToExpectedState(FragmentManager.java:1434) +06-02 16:38:06.379 D/StrictMode( 8940): at androidx.fragment.app.FragmentManager.moveToState(FragmentManager.java:1497) +06-02 16:38:06.379 D/StrictMode( 8940): at androidx.fragment.app.FragmentManager.dispatchStateChange(FragmentManager.java:2625) +06-02 16:38:06.379 D/StrictMode( 8940): at androidx.fragment.app.FragmentManager.dispatchActivityCreated(FragmentManager.java:2577) +06-02 16:38:06.379 D/StrictMode( 8940): at androidx.fragment.app.FragmentController.dispatchActivityCreated(FragmentController.java:247) +06-02 16:38:06.379 D/StrictMode( 8940): at androidx.fragment.app.FragmentActivity.onStart(FragmentActivity.java:541) +06-02 16:38:06.379 D/StrictMode( 8940): at androidx.appcompat.app.AppCompatAc +06-02 16:38:06.383 D/LeakCanary( 8940): LeakCanary is running and ready to detect leaks +06-02 16:38:06.386 I/libglean_ffi( 8940): glean_core::ping: Collecting baseline +06-02 16:38:06.398 D/libglean_ffi( 8940): glean_core::ping: Storing ping '0f17279d-898f-4274-874d-358ab99b6d4e' at '/data/user/0/org.mozilla.fenix.debug/glean_data/pending_pings/0f17279d-898f-4274-874d-358ab99b6d4e' +06-02 16:38:06.399 I/libglean_ffi( 8940): glean_core: The ping 'baseline' was submitted and will be sent as soon as possible +06-02 16:38:06.424 D/GeckoNetworkManager( 8940): Incoming event enableNotifications for state OnNoListeners -> OnWithListeners +06-02 16:38:06.431 D/GeckoNetworkManager( 8940): New network state: UP, WIFI, WIFI +06-02 16:38:06.436 W/ActivityManager( 1869): Receiver with filter android.content.IntentFilter@68a603a already registered for pid 8940, callerPackage is org.mozilla.fenix.debug +06-02 16:38:06.439 D/GeckoNetworkManager( 8940): Incoming event receivedUpdate for state OnWithListeners -> OnWithListeners +06-02 16:38:06.440 D/GeckoNetworkManager( 8940): New network state: UP, WIFI, WIFI +06-02 16:38:06.449 D/GeckoViewStartup( 8940): onEvent GeckoView:SetLocale +06-02 16:38:06.459 D/GeckoViewStartup( 8940): onEvent GeckoView:ResetUserPrefs +06-02 16:38:06.493 D/GeckoViewRemoteDebugger( 8940): onInit +06-02 16:38:06.495 D/GeckoViewConsole( 8940): enabled = false +06-02 16:38:06.540 D/WIFI_UT ( 1869): got request NetworkRequest [ TRACK_DEFAULT id=33, [ Capabilities: INTERNET&NOT_RESTRICTED&TRUSTED Unwanted: Uid: 10099] ] with score 60 +06-02 16:38:06.540 D/WIFI ( 1869): got request NetworkRequest [ TRACK_DEFAULT id=33, [ Capabilities: INTERNET&NOT_RESTRICTED&TRUSTED Unwanted: Uid: 10099] ] with score 60 +06-02 16:38:06.541 D/PhoneSwitcherNetworkRequstListener( 2121): got request NetworkRequest [ TRACK_DEFAULT id=33, [ Capabilities: INTERNET&NOT_RESTRICTED&TRUSTED Unwanted: Uid: 10099] ] with score 60 +06-02 16:38:06.548 I/lla.fenix.debu( 8940): Background concurrent copying GC freed 21002(1731KB) AllocSpace objects, 41(1252KB) LOS objects, 49% free, 4MB/8MB, paused 488us total 183.846ms +06-02 16:38:06.562 D/GeckoViewStartup( 8940): onEvent GeckoView:SetLocale +06-02 16:38:06.563 D/GeckoViewStartup( 8940): onEvent GeckoView:SetDefaultPrefs +06-02 16:38:06.578 I/chatty ( 8940): uid=10099(org.mozilla.fenix.debug) identical 1 line +06-02 16:38:06.584 D/GeckoViewStartup( 8940): onEvent GeckoView:SetDefaultPrefs +06-02 16:38:06.587 D/gralloc_ranchu( 1619): gralloc_alloc: Creating ashmem region of size 9334784 +06-02 16:38:06.596 D/gralloc_ranchu( 1619): gralloc_alloc: Creating ashmem region of size 9334784 +06-02 16:38:06.602 D/gralloc_ranchu( 1619): gralloc_alloc: Creating ashmem region of size 9334784 +06-02 16:38:06.607 D/ ( 8940): HostConnection::get() New Host Connection established 0xcd97f0c0, tid 9026 +06-02 16:38:06.614 D/GeckoViewStartup( 8940): onEvent GeckoView:SetDefaultPrefs +06-02 16:38:06.616 I/ConfigStore( 8940): android::hardware::configstore::V1_0::ISurfaceFlingerConfigs::hasWideColorDisplay retrieved: 0 +06-02 16:38:06.616 D/GeckoThread( 8988): State changed to LAUNCHED +06-02 16:38:06.616 I/ConfigStore( 8940): android::hardware::configstore::V1_0::ISurfaceFlingerConfigs::hasHDRDisplay retrieved: 0 +06-02 16:38:06.616 I/OpenGLRenderer( 8940): Initialized EGL, version 1.4 +06-02 16:38:06.616 D/OpenGLRenderer( 8940): Swap behavior 1 +06-02 16:38:06.616 W/OpenGLRenderer( 8940): Failed to choose config with EGL_SWAP_BEHAVIOR_PRESERVED, retrying without... +06-02 16:38:06.616 D/OpenGLRenderer( 8940): Swap behavior 0 +06-02 16:38:06.617 D/EGL_emulation( 8940): eglCreateContext: 0xe33868c0: maj 3 min 0 rcv 3 +06-02 16:38:06.618 D/GeckoViewStartup( 8940): onEvent GeckoView:SetDefaultPrefs +06-02 16:38:06.619 I/GeckoThread( 8988): preparing to run Gecko +06-02 16:38:06.619 D/EGL_emulation( 8940): eglMakeCurrent: 0xe33868c0: ver 3 0 (tinfo 0xb3475200) +06-02 16:38:06.624 E/SurfaceFlinger( 1728): ro.sf.lcd_density must be defined as a build property +06-02 16:38:06.631 D/GeckoViewStartup( 8940): onEvent GeckoView:SetDefaultPrefs +06-02 16:38:06.636 W/lla.fenix.debu( 8940): Accessing hidden field Landroid/os/Trace;->TRACE_TAG_APP:J (light greylist, reflection) +06-02 16:38:06.641 D/StrictMode( 8940): StrictMode policy violation: android.os.strictmode.NonSdkApiUsedViolation: Landroid/os/Trace;->TRACE_TAG_APP:J +06-02 16:38:06.641 D/StrictMode( 8940): at android.os.StrictMode.lambda$static$1(StrictMode.java:428) +06-02 16:38:06.641 D/StrictMode( 8940): at android.os.-$$Lambda$StrictMode$lu9ekkHJ2HMz0jd3F8K8MnhenxQ.accept(Unknown Source:2) +06-02 16:38:06.641 D/StrictMode( 8940): at java.lang.Class.getPublicFieldRecursive(Native Method) +06-02 16:38:06.641 D/StrictMode( 8940): at java.lang.Class.getField(Class.java:1599) +06-02 16:38:06.641 D/StrictMode( 8940): at androidx.core.os.TraceCompat.<clinit>(TraceCompat.java:48) +06-02 16:38:06.641 D/StrictMode( 8940): at androidx.core.os.TraceCompat.beginSection(TraceCompat.java:100) +06-02 16:38:06.641 D/StrictMode( 8940): at androidx.recyclerview.widget.RecyclerView.onLayout(RecyclerView.java:4403) +06-02 16:38:06.641 D/StrictMode( 8940): at android.view.View.layout(View.java:20672) +06-02 16:38:06.641 D/StrictMode( 8940): at android.view.ViewGroup.layout(ViewGroup.java:6194) +06-02 16:38:06.641 D/StrictMode( 8940): at com.google.android.material.appbar.HeaderScrollingViewBehavior.layoutChild(HeaderScrollingViewBehavior.java:148) +06-02 16:38:06.641 D/StrictMode( 8940): at com.google.android.material.appbar.ViewOffsetBehavior.onLayoutChild(ViewOffsetBehavior.java:43) +06-02 16:38:06.641 D/StrictMode( 8940): at com.google.android.material.appbar.AppBarLayout$ScrollingViewBehavior.onLayoutChild(AppBarLayout.java:1892) +06-02 16:38:06.641 D/StrictMode( 8940): at androidx.coordinatorlayout.widget.CoordinatorLayout.onLayout(CoordinatorLayout.java:918) +06-02 16:38:06.641 D/StrictMode( 8940): at android.view.View.layout(View.java:20672) +06-02 16:38:06.641 D/StrictMode( 8940): at android.view.ViewGroup.layout(ViewGroup.java:6194) +06-02 16:38:06.641 D/StrictMode( 8940): at android.widget.FrameLayout.layoutChildren(FrameLayout.java:323) +06-02 16:38:06.641 D/StrictMode( 8940): at android.widget.FrameLayout.onLayout(FrameLayout.java:261) +06-02 16:38:06.641 D/StrictMode( 8940): at android.view.View.layout(View.java:20672) +06-02 16:38:06.641 D/StrictMode( 8940): at android.view.ViewGroup.layout(ViewGroup.java:6194) +06-02 16:38:06.641 D/StrictMode( 8940): at android.widget.LinearLayout.setChildFrame(LinearLayout.java:1812) +06-02 16:38:06.641 D/StrictMode( 8940): at android.widget.LinearLayout.layoutVertical(LinearLayout.java:1656) +06-02 16:38:06.641 D/StrictMode( 8940): at android.widget.LinearLayout.onLayout(LinearLayout.java:1565) +06-02 16:38:06.641 D/StrictMode( 8940): at android.view.View.layout(View.java:20672) +06-02 16:38:06.641 D/StrictMode( 8940): at android.view.ViewGroup.layout(ViewGroup.java:6194) +06-02 16:38:06.641 D/StrictMode( 8940): at android.widget.FrameLayout.layoutChildren(FrameLayout.java:323) +06-02 16:38:06.641 D/StrictMode( 8940): at android.widget.FrameLayout.onLayout(FrameLayout.java:261) +06-02 16:38:06.641 D/StrictMode( 8940): at android.view.View.layout(View.java:20672) +06-02 16:38:06.641 D/StrictMode( 8940): at android.view.ViewGroup.layout(ViewGroup.java:6194) +06-02 16:38:06.641 D/StrictMode( 8940): at android.widget.LinearLayout.setChildFrame(LinearLayout.java:1812) +06-02 16:38:06.641 D/StrictMode( 8940): at android.widget.LinearLayout.layoutVertical(LinearLayout.java:1656) +06-02 16:38:06.641 D/StrictMode( 8940): at android.widget.LinearLayout.onLayout(LinearLayout.java:1565) +06-02 16:38:06.641 D/StrictMode( 8940): at android.view.View.layout(View.java:20672) +06-02 16:38:06.641 D/StrictMode( 8940): at android.view.ViewGroup.layout(ViewGroup.java:6194) +06-02 16:38:06.641 D/StrictMode( 8940): at android.widget.FrameLayout.layoutChildren(FrameLayout.java:323) +06-02 16:38:06.641 D/StrictMode( 8940): at android.widget.FrameLayout.onLayout(FrameLayout.java:261) +06-02 16:38:06.641 D/StrictMode( 8940): at android.view.View.layout(View.java:20672) +06-02 16:38:06.641 D/StrictMode( 8940): at android.view.ViewGroup.layout(ViewGroup.java:6194) +06-02 16:38:06.641 D/StrictMode( 8940): at android.widget.LinearLayout.setChildFrame(LinearLayout.java:1812) +06-02 16:38:06.641 D/StrictMode( 8940): at android.widget.LinearLayout.layoutVertical(LinearLayout.java:1656) +06-02 16:38:06.641 D/StrictMode( 8940): at android.widget.LinearLayout.onLayout(LinearLayout.java:1565) +06-02 16:38:06.641 D/StrictMode( 8940): at android.view.View.layout(View.java:20672) +06-02 16:38:06.641 D/StrictMode( 8940): at android.view.ViewGroup.layout(ViewGroup.java:6194) +06-02 16:38:06.641 D/StrictMode( 8940): at android.widget.FrameLayout.layoutChildren(FrameLayout.java:323) +06-02 16:38:06.641 D/StrictMode( 8940): at android.widget.FrameLayout.onLayout(FrameLayout.java:261) +06-02 16:38:06.641 D/StrictMode( 8940): at com.android.internal.policy.DecorView.onLayout(DecorView.java:753) +06-02 16:38:06.641 D/StrictMode( 8940): at android.view.View.layout(View.java:20672) +06-02 16:38:06.641 D/StrictMode( 8940): at android.view.ViewGroup.layout(ViewGroup.java:6194) +06-02 16:38:06.641 D/StrictMode( 8940): at android.view.ViewRootImpl.performLayout(ViewRootImpl.java:2792) +06-02 16:38:06.641 D/StrictMode( 8940): at android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:2319) +06-02 16:38:06.641 D/StrictMode( 8940): at android.view.ViewRootImpl.doTraversal(ViewRootImpl.java:1460) +06-02 16:38:06.641 D/StrictMode( 8940): at android.view.ViewRootImpl$TraversalRunnable.run(ViewRootImpl.java:7183) +06-02 16:38:06.641 D/StrictMode( 8940): at android.view.Choreographer$CallbackRecord.run(Choreographer.java:949) +06-02 16:38:06.641 D/StrictMode( 8940): at android.view.Choreographer.doCallbacks(Choreographer.java:761) +06-02 16:38:06.641 D/StrictMode( 8940): at android.view.Choreographer.doFrame(Choreographer.java:696) +06-02 16:38:06.641 D/StrictMode( 8940): at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:935) +06-02 16:38:06.641 D/StrictMode( 8940): at android.os.Handler.handleCallback(Handler.java:873) +06-02 16:38:06.641 D/StrictMode( 8940): at android.os.Handler.dispatchMessage(Handler.java:99) +06-02 16:38:06.641 D/StrictMode( 8940): at android.os.Looper.loop(Looper.java:193) +06-02 16:38:06.641 D/StrictMode( 8940): at android.app.ActivityThread.main(ActivityThread.java:6669) +06-02 16:38:06.641 D/StrictMode( 8940): at java.lang.reflect.Method.invoke(Native Method) +06-02 16:38:06.641 D/StrictMode( 8940): at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:493) +06-02 16:38:06.641 D/StrictMode( 8940): at com.and +06-02 16:38:06.641 W/lla.fenix.debu( 8940): Accessing hidden method Landroid/os/Trace;->isTagEnabled(J)Z (light greylist, reflection) +06-02 16:38:06.645 D/StrictMode( 8940): StrictMode policy violation: android.os.strictmode.NonSdkApiUsedViolation: Landroid/os/Trace;->isTagEnabled(J)Z +06-02 16:38:06.645 D/StrictMode( 8940): at android.os.StrictMode.lambda$static$1(StrictMode.java:428) +06-02 16:38:06.645 D/StrictMode( 8940): at android.os.-$$Lambda$StrictMode$lu9ekkHJ2HMz0jd3F8K8MnhenxQ.accept(Unknown Source:2) +06-02 16:38:06.645 D/StrictMode( 8940): at java.lang.Class.getDeclaredMethodInternal(Native Method) +06-02 16:38:06.645 D/StrictMode( 8940): at java.lang.Class.getPublicMethodRecursive(Class.java:2075) +06-02 16:38:06.645 D/StrictMode( 8940): at java.lang.Class.getMethod(Class.java:2063) +06-02 16:38:06.645 D/StrictMode( 8940): at java.lang.Class.getMethod(Class.java:1690) +06-02 16:38:06.645 D/StrictMode( 8940): at androidx.core.os.TraceCompat.<clinit>(TraceCompat.java:51) +06-02 16:38:06.645 D/StrictMode( 8940): at androidx.core.os.TraceCompat.beginSection(TraceCompat.java:100) +06-02 16:38:06.645 D/StrictMode( 8940): at androidx.recyclerview.widget.RecyclerView.onLayout(RecyclerView.java:4403) +06-02 16:38:06.645 D/StrictMode( 8940): at android.view.View.layout(View.java:20672) +06-02 16:38:06.645 D/StrictMode( 8940): at android.view.ViewGroup.layout(ViewGroup.java:6194) +06-02 16:38:06.645 D/StrictMode( 8940): at com.google.android.material.appbar.HeaderScrollingViewBehavior.layoutChild(HeaderScrollingViewBehavior.java:148) +06-02 16:38:06.645 D/StrictMode( 8940): at com.google.android.material.appbar.ViewOffsetBehavior.onLayoutChild(ViewOffsetBehavior.java:43) +06-02 16:38:06.645 D/StrictMode( 8940): at com.google.android.material.appbar.AppBarLayout$ScrollingViewBehavior.onLayoutChild(AppBarLayout.java:1892) +06-02 16:38:06.645 D/StrictMode( 8940): at androidx.coordinatorlayout.widget.CoordinatorLayout.onLayout(CoordinatorLayout.java:918) +06-02 16:38:06.645 D/StrictMode( 8940): at android.view.View.layout(View.java:20672) +06-02 16:38:06.645 D/StrictMode( 8940): at android.view.ViewGroup.layout(ViewGroup.java:6194) +06-02 16:38:06.645 D/StrictMode( 8940): at android.widget.FrameLayout.layoutChildren(FrameLayout.java:323) +06-02 16:38:06.645 D/StrictMode( 8940): at android.widget.FrameLayout.onLayout(FrameLayout.java:261) +06-02 16:38:06.645 D/StrictMode( 8940): at android.view.View.layout(View.java:20672) +06-02 16:38:06.645 D/StrictMode( 8940): at android.view.ViewGroup.layout(ViewGroup.java:6194) +06-02 16:38:06.645 D/StrictMode( 8940): at android.widget.LinearLayout.setChildFrame(LinearLayout.java:1812) +06-02 16:38:06.645 D/StrictMode( 8940): at android.widget.LinearLayout.layoutVertical(LinearLayout.java:1656) +06-02 16:38:06.645 D/StrictMode( 8940): at android.widget.LinearLayout.onLayout(LinearLayout.java:1565) +06-02 16:38:06.645 D/StrictMode( 8940): at android.view.View.layout(View.java:20672) +06-02 16:38:06.645 D/StrictMode( 8940): at android.view.ViewGroup.layout(ViewGroup.java:6194) +06-02 16:38:06.645 D/StrictMode( 8940): at android.widget.FrameLayout.layoutChildren(FrameLayout.java:323) +06-02 16:38:06.645 D/StrictMode( 8940): at android.widget.FrameLayout.onLayout(FrameLayout.java:261) +06-02 16:38:06.645 D/StrictMode( 8940): at android.view.View.layout(View.java:20672) +06-02 16:38:06.645 D/StrictMode( 8940): at android.view.ViewGroup.layout(ViewGroup.java:6194) +06-02 16:38:06.645 D/StrictMode( 8940): at android.widget.LinearLayout.setChildFrame(LinearLayout.java:1812) +06-02 16:38:06.645 D/StrictMode( 8940): at android.widget.LinearLayout.layoutVertical(LinearLayout.java:1656) +06-02 16:38:06.645 D/StrictMode( 8940): at android.widget.LinearLayout.onLayout(LinearLayout.java:1565) +06-02 16:38:06.645 D/StrictMode( 8940): at android.view.View.layout(View.java:20672) +06-02 16:38:06.645 D/StrictMode( 8940): at android.view.ViewGroup.layout(ViewGroup.java:6194) +06-02 16:38:06.645 D/StrictMode( 8940): at android.widget.FrameLayout.layoutChildren(FrameLayout.java:323) +06-02 16:38:06.645 D/StrictMode( 8940): at android.widget.FrameLayout.onLayout(FrameLayout.java:261) +06-02 16:38:06.645 D/StrictMode( 8940): at android.view.View.layout(View.java:20672) +06-02 16:38:06.645 D/StrictMode( 8940): at android.view.ViewGroup.layout(ViewGroup.java:6194) +06-02 16:38:06.645 D/StrictMode( 8940): at android.widget.LinearLayout.setChildFrame(LinearLayout.java:1812) +06-02 16:38:06.645 D/StrictMode( 8940): at android.widget.LinearLayout.layoutVertical(LinearLayout.java:1656) +06-02 16:38:06.645 D/StrictMode( 8940): at android.widget.LinearLayout.onLayout(LinearLayout.java:1565) +06-02 16:38:06.645 D/StrictMode( 8940): at android.view.View.layout(View.java:20672) +06-02 16:38:06.645 D/StrictMode( 8940): at android.view.ViewGroup.layout(ViewGroup.java:6194) +06-02 16:38:06.645 D/StrictMode( 8940): at android.widget.FrameLayout.layoutChildren(FrameLayout.java:323) +06-02 16:38:06.645 D/StrictMode( 8940): at android.widget.FrameLayout.onLayout(FrameLayout.java:261) +06-02 16:38:06.645 D/StrictMode( 8940): at com.android.internal.policy.DecorView.onLayout(DecorView.java:753) +06-02 16:38:06.645 D/StrictMode( 8940): at android.view.View.layout(View.java:20672) +06-02 16:38:06.645 D/StrictMode( 8940): at android.view.ViewGroup.layout(ViewGroup.java:6194) +06-02 16:38:06.645 D/StrictMode( 8940): at android.view.ViewRootImpl.performLayout(ViewRootImpl.java:2792) +06-02 16:38:06.645 D/StrictMode( 8940): at android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:2319) +06-02 16:38:06.645 D/StrictMode( 8940): at android.view.ViewRootImpl.doTraversal(ViewRootImpl.java:1460) +06-02 16:38:06.645 D/StrictMode( 8940): at android.view.ViewRootImpl$TraversalRunnable.run(ViewRootImpl.java:7183) +06-02 16:38:06.645 D/StrictMode( 8940): at android.view.Choreographer$CallbackRecord.run(Choreographer.java:949) +06-02 16:38:06.645 D/StrictMode( 8940): at android.view.Choreographer.doCallbacks(Choreographer.java:761) +06-02 16:38:06.645 D/StrictMode( 8940): at android.view.Choreographer.doFrame(Choreographer.java:696) +06-02 16:38:06.645 D/StrictMode( 8940): at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:935) +06-02 16:38:06.645 D/StrictMode( 8940): at android.os.Handler.handleCallback(Handler.java:873) +06-02 16:38:06.645 D/StrictMode( 8940): at android.os.Handler.dispatchMessage(Handler.java:99) +06-02 16:38:06.645 D/StrictMode( 8940): at android.os.Looper.loop(Looper.java:193) +06-02 16:38:06.645 D/StrictMode( 8940): at android.app.ActivityThread.main(ActivityThread.java:6669) +06-02 16:38:06.645 D/StrictMode( 8940): at java.lang.reflect.Method.invoke +06-02 16:38:06.645 W/lla.fenix.debu( 8940): Accessing hidden method Landroid/os/Trace;->asyncTraceBegin(JLjava/lang/String;I)V (light greylist, reflection) +06-02 16:38:06.653 D/StrictMode( 8940): StrictMode policy violation: android.os.strictmode.NonSdkApiUsedViolation: Landroid/os/Trace;->asyncTraceBegin(JLjava/lang/String;I)V +06-02 16:38:06.653 D/StrictMode( 8940): at android.os.StrictMode.lambda$static$1(StrictMode.java:428) +06-02 16:38:06.653 D/StrictMode( 8940): at android.os.-$$Lambda$StrictMode$lu9ekkHJ2HMz0jd3F8K8MnhenxQ.accept(Unknown Source:2) +06-02 16:38:06.653 D/StrictMode( 8940): at java.lang.Class.getDeclaredMethodInternal(Native Method) +06-02 16:38:06.653 D/StrictMode( 8940): at java.lang.Class.getPublicMethodRecursive(Class.java:2075) +06-02 16:38:06.653 D/StrictMode( 8940): at java.lang.Class.getMethod(Class.java:2063) +06-02 16:38:06.653 D/StrictMode( 8940): at java.lang.Class.getMethod(Class.java:1690) +06-02 16:38:06.653 D/StrictMode( 8940): at androidx.core.os.TraceCompat.<clinit>(TraceCompat.java:52) +06-02 16:38:06.653 D/StrictMode( 8940): at androidx.core.os.TraceCompat.beginSection(TraceCompat.java:100) +06-02 16:38:06.653 D/StrictMode( 8940): at androidx.recyclerview.widget.RecyclerView.onLayout(RecyclerView.java:4403) +06-02 16:38:06.653 D/StrictMode( 8940): at android.view.View.layout(View.java:20672) +06-02 16:38:06.653 D/StrictMode( 8940): at android.view.ViewGroup.layout(ViewGroup.java:6194) +06-02 16:38:06.653 D/StrictMode( 8940): at com.google.android.material.appbar.HeaderScrollingViewBehavior.layoutChild(HeaderScrollingViewBehavior.java:148) +06-02 16:38:06.653 D/StrictMode( 8940): at com.google.android.material.appbar.ViewOffsetBehavior.onLayoutChild(ViewOffsetBehavior.java:43) +06-02 16:38:06.653 D/StrictMode( 8940): at com.google.android.material.appbar.AppBarLayout$ScrollingViewBehavior.onLayoutChild(AppBarLayout.java:1892) +06-02 16:38:06.653 D/StrictMode( 8940): at androidx.coordinatorlayout.widget.CoordinatorLayout.onLayout(CoordinatorLayout.java:918) +06-02 16:38:06.653 D/StrictMode( 8940): at android.view.View.layout(View.java:20672) +06-02 16:38:06.653 D/StrictMode( 8940): at android.view.ViewGroup.layout(ViewGroup.java:6194) +06-02 16:38:06.653 D/StrictMode( 8940): at android.widget.FrameLayout.layoutChildren(FrameLayout.java:323) +06-02 16:38:06.653 D/StrictMode( 8940): at android.widget.FrameLayout.onLayout(FrameLayout.java:261) +06-02 16:38:06.653 D/StrictMode( 8940): at android.view.View.layout(View.java:20672) +06-02 16:38:06.653 D/StrictMode( 8940): at android.view.ViewGroup.layout(ViewGroup.java:6194) +06-02 16:38:06.653 D/StrictMode( 8940): at android.widget.LinearLayout.setChildFrame(LinearLayout.java:1812) +06-02 16:38:06.653 D/StrictMode( 8940): at android.widget.LinearLayout.layoutVertical(LinearLayout.java:1656) +06-02 16:38:06.653 D/StrictMode( 8940): at android.widget.LinearLayout.onLayout(LinearLayout.java:1565) +06-02 16:38:06.653 D/StrictMode( 8940): at android.view.View.layout(View.java:20672) +06-02 16:38:06.653 D/StrictMode( 8940): at android.view.ViewGroup.layout(ViewGroup.java:6194) +06-02 16:38:06.653 D/StrictMode( 8940): at android.widget.FrameLayout.layoutChildren(FrameLayout.java:323) +06-02 16:38:06.653 D/StrictMode( 8940): at android.widget.FrameLayout.onLayout(FrameLayout.java:261) +06-02 16:38:06.653 D/StrictMode( 8940): at android.view.View.layout(View.java:20672) +06-02 16:38:06.653 D/StrictMode( 8940): at android.view.ViewGroup.layout(ViewGroup.java:6194) +06-02 16:38:06.653 D/StrictMode( 8940): at android.widget.LinearLayout.setChildFrame(LinearLayout.java:1812) +06-02 16:38:06.653 D/StrictMode( 8940): at android.widget.LinearLayout.layoutVertical(LinearLayout.java:1656) +06-02 16:38:06.653 D/StrictMode( 8940): at android.widget.LinearLayout.onLayout(LinearLayout.java:1565) +06-02 16:38:06.653 D/StrictMode( 8940): at android.view.View.layout(View.java:20672) +06-02 16:38:06.653 D/StrictMode( 8940): at android.view.ViewGroup.layout(ViewGroup.java:6194) +06-02 16:38:06.653 D/StrictMode( 8940): at android.widget.FrameLayout.layoutChildren(FrameLayout.java:323) +06-02 16:38:06.653 D/StrictMode( 8940): at android.widget.FrameLayout.onLayout(FrameLayout.java:261) +06-02 16:38:06.653 D/StrictMode( 8940): at android.view.View.layout(View.java:20672) +06-02 16:38:06.653 D/StrictMode( 8940): at android.view.ViewGroup.layout(ViewGroup.java:6194) +06-02 16:38:06.653 D/StrictMode( 8940): at android.widget.LinearLayout.setChildFrame(LinearLayout.java:1812) +06-02 16:38:06.653 D/StrictMode( 8940): at android.widget.LinearLayout.layoutVertical(LinearLayout.java:1656) +06-02 16:38:06.653 D/StrictMode( 8940): at android.widget.LinearLayout.onLayout(LinearLayout.java:1565) +06-02 16:38:06.653 D/StrictMode( 8940): at android.view.View.layout(View.java:20672) +06-02 16:38:06.653 D/StrictMode( 8940): at android.view.ViewGroup.layout(ViewGroup.java:6194) +06-02 16:38:06.653 D/StrictMode( 8940): at android.widget.FrameLayout.layoutChildren(FrameLayout.java:323) +06-02 16:38:06.653 D/StrictMode( 8940): at android.widget.FrameLayout.onLayout(FrameLayout.java:261) +06-02 16:38:06.653 D/StrictMode( 8940): at com.android.internal.policy.DecorView.onLayout(DecorView.java:753) +06-02 16:38:06.653 D/StrictMode( 8940): at android.view.View.layout(View.java:20672) +06-02 16:38:06.653 D/StrictMode( 8940): at android.view.ViewGroup.layout(ViewGroup.java:6194) +06-02 16:38:06.653 D/StrictMode( 8940): at android.view.ViewRootImpl.performLayout(ViewRootImpl.java:2792) +06-02 16:38:06.653 D/StrictMode( 8940): at android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:2319) +06-02 16:38:06.653 D/StrictMode( 8940): at android.view.ViewRootImpl.doTraversal(ViewRootImpl.java:1460) +06-02 16:38:06.653 D/StrictMode( 8940): at android.view.ViewRootImpl$TraversalRunnable.run(ViewRootImpl.java:7183) +06-02 16:38:06.653 D/StrictMode( 8940): at android.view.Choreographer$CallbackRecord.run(Choreographer.java:949) +06-02 16:38:06.653 D/StrictMode( 8940): at android.view.Choreographer.doCallbacks(Choreographer.java:761) +06-02 16:38:06.653 D/StrictMode( 8940): at android.view.Choreographer.doFrame(Choreographer.java:696) +06-02 16:38:06.653 D/StrictMode( 8940): at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:935) +06-02 16:38:06.653 D/StrictMode( 8940): at android.os.Handler.handleCallback(Handler.java:873) +06-02 16:38:06.653 D/StrictMode( 8940): at android.os.Handler.dispatchMessage(Handler.java:99) +06-02 16:38:06.653 D/StrictMode( 8940): at android.os.Looper.loop(Looper.java:193) +06-02 16:38:06.653 D/StrictMode( 8940): at android.app.ActivityThread.main(ActivityThread.java:6669) +06-02 16:38:06.653 D/StrictMode( 8940): at java.lang +06-02 16:38:06.653 W/lla.fenix.debu( 8940): Accessing hidden method Landroid/os/Trace;->asyncTraceEnd(JLjava/lang/String;I)V (light greylist, reflection) +06-02 16:38:06.658 D/GeckoViewStartup( 8940): onEvent GeckoView:SetDefaultPrefs +06-02 16:38:06.661 D/StrictMode( 8940): StrictMode policy violation: android.os.strictmode.NonSdkApiUsedViolation: Landroid/os/Trace;->asyncTraceEnd(JLjava/lang/String;I)V +06-02 16:38:06.661 D/StrictMode( 8940): at android.os.StrictMode.lambda$static$1(StrictMode.java:428) +06-02 16:38:06.661 D/StrictMode( 8940): at android.os.-$$Lambda$StrictMode$lu9ekkHJ2HMz0jd3F8K8MnhenxQ.accept(Unknown Source:2) +06-02 16:38:06.661 D/StrictMode( 8940): at java.lang.Class.getDeclaredMethodInternal(Native Method) +06-02 16:38:06.661 D/StrictMode( 8940): at java.lang.Class.getPublicMethodRecursive(Class.java:2075) +06-02 16:38:06.661 D/StrictMode( 8940): at java.lang.Class.getMethod(Class.java:2063) +06-02 16:38:06.661 D/StrictMode( 8940): at java.lang.Class.getMethod(Class.java:1690) +06-02 16:38:06.661 D/StrictMode( 8940): at androidx.core.os.TraceCompat.<clinit>(TraceCompat.java:54) +06-02 16:38:06.661 D/StrictMode( 8940): at androidx.core.os.TraceCompat.beginSection(TraceCompat.java:100) +06-02 16:38:06.661 D/StrictMode( 8940): at androidx.recyclerview.widget.RecyclerView.onLayout(RecyclerView.java:4403) +06-02 16:38:06.661 D/StrictMode( 8940): at android.view.View.layout(View.java:20672) +06-02 16:38:06.661 D/StrictMode( 8940): at android.view.ViewGroup.layout(ViewGroup.java:6194) +06-02 16:38:06.661 D/StrictMode( 8940): at com.google.android.material.appbar.HeaderScrollingViewBehavior.layoutChild(HeaderScrollingViewBehavior.java:148) +06-02 16:38:06.661 D/StrictMode( 8940): at com.google.android.material.appbar.ViewOffsetBehavior.onLayoutChild(ViewOffsetBehavior.java:43) +06-02 16:38:06.661 D/StrictMode( 8940): at com.google.android.material.appbar.AppBarLayout$ScrollingViewBehavior.onLayoutChild(AppBarLayout.java:1892) +06-02 16:38:06.661 D/StrictMode( 8940): at androidx.coordinatorlayout.widget.CoordinatorLayout.onLayout(CoordinatorLayout.java:918) +06-02 16:38:06.661 D/StrictMode( 8940): at android.view.View.layout(View.java:20672) +06-02 16:38:06.661 D/StrictMode( 8940): at android.view.ViewGroup.layout(ViewGroup.java:6194) +06-02 16:38:06.661 D/StrictMode( 8940): at android.widget.FrameLayout.layoutChildren(FrameLayout.java:323) +06-02 16:38:06.661 D/StrictMode( 8940): at android.widget.FrameLayout.onLayout(FrameLayout.java:261) +06-02 16:38:06.661 D/StrictMode( 8940): at android.view.View.layout(View.java:20672) +06-02 16:38:06.661 D/StrictMode( 8940): at android.view.ViewGroup.layout(ViewGroup.java:6194) +06-02 16:38:06.661 D/StrictMode( 8940): at android.widget.LinearLayout.setChildFrame(LinearLayout.java:1812) +06-02 16:38:06.661 D/StrictMode( 8940): at android.widget.LinearLayout.layoutVertical(LinearLayout.java:1656) +06-02 16:38:06.661 D/StrictMode( 8940): at android.widget.LinearLayout.onLayout(LinearLayout.java:1565) +06-02 16:38:06.661 D/StrictMode( 8940): at android.view.View.layout(View.java:20672) +06-02 16:38:06.661 D/StrictMode( 8940): at android.view.ViewGroup.layout(ViewGroup.java:6194) +06-02 16:38:06.661 D/StrictMode( 8940): at android.widget.FrameLayout.layoutChildren(FrameLayout.java:323) +06-02 16:38:06.661 D/StrictMode( 8940): at android.widget.FrameLayout.onLayout(FrameLayout.java:261) +06-02 16:38:06.661 D/StrictMode( 8940): at android.view.View.layout(View.java:20672) +06-02 16:38:06.661 D/StrictMode( 8940): at android.view.ViewGroup.layout(ViewGroup.java:6194) +06-02 16:38:06.661 D/StrictMode( 8940): at android.widget.LinearLayout.setChildFrame(LinearLayout.java:1812) +06-02 16:38:06.661 D/StrictMode( 8940): at android.widget.LinearLayout.layoutVertical(LinearLayout.java:1656) +06-02 16:38:06.661 D/StrictMode( 8940): at android.widget.LinearLayout.onLayout(LinearLayout.java:1565) +06-02 16:38:06.661 D/StrictMode( 8940): at android.view.View.layout(View.java:20672) +06-02 16:38:06.661 D/StrictMode( 8940): at android.view.ViewGroup.layout(ViewGroup.java:6194) +06-02 16:38:06.661 D/StrictMode( 8940): at android.widget.FrameLayout.layoutChildren(FrameLayout.java:323) +06-02 16:38:06.661 D/StrictMode( 8940): at android.widget.FrameLayout.onLayout(FrameLayout.java:261) +06-02 16:38:06.661 D/StrictMode( 8940): at android.view.View.layout(View.java:20672) +06-02 16:38:06.661 D/StrictMode( 8940): at android.view.ViewGroup.layout(ViewGroup.java:6194) +06-02 16:38:06.661 D/StrictMode( 8940): at android.widget.LinearLayout.setChildFrame(LinearLayout.java:1812) +06-02 16:38:06.661 D/StrictMode( 8940): at android.widget.LinearLayout.layoutVertical(LinearLayout.java:1656) +06-02 16:38:06.661 D/StrictMode( 8940): at android.widget.LinearLayout.onLayout(LinearLayout.java:1565) +06-02 16:38:06.661 D/StrictMode( 8940): at android.view.View.layout(View.java:20672) +06-02 16:38:06.661 D/StrictMode( 8940): at android.view.ViewGroup.layout(ViewGroup.java:6194) +06-02 16:38:06.661 D/StrictMode( 8940): at android.widget.FrameLayout.layoutChildren(FrameLayout.java:323) +06-02 16:38:06.661 D/StrictMode( 8940): at android.widget.FrameLayout.onLayout(FrameLayout.java:261) +06-02 16:38:06.661 D/StrictMode( 8940): at com.android.internal.policy.DecorView.onLayout(DecorView.java:753) +06-02 16:38:06.661 D/StrictMode( 8940): at android.view.View.layout(View.java:20672) +06-02 16:38:06.661 D/StrictMode( 8940): at android.view.ViewGroup.layout(ViewGroup.java:6194) +06-02 16:38:06.661 D/StrictMode( 8940): at android.view.ViewRootImpl.performLayout(ViewRootImpl.java:2792) +06-02 16:38:06.661 D/StrictMode( 8940): at android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:2319) +06-02 16:38:06.661 D/StrictMode( 8940): at android.view.ViewRootImpl.doTraversal(ViewRootImpl.java:1460) +06-02 16:38:06.661 D/StrictMode( 8940): at android.view.ViewRootImpl$TraversalRunnable.run(ViewRootImpl.java:7183) +06-02 16:38:06.661 D/StrictMode( 8940): at android.view.Choreographer$CallbackRecord.run(Choreographer.java:949) +06-02 16:38:06.661 D/StrictMode( 8940): at android.view.Choreographer.doCallbacks(Choreographer.java:761) +06-02 16:38:06.661 D/StrictMode( 8940): at android.view.Choreographer.doFrame(Choreographer.java:696) +06-02 16:38:06.661 D/StrictMode( 8940): at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:935) +06-02 16:38:06.661 D/StrictMode( 8940): at android.os.Handler.handleCallback(Handler.java:873) +06-02 16:38:06.661 D/StrictMode( 8940): at android.os.Handler.dispatchMessage(Handler.java:99) +06-02 16:38:06.661 D/StrictMode( 8940): at android.os.Looper.loop(Looper.java:193) +06-02 16:38:06.661 D/StrictMode( 8940): at android.app.ActivityThread.main(ActivityThread.java:6669) +06-02 16:38:06.661 D/StrictMode( 8940): at java.lang.r +06-02 16:38:06.662 W/lla.fenix.debu( 8940): Accessing hidden method Landroid/os/Trace;->traceCounter(JLjava/lang/String;I)V (light greylist, reflection) +06-02 16:38:06.663 D/GeckoViewStartup( 8940): onEvent GeckoView:SetDefaultPrefs +06-02 16:38:06.664 D/GeckoViewStartup( 8940): onEvent GeckoView:SetDefaultPrefs +06-02 16:38:06.670 D/StrictMode( 8940): StrictMode policy violation: android.os.strictmode.NonSdkApiUsedViolation: Landroid/os/Trace;->traceCounter(JLjava/lang/String;I)V +06-02 16:38:06.670 D/StrictMode( 8940): at android.os.StrictMode.lambda$static$1(StrictMode.java:428) +06-02 16:38:06.670 D/StrictMode( 8940): at android.os.-$$Lambda$StrictMode$lu9ekkHJ2HMz0jd3F8K8MnhenxQ.accept(Unknown Source:2) +06-02 16:38:06.670 D/StrictMode( 8940): at java.lang.Class.getDeclaredMethodInternal(Native Method) +06-02 16:38:06.670 D/StrictMode( 8940): at java.lang.Class.getPublicMethodRecursive(Class.java:2075) +06-02 16:38:06.670 D/StrictMode( 8940): at java.lang.Class.getMethod(Class.java:2063) +06-02 16:38:06.670 D/StrictMode( 8940): at java.lang.Class.getMethod(Class.java:1690) +06-02 16:38:06.670 D/StrictMode( 8940): at androidx.core.os.TraceCompat.<clinit>(TraceCompat.java:56) +06-02 16:38:06.670 D/StrictMode( 8940): at androidx.core.os.TraceCompat.beginSection(TraceCompat.java:100) +06-02 16:38:06.670 D/StrictMode( 8940): at androidx.recyclerview.widget.RecyclerView.onLayout(RecyclerView.java:4403) +06-02 16:38:06.670 D/StrictMode( 8940): at android.view.View.layout(View.java:20672) +06-02 16:38:06.670 D/StrictMode( 8940): at android.view.ViewGroup.layout(ViewGroup.java:6194) +06-02 16:38:06.670 D/StrictMode( 8940): at com.google.android.material.appbar.HeaderScrollingViewBehavior.layoutChild(HeaderScrollingViewBehavior.java:148) +06-02 16:38:06.670 D/StrictMode( 8940): at com.google.android.material.appbar.ViewOffsetBehavior.onLayoutChild(ViewOffsetBehavior.java:43) +06-02 16:38:06.670 D/StrictMode( 8940): at com.google.android.material.appbar.AppBarLayout$ScrollingViewBehavior.onLayoutChild(AppBarLayout.java:1892) +06-02 16:38:06.670 D/StrictMode( 8940): at androidx.coordinatorlayout.widget.CoordinatorLayout.onLayout(CoordinatorLayout.java:918) +06-02 16:38:06.670 D/StrictMode( 8940): at android.view.View.layout(View.java:20672) +06-02 16:38:06.670 D/StrictMode( 8940): at android.view.ViewGroup.layout(ViewGroup.java:6194) +06-02 16:38:06.670 D/StrictMode( 8940): at android.widget.FrameLayout.layoutChildren(FrameLayout.java:323) +06-02 16:38:06.670 D/StrictMode( 8940): at android.widget.FrameLayout.onLayout(FrameLayout.java:261) +06-02 16:38:06.670 D/StrictMode( 8940): at android.view.View.layout(View.java:20672) +06-02 16:38:06.670 D/StrictMode( 8940): at android.view.ViewGroup.layout(ViewGroup.java:6194) +06-02 16:38:06.670 D/StrictMode( 8940): at android.widget.LinearLayout.setChildFrame(LinearLayout.java:1812) +06-02 16:38:06.670 D/StrictMode( 8940): at android.widget.LinearLayout.layoutVertical(LinearLayout.java:1656) +06-02 16:38:06.670 D/StrictMode( 8940): at android.widget.LinearLayout.onLayout(LinearLayout.java:1565) +06-02 16:38:06.670 D/StrictMode( 8940): at android.view.View.layout(View.java:20672) +06-02 16:38:06.670 D/StrictMode( 8940): at android.view.ViewGroup.layout(ViewGroup.java:6194) +06-02 16:38:06.670 D/StrictMode( 8940): at android.widget.FrameLayout.layoutChildren(FrameLayout.java:323) +06-02 16:38:06.670 D/StrictMode( 8940): at android.widget.FrameLayout.onLayout(FrameLayout.java:261) +06-02 16:38:06.670 D/StrictMode( 8940): at android.view.View.layout(View.java:20672) +06-02 16:38:06.670 D/StrictMode( 8940): at android.view.ViewGroup.layout(ViewGroup.java:6194) +06-02 16:38:06.670 D/StrictMode( 8940): at android.widget.LinearLayout.setChildFrame(LinearLayout.java:1812) +06-02 16:38:06.670 D/StrictMode( 8940): at android.widget.LinearLayout.layoutVertical(LinearLayout.java:1656) +06-02 16:38:06.670 D/StrictMode( 8940): at android.widget.LinearLayout.onLayout(LinearLayout.java:1565) +06-02 16:38:06.670 D/StrictMode( 8940): at android.view.View.layout(View.java:20672) +06-02 16:38:06.670 D/StrictMode( 8940): at android.view.ViewGroup.layout(ViewGroup.java:6194) +06-02 16:38:06.670 D/StrictMode( 8940): at android.widget.FrameLayout.layoutChildren(FrameLayout.java:323) +06-02 16:38:06.670 D/StrictMode( 8940): at android.widget.FrameLayout.onLayout(FrameLayout.java:261) +06-02 16:38:06.670 D/StrictMode( 8940): at android.view.View.layout(View.java:20672) +06-02 16:38:06.670 D/StrictMode( 8940): at android.view.ViewGroup.layout(ViewGroup.java:6194) +06-02 16:38:06.670 D/StrictMode( 8940): at android.widget.LinearLayout.setChildFrame(LinearLayout.java:1812) +06-02 16:38:06.670 D/StrictMode( 8940): at android.widget.LinearLayout.layoutVertical(LinearLayout.java:1656) +06-02 16:38:06.670 D/StrictMode( 8940): at android.widget.LinearLayout.onLayout(LinearLayout.java:1565) +06-02 16:38:06.670 D/StrictMode( 8940): at android.view.View.layout(View.java:20672) +06-02 16:38:06.670 D/StrictMode( 8940): at android.view.ViewGroup.layout(ViewGroup.java:6194) +06-02 16:38:06.670 D/StrictMode( 8940): at android.widget.FrameLayout.layoutChildren(FrameLayout.java:323) +06-02 16:38:06.670 D/StrictMode( 8940): at android.widget.FrameLayout.onLayout(FrameLayout.java:261) +06-02 16:38:06.670 D/StrictMode( 8940): at com.android.internal.policy.DecorView.onLayout(DecorView.java:753) +06-02 16:38:06.670 D/StrictMode( 8940): at android.view.View.layout(View.java:20672) +06-02 16:38:06.670 D/StrictMode( 8940): at android.view.ViewGroup.layout(ViewGroup.java:6194) +06-02 16:38:06.670 D/StrictMode( 8940): at android.view.ViewRootImpl.performLayout(ViewRootImpl.java:2792) +06-02 16:38:06.670 D/StrictMode( 8940): at android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:2319) +06-02 16:38:06.670 D/StrictMode( 8940): at android.view.ViewRootImpl.doTraversal(ViewRootImpl.java:1460) +06-02 16:38:06.670 D/StrictMode( 8940): at android.view.ViewRootImpl$TraversalRunnable.run(ViewRootImpl.java:7183) +06-02 16:38:06.670 D/StrictMode( 8940): at android.view.Choreographer$CallbackRecord.run(Choreographer.java:949) +06-02 16:38:06.670 D/StrictMode( 8940): at android.view.Choreographer.doCallbacks(Choreographer.java:761) +06-02 16:38:06.670 D/StrictMode( 8940): at android.view.Choreographer.doFrame(Choreographer.java:696) +06-02 16:38:06.670 D/StrictMode( 8940): at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:935) +06-02 16:38:06.670 D/StrictMode( 8940): at android.os.Handler.handleCallback(Handler.java:873) +06-02 16:38:06.670 D/StrictMode( 8940): at android.os.Handler.dispatchMessage(Handler.java:99) +06-02 16:38:06.670 D/StrictMode( 8940): at android.os.Looper.loop(Looper.java:193) +06-02 16:38:06.670 D/StrictMode( 8940): at android.app.ActivityThread.main(ActivityThread.java:6669) +06-02 16:38:06.670 D/StrictMode( 8940): at java.lang.re +06-02 16:38:06.673 D/GeckoViewStartup( 8940): onEvent GeckoView:SetDefaultPrefs +06-02 16:38:06.693 D/GeckoViewStartup( 8940): onEvent GeckoView:SetDefaultPrefs +06-02 16:38:06.702 D/GeckoNetworkManager( 8940): Incoming event receivedUpdate for state OnWithListeners -> OnWithListeners +06-02 16:38:06.703 D/GeckoNetworkManager( 8940): New network state: UP, WIFI, WIFI +06-02 16:38:06.715 D/GeckoViewConsole( 8940): onEvent GeckoView:RegisterWebExtension {"allowContentMessaging":true,"id":"webcompat@mozilla.com","locationUri":"resource://android/assets/extensions/webcompat/"} +06-02 16:38:06.727 D/GeckoViewConsole( 8940): onEvent GeckoView:WebExtension:List null +06-02 16:38:06.730 D/GeckoViewConsole( 8940): onEvent GeckoView:RegisterWebExtension {"allowContentMessaging":true,"id":"mozacBrowserIcons","locationUri":"resource://android/assets/extensions/browser-icons/"} +06-02 16:38:06.735 D/GeckoViewConsole( 8940): onEvent GeckoView:RegisterWebExtension {"allowContentMessaging":true,"id":"mozacBrowserAds","locationUri":"resource://android/assets/extensions/ads/"} +06-02 16:38:06.736 D/EGL_emulation( 8940): eglMakeCurrent: 0xe33868c0: ver 3 0 (tinfo 0xb3475200) +06-02 16:38:06.737 D/GeckoViewConsole( 8940): onEvent GeckoView:RegisterWebExtension {"allowContentMessaging":true,"id":"BrowserCookiesExtension","locationUri":"resource://android/assets/extensions/cookies/"} +06-02 16:38:06.782 D/glean/PingUploadWorker( 8940): Processing persisted pings at /data/user/0/org.mozilla.fenix.debug/glean_data/pending_pings +06-02 16:38:06.782 D/glean/PingUploadWorker( 8940): Processing ping: 0f17279d-898f-4274-874d-358ab99b6d4e +06-02 16:38:06.784 I/ActivityManager( 1869): Displayed org.mozilla.fenix.debug/.App: +3s625ms +06-02 16:38:06.787 I/GoogleInputMethod( 1996): onFinishInput() : Dummy InputConnection bound +06-02 16:38:06.789 I/GoogleInputMethod( 1996): onStartInput() : Dummy InputConnection bound +06-02 16:38:06.800 E/adbd ( 4408): failed to connect to socket 'tcp:2829': Connection refused +06-02 16:38:06.803 I/DefaultSupportedAddonsChecker( 8940): Register check for new supported add-ons +06-02 16:38:06.808 D/glean/ConceptFetchHttpUploader( 8940): Submitting ping to: https://incoming.telemetry.mozilla.org/submit/org-mozilla-fenix-debug/baseline/1/0f17279d-898f-4274-874d-358ab99b6d4e +06-02 16:38:06.838 D/StrictMode( 8940): StrictMode policy violation; ~duration=26 ms: android.os.strictmode.DiskReadViolation +06-02 16:38:06.838 D/StrictMode( 8940): at android.os.StrictMode$AndroidBlockGuardPolicy.onReadFromDisk(StrictMode.java:1504) +06-02 16:38:06.838 D/StrictMode( 8940): at java.io.UnixFileSystem.checkAccess(UnixFileSystem.java:251) +06-02 16:38:06.838 D/StrictMode( 8940): at java.io.File.exists(File.java:815) +06-02 16:38:06.838 D/StrictMode( 8940): at android.app.ContextImpl.ensurePrivateDirExists(ContextImpl.java:605) +06-02 16:38:06.838 D/StrictMode( 8940): at android.app.ContextImpl.ensurePrivateDirExists(ContextImpl.java:596) +06-02 16:38:06.838 D/StrictMode( 8940): at android.app.ContextImpl.getFilesDir(ContextImpl.java:641) +06-02 16:38:06.838 D/StrictMode( 8940): at android.content.ContextWrapper.getFilesDir(ContextWrapper.java:239) +06-02 16:38:06.838 D/StrictMode( 8940): at mozilla.components.feature.tab.collections.TabCollectionStorage.<init>(TabCollectionStorage.kt:29) +06-02 16:38:06.838 D/StrictMode( 8940): at org.mozilla.fenix.components.TabCollectionStorage$collectionStorage$2.invoke(TabCollectionStorage.kt:52) +06-02 16:38:06.838 D/StrictMode( 8940): at org.mozilla.fenix.components.TabCollectionStorage$collectionStorage$2.invoke(TabCollectionStorage.kt:23) +06-02 16:38:06.838 D/StrictMode( 8940): at kotlin.SynchronizedLazyImpl.getValue(LazyJVM.kt:74) +06-02 16:38:06.838 D/StrictMode( 8940): at org.mozilla.fenix.components.TabCollectionStorage.getCollectionStorage(Unknown Source:7) +06-02 16:38:06.838 D/StrictMode( 8940): at org.mozilla.fenix.components.TabCollectionStorage.getCollections(TabCollectionStorage.kt:70) +06-02 16:38:06.838 D/StrictMode( 8940): at org.mozilla.fenix.components.TabCollectionStorage.getCollections$default(TabCollectionStorage.kt:69) +06-02 16:38:06.838 D/StrictMode( 8940): at org.mozilla.fenix.home.HomeFragment.subscribeToTabCollections(HomeFragment.kt:750) +06-02 16:38:06.838 D/StrictMode( 8940): at org.mozilla.fenix.home.HomeFragment.onStart(HomeFragment.kt:404) +06-02 16:38:06.838 D/StrictMode( 8940): at androidx.fragment.app.Fragment.performStart(Fragment.java:2730) +06-02 16:38:06.838 D/StrictMode( 8940): at androidx.fragment.app.FragmentStateManager.start(FragmentStateManager.java:365) +06-02 16:38:06.838 D/StrictMode( 8940): at androidx.fragment.app.FragmentManager.moveToState(FragmentManager.java:1194) +06-02 16:38:06.838 D/StrictMode( 8940): at androidx.fragment.app.FragmentManager.moveToState(FragmentManager.java:1356) +06-02 16:38:06.838 D/StrictMode( 8940): at androidx.fragment.app.FragmentManager.moveFragmentToExpectedState(FragmentManager.java:1434) +06-02 16:38:06.838 D/StrictMode( 8940): at androidx.fragment.app.FragmentManager.moveToState(FragmentManager.java:1497) +06-02 16:38:06.838 D/StrictMode( 8940): at androidx.fragment.app.FragmentManager.completeExecute(FragmentManager.java:2125) +06-02 16:38:06.838 D/StrictMode( 8940): at androidx.fragment.app.FragmentManager$StartEnterTransitionListener.completeTransaction(FragmentManager.java:3022) +06-02 16:38:06.838 D/StrictMode( 8940): at androidx.fragment.app.FragmentManager.executePostponedTransaction(FragmentManager.java:1895) +06-02 16:38:06.838 D/StrictMode( 8940): at androidx.fragment.app.FragmentManager.ensureExecReady(FragmentManager.java:1803) +06-02 16:38:06.838 D/StrictMode( 8940): at androidx.fragment.app.FragmentManager.execPendingActions(FragmentManager.java:1843) +06-02 16:38:06.838 D/StrictMode( 8940): at androidx.fragment.app.FragmentManager$4.run(FragmentManager.java:413) +06-02 16:38:06.838 D/StrictMode( 8940): at android.os.Handler.handleCallback(Handler.java:873) +06-02 16:38:06.838 D/StrictMode( 8940): at android.os.Handler.dispatchMessage(Handler.java:99) +06-02 16:38:06.838 D/StrictMode( 8940): at android.os.Looper.loop(Looper.java:193) +06-02 16:38:06.838 D/StrictMode( 8940): at android.app.ActivityThread.main(ActivityThread.java:6669) +06-02 16:38:06.838 D/StrictMode( 8940): at java.lang.reflect.Method.invoke(Native Method) +06-02 16:38:06.838 D/StrictMode( 8940): at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:493) +06-02 16:38:06.838 D/StrictMode( 8940): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:858) +06-02 16:38:06.902 E/adbd ( 4408): failed to connect to socket 'tcp:2829': Connection refused +06-02 16:38:06.956 D/gralloc_ranchu( 1869): gralloc_unregister_buffer: exiting HostConnection (is buffer-handling thread) +06-02 16:38:06.958 D/ ( 1869): HostConnection::get() New Host Connection established 0xc1e7f900, tid 1930 +06-02 16:38:06.961 D/gralloc_ranchu( 1869): gralloc_unregister_buffer: exiting HostConnection (is buffer-handling thread) +06-02 16:38:06.961 D/ ( 1869): HostConnection::get() New Host Connection established 0xc1e7f900, tid 1930 +06-02 16:38:06.961 D/gralloc_ranchu( 1869): gralloc_unregister_buffer: exiting HostConnection (is buffer-handling thread) +06-02 16:38:06.963 D/ ( 1869): HostConnection::get() New Host Connection established 0xc1e7f900, tid 1930 +06-02 16:38:06.967 D/gralloc_ranchu( 1869): gralloc_unregister_buffer: exiting HostConnection (is buffer-handling thread) +06-02 16:38:06.967 W/SurfaceFlinger( 1728): Attempting to set client state on removed layer: Splash Screen org.mozilla.fenix.debug#0 +06-02 16:38:06.967 W/SurfaceFlinger( 1728): Attempting to destroy on removed layer: Splash Screen org.mozilla.fenix.debug#0 +06-02 16:38:06.971 D/gralloc_ranchu( 1897): gralloc_unregister_buffer: exiting HostConnection (is buffer-handling thread) +06-02 16:38:06.972 D/ ( 1897): HostConnection::get() New Host Connection established 0xed7c3080, tid 1897 +06-02 16:38:06.973 D/gralloc_ranchu( 1897): gralloc_unregister_buffer: exiting HostConnection (is buffer-handling thread) +06-02 16:38:06.973 D/ ( 1897): HostConnection::get() New Host Connection established 0xed7c3080, tid 1897 +06-02 16:38:06.974 D/gralloc_ranchu( 1897): gralloc_unregister_buffer: exiting HostConnection (is buffer-handling thread) +06-02 16:38:06.974 D/ ( 1897): HostConnection::get() New Host Connection established 0xed7c3080, tid 1897 +06-02 16:38:06.974 D/gralloc_ranchu( 1897): gralloc_unregister_buffer: exiting HostConnection (is buffer-handling thread) +06-02 16:38:06.981 D/ ( 1897): HostConnection::get() New Host Connection established 0xed7c3080, tid 1897 +06-02 16:38:07.005 E/adbd ( 4408): failed to connect to socket 'tcp:2829': Connection refused +06-02 16:38:07.012 I/SupportedAddonsWorker( 8940): Trying to check for new supported add-ons +06-02 16:38:07.013 E/BatteryExternalStatsWorker( 1869): no controller energy info supplied for wifi +06-02 16:38:07.059 W/SurfaceFlinger( 1728): couldn't log to binary event log: overflow. +06-02 16:38:07.106 E/adbd ( 4408): failed to connect to socket 'tcp:2829': Connection refused +06-02 16:38:07.117 I/ActivityManager( 1869): Fully drawn org.mozilla.fenix.debug/.App: +3s965ms +06-02 16:38:07.174 I/PBSessionCacheImpl( 2402): Deleted sessionId[359508686488] from persistence. +06-02 16:38:07.183 W/SearchService( 2402): Abort, client detached. +06-02 16:38:07.208 E/adbd ( 4408): failed to connect to socket 'tcp:2829': Connection refused +06-02 16:38:07.302 D/App ( 8940): Installed browser-icons extension +06-02 16:38:07.314 E/adbd ( 4408): failed to connect to socket 'tcp:2829': Connection refused +06-02 16:38:07.343 D/ ( 8940): HostConnection::get() New Host Connection established 0xcb89acc0, tid 8968 +06-02 16:38:07.345 E/EGL_emulation( 8940): tid 8968: eglBindAPI(1259): error 0x300c (EGL_BAD_PARAMETER) +06-02 16:38:07.348 D/EGL_emulation( 8940): eglCreateContext: 0xad7f82a0: maj 3 min 0 rcv 3 +06-02 16:38:07.349 D/EGL_emulation( 8940): eglMakeCurrent: 0xad7f82a0: ver 3 0 (tinfo 0xe3383c90) +06-02 16:38:07.378 E/GeckoConsole( 8940): [JavaScript Error: "NetworkError when attempting to fetch resource."] +06-02 16:38:07.378 E/GeckoConsole( 8940): get@resource://services-settings/RemoteSettingsClient.jsm:350:12 +06-02 16:38:07.422 E/adbd ( 4408): failed to connect to socket 'tcp:2829': Connection refused +06-02 16:38:07.458 D/glean/ConceptFetchHttpUploader( 8940): Ping successfully sent (200) +06-02 16:38:07.459 D/glean/PingUploadWorker( 8940): 0f17279d-898f-4274-874d-358ab99b6d4e was deleted: true +06-02 16:38:07.462 I/WM-WorkerWrapper( 8940): Worker result SUCCESS for Work [ id=1bfad7a1-b690-499c-855a-ee2262e5654a, tags={ mozilla.telemetry.glean.scheduler.PingUploadWorker, mozac_service_glean_ping_upload_worker } ] +06-02 16:38:07.531 E/adbd ( 4408): failed to connect to socket 'tcp:2829': Connection refused +06-02 16:38:07.549 W/GeckoConsole( 8940): [JavaScript Warning: "Security wrapper denied access to property "ONE_QUARTER" on privileged Javascript object. Support for exposing privileged objects to untrusted content via __exposedProps__ has been removed - use WebIDL bindings or Components.utils.cloneInto instead. Note that only the first denied property access from a given global object will be reported." {file: "moz-extension://427eb36c-07f3-4ee8-9b9b-c2d41f22dafb/data/picture_in_picture_overrides.js" line: 26}] +06-02 16:38:07.582 D/mozac-webcompat( 8940): Installed WebCompat webextension: webcompat@mozilla.com +06-02 16:38:07.584 D/BrowserIcons( 8940): Loaded icon (source = DOWNLOAD): https://www.youtube.com/ +06-02 16:38:07.633 E/adbd ( 4408): failed to connect to socket 'tcp:2829': Connection refused +06-02 16:38:07.640 D/BrowserIcons( 8940): Loaded icon (source = DOWNLOAD): https://www.wikipedia.org/ +06-02 16:38:07.651 E/GeckoConsole( 8940): [JavaScript Error: "can't access property "startupData", state is undefined" {file: "resource://gre/modules/addons/XPIProvider.jsm" line: 3079}] +06-02 16:38:07.651 E/GeckoConsole( 8940): setStartupData@resource://gre/modules/addons/XPIProvider.jsm:3079:5 +06-02 16:38:07.651 E/GeckoConsole( 8940): saveStartupData@resource://gre/modules/Extension.jsm:2035:17 +06-02 16:38:07.651 E/GeckoConsole( 8940): _writePersistentListeners@resource://gre/modules/ExtensionCommon.jsm:2271:15 +06-02 16:38:07.651 E/GeckoConsole( 8940): savePersistentListener@resource://gre/modules/ExtensionCommon.jsm:2362:18 +06-02 16:38:07.651 E/GeckoConsole( 8940): addListener@resource://gre/modules/ExtensionCommon.jsm:2495:20 +06-02 16:38:07.651 E/GeckoConsole( 8940): addListener@resource://gre/modules/ExtensionCommon.jsm:2550:38 +06-02 16:38:07.651 E/GeckoConsole( 8940): recvAddListener@resource://gre/modules/ExtensionParent.jsm:1079:13 +06-02 16:38:07.693 I/chatty ( 8940): uid=10099(org.mozilla.fenix.debug) identical 24 lines +06-02 16:38:07.721 E/GeckoConsole( 8940): [JavaScript Error: "can't access property "startupData", state is undefined" {file: "resource://gre/modules/addons/XPIProvider.jsm" line: 3079}] +06-02 16:38:07.721 E/GeckoConsole( 8940): setStartupData@resource://gre/modules/addons/XPIProvider.jsm:3079:5 +06-02 16:38:07.721 E/GeckoConsole( 8940): saveStartupData@resource://gre/modules/Extension.jsm:2035:17 +06-02 16:38:07.721 E/GeckoConsole( 8940): _writePersistentListeners@resource://gre/modules/ExtensionCommon.jsm:2271:15 +06-02 16:38:07.721 E/GeckoConsole( 8940): savePersistentListener@resource://gre/modules/ExtensionCommon.jsm:2362:18 +06-02 16:38:07.721 E/GeckoConsole( 8940): addListener@resource://gre/modules/ExtensionCommon.jsm:2495:20 +06-02 16:38:07.721 E/GeckoConsole( 8940): addListener@resource://gre/modules/ExtensionCommon.jsm:2550:38 +06-02 16:38:07.721 E/GeckoConsole( 8940): recvAddListener@resource://gre/modules/ExtensionParent.jsm:1079:13 +06-02 16:38:07.738 E/adbd ( 4408): failed to connect to socket 'tcp:2829': Connection refused +06-02 16:38:07.792 I/Gecko ( 8940): 1591130287792 Marionette INFO Listening on port 2829 +06-02 16:38:08.089 I/WM-WorkerWrapper( 8940): Worker result SUCCESS for Work [ id=d35286d8-b66e-412d-86a5-6db8a316b5b9, tags={ mozilla.components.feature.addons.migration.DefaultSupportedAddonsChecker.periodicWork, mozilla.components.feature.addons.migration.SupportedAddonsWorker } ] +06-02 16:38:10.179 W/ctxmgr ( 2473): [AclManager]No 2 for (accnt=account#-517948760#, com.google.android.gms(10008):IndoorOutdoorProducer, vrsn=13280000, 0, 3pPkg = null , 3pMdlId = null , pid = 2473). Was: 3 for 57, account#-517948760# +06-02 16:38:11.089 I/EventLogSendingHelper( 2402): Sending log events. +06-02 16:38:11.106 I/WorkController( 2402): WorkProxy is not enqueued because WorkController is disposed: WorkProxy{Name=context::j, WorkerId=context, id=9ec66b4} +06-02 16:38:11.106 I/WorkController( 2402): WorkProxy is not enqueued because WorkController is disposed: WorkProxy{Name=context::m, WorkerId=context, id=42ac2dd} +06-02 16:38:11.106 I/WorkController( 2402): WorkProxy is not enqueued because WorkController is disposed: WorkProxy{Name=context::n, WorkerId=context, id=1827e52} +06-02 16:38:11.106 I/WorkController( 2402): WorkProxy is not enqueued because WorkController is disposed: WorkProxy{Name=context::p, WorkerId=context, id=c78f523} +06-02 16:38:11.123 D/EGL_emulation( 2002): eglMakeCurrent: 0xe3385900: ver 3 0 (tinfo 0xe33839b0) +06-02 16:38:11.677 I/FenixApplication( 8940): Kicking-off account manager... +06-02 16:38:11.677 I/FenixApplication( 8940): Running post-visual completeness tasks... +06-02 16:38:11.678 I/FenixApplication( 8940): Storage initialization... +06-02 16:38:11.679 I/PlacesHistoryStorage( 8940): Warming up places storage... +06-02 16:38:11.681 D/RustNativeSupport( 8940): findMegazordLibraryName(places, 0.59.0 +06-02 16:38:11.681 D/RustNativeSupport( 8940): lib in use: none +06-02 16:38:11.681 D/RustNativeSupport( 8940): lib configured: megazord +06-02 16:38:11.681 D/RustNativeSupport( 8940): lib version configured: 0.59.0 +06-02 16:38:11.681 D/RustNativeSupport( 8940): settled on megazord +06-02 16:38:11.682 I/FirefoxAccountStateMachine( 8940): Enabling/updating sync with a new SyncConfig: SyncConfig(supportedEngines=[mozilla.components.service.fxa.SyncEngine$History@b024ebc, mozilla.components.service.fxa.SyncEngine$Bookmarks@560fe45, mozilla.components.service.fxa.SyncEngine$Passwords@623799a], syncPeriodInMinutes=240) +06-02 16:38:11.683 D/places_ffi( 8940): places_api_new +06-02 16:38:11.684 I/BgSyncManager( 8940): Periodic syncing enabled at a 240 interval +06-02 16:38:11.684 I/FirefoxAccountStateMachine( 8940): Sync is enabled +06-02 16:38:11.688 I/FenixApplication( 8940): 'Kicking-off account manager' took 10 ms +06-02 16:38:11.688 I/FirefoxAccountStateMachine( 8940): Processing event Init for state Start. Next state is Start +06-02 16:38:11.701 D/places::db::schema( 8940): Creating schema +06-02 16:38:11.701 I/keystore( 1734): del USRPKEY_org.mozilla.fenix.debug 10099 +06-02 16:38:11.702 I/keystore( 1734): del USRCERT_org.mozilla.fenix.debug 10099 +06-02 16:38:11.702 I/keystore( 1734): del CACERT_org.mozilla.fenix.debug 10099 +06-02 16:38:11.726 I/FirefoxAccountStateMachine( 8940): Ran 'Init' side-effects for state Start, got successive event AccountNotFound +06-02 16:38:11.727 I/FirefoxAccountStateMachine( 8940): Processing event AccountNotFound for state Start. Next state is NotAuthenticated +06-02 16:38:11.728 D/sql_support::conn_ext( 8940): Transaction commited after 27.615273ms +06-02 16:38:11.729 D/places_ffi( 8940): places_connection_new +06-02 16:38:11.731 D/RustNativeSupport( 8940): findMegazordLibraryName(fxaclient, 0.59.0 +06-02 16:38:11.731 D/RustNativeSupport( 8940): lib in use: none +06-02 16:38:11.731 D/RustNativeSupport( 8940): lib configured: megazord +06-02 16:38:11.731 D/RustNativeSupport( 8940): lib version configured: 0.59.0 +06-02 16:38:11.731 D/RustNativeSupport( 8940): settled on megazord +06-02 16:38:11.732 D/places_ffi( 8940): places_connection_new +06-02 16:38:11.732 D/fxaclient_ffi( 8940): fxa_new +06-02 16:38:11.734 W/FirefoxAccountStateMachine( 8940): Got invalid event Init for state NotAuthenticated. +06-02 16:38:11.735 I/PlacesHistoryStorage( 8940): 'Warming up places storage' took 56 ms +06-02 16:38:11.736 I/PlacesBookmarksStorage( 8940): Warming up places storage... +06-02 16:38:11.736 D/places_ffi( 8940): places_connection_new +06-02 16:38:11.739 I/PlacesBookmarksStorage( 8940): 'Warming up places storage' took 2 ms +06-02 16:38:11.798 I/keystore( 1734): 1 0 +06-02 16:38:11.802 I/SyncableLoginsStorage( 8940): Warming up storage... +06-02 16:38:11.812 D/RustNativeSupport( 8940): findMegazordLibraryName(logins, 0.59.0 +06-02 16:38:11.813 D/RustNativeSupport( 8940): lib in use: none +06-02 16:38:11.813 D/RustNativeSupport( 8940): lib configured: megazord +06-02 16:38:11.813 D/RustNativeSupport( 8940): lib version configured: 0.59.0 +06-02 16:38:11.813 D/RustNativeSupport( 8940): settled on megazord +06-02 16:38:11.815 D/logins_ffi( 8940): sync15_passwords_state_new +06-02 16:38:11.823 D/logins::schema( 8940): Creating schema +06-02 16:38:11.945 I/SyncableLoginsStorage( 8940): 'Warming up storage' took 142 ms +06-02 16:38:11.945 I/FenixApplication( 8940): 'Storage initialization' took 267 ms +06-02 16:38:15.194 W/ctxmgr ( 2473): [AclManager]No 2 for (accnt=account#-517948760#, com.google.android.gms(10008):IndoorOutdoorProducer, vrsn=13280000, 0, 3pPkg = null , 3pMdlId = null , pid = 2473). Was: 3 for 57, account#-517948760# +06-02 16:38:16.329 E/memtrack( 1869): Couldn't load memtrack module +06-02 16:38:16.329 W/android.os.Debug( 1869): failed to get memory consumption info: -1 +06-02 16:38:16.789 E/memtrack( 1869): Couldn't load memtrack module +06-02 16:38:16.789 W/android.os.Debug( 1869): failed to get memory consumption info: -1 +06-02 16:38:20.216 W/ctxmgr ( 2473): [AclManager]No 2 for (accnt=account#-517948760#, com.google.android.gms(10008):IndoorOutdoorProducer, vrsn=13280000, 0, 3pPkg = null , 3pMdlId = null , pid = 2473). Was: 3 for 57, account#-517948760# +06-02 16:38:22.963 I/ActivityManager( 1869): Force stopping org.mozilla.fenix.debug appid=10099 user=0: clear data +06-02 16:38:22.964 I/ActivityManager( 1869): Killing 8940:org.mozilla.fenix.debug/u0a99 (adj 0): stop org.mozilla.fenix.debug +06-02 16:38:22.964 W/libprocessgroup( 1869): kill(-8940, 9) failed: No such process +06-02 16:38:22.965 W/ActivityManager( 1869): Force removing ActivityRecord{caea9f6 u0 org.mozilla.fenix.debug/.App t388}: app died, no saved state +06-02 16:38:22.965 I/ServiceChildProcess( 8988): Service has been unbound. Stopping. +06-02 16:38:22.983 D/gralloc_ranchu( 1897): gralloc_unregister_buffer: exiting HostConnection (is buffer-handling thread) +06-02 16:38:22.984 D/ ( 1897): HostConnection::get() New Host Connection established 0xed7c33c0, tid 5209 +06-02 16:38:22.984 D/gralloc_ranchu( 1897): gralloc_unregister_buffer: exiting HostConnection (is buffer-handling thread) +06-02 16:38:22.984 D/ ( 1897): HostConnection::get() New Host Connection established 0xed7c33c0, tid 5209 +06-02 16:38:22.984 D/gralloc_ranchu( 1897): gralloc_unregister_buffer: exiting HostConnection (is buffer-handling thread) +06-02 16:38:22.985 D/ ( 1897): HostConnection::get() New Host Connection established 0xed7c33c0, tid 5209 +06-02 16:38:22.985 D/gralloc_ranchu( 1897): gralloc_unregister_buffer: exiting HostConnection (is buffer-handling thread) +06-02 16:38:22.985 D/ ( 1897): HostConnection::get() New Host Connection established 0xed7c33c0, tid 5209 +06-02 16:38:22.985 D/gralloc_ranchu( 1897): gralloc_unregister_buffer: exiting HostConnection (is buffer-handling thread) +06-02 16:38:22.985 D/ ( 1897): HostConnection::get() New Host Connection established 0xed7c33c0, tid 5209 +06-02 16:38:22.985 D/gralloc_ranchu( 1897): gralloc_unregister_buffer: exiting HostConnection (is buffer-handling thread) +06-02 16:38:22.989 D/ ( 1897): HostConnection::get() New Host Connection established 0xed7c33c0, tid 5209 +06-02 16:38:22.991 D/gralloc_ranchu( 1619): gralloc_alloc: Creating ashmem region of size 9334784 +06-02 16:38:22.992 I/ActivityManager( 1869): Killing 8988:org.mozilla.fenix.debug:tab0/u0a99 (adj 0): stop org.mozilla.fenix.debug +06-02 16:38:22.994 I/ActivityManager( 1869): Force stopping org.mozilla.fenix.debug appid=10099 user=-1: clearApplicationUserData +06-02 16:38:22.995 D/ZenLog ( 1869): config: removeAutomaticZenRules,ZenModeConfig[user=0,allowAlarms=true,allowMedia=true,allowSystem=false,allowReminders=false,allowEvents=false,allowCalls=true,allowRepeatCallers=true,allowMessages=false,allowCallsFrom=stars,allowMessagesFrom=contacts,suppressedVisualEffects=511,areChannelsBypassingDnd=false,automaticRules={EVENTS_DEFAULT_RULE=ZenRule[enabled=false,snoozing=false,name=Event,zenMode=ZEN_MODE_IMPORTANT_INTERRUPTIONS,conditionId=condition://android/event?userId=-10000&calendar=&reply=1,condition=Condition[id=condition://android/event?userId=-10000&calendar=&reply=1,summary=...,line1=...,line2=...,icon=0,state=STATE_FALSE,flags=2],component=ComponentInfo{android/com.android.server.notification.EventConditionProvider},id=EVENTS_DEFAULT_RULE,creationTime=1587308662810,enabler=null], EVERY_NIGHT_DEFAULT_RULE=ZenRule[enabled=false,snoozing=false,name=Sleeping,zenMode=ZEN_MODE_IMPORTANT_INTERRUPTIONS,conditionId=condition://android/schedule?days=1.2.3.4.5.6.7&start=22.0&end=7.0&exitAtAlarm=true,condition=Condition[id=condition://android/schedule?days=1.2.3.4.5.6.7&start=22.0&end=7.0&exitAtAlarm=true,summary=...,line1=...,line2=...,icon=0,state=STATE_FALSE,flags=2],component=ComponentInfo{android/com.android.server.notification.ScheduleConditionProvider},id=EVERY_NIGHT_DEFAULT_RULE,creationTime=1587308662810,enabler=null]},manualRule=null],Diff[] +06-02 16:38:22.995 I/ConditionProviders( 1869): Disallowing condition provider org.mozilla.fenix.debug +06-02 16:38:22.996 E/memtrack( 1869): Couldn't load memtrack module +06-02 16:38:22.996 W/android.os.Debug( 1869): failed to get memory consumption info: -1 +06-02 16:38:22.996 D/ZenLog ( 1869): set_zen_mode: off,removeAutomaticZenRules +06-02 16:38:23.002 D/gralloc_ranchu( 1619): gralloc_alloc: Creating ashmem region of size 9334784 +06-02 16:38:23.009 W/libprocessgroup( 1869): kill(-8940, 9) failed: No such process +06-02 16:38:23.009 I/keystore( 1734): clear_uid 10099 +06-02 16:38:23.010 D/gralloc_ranchu( 1619): gralloc_alloc: Creating ashmem region of size 9334784 +06-02 16:38:23.026 D/SurfaceFlinger( 1728): duplicate layer name: changing com.google.android.apps.nexuslauncher/com.google.android.apps.nexuslauncher.NexusLauncherActivity to com.google.android.apps.nexuslauncher/com.google.android.apps.nexuslauncher.NexusLauncherActivity#1 +06-02 16:38:23.028 D/gralloc_ranchu( 1619): gralloc_alloc: Creating ashmem region of size 9334784 +06-02 16:38:23.030 W/InputDispatcher( 1869): channel 'd4edb65 org.mozilla.fenix.debug/org.mozilla.fenix.debug.App (server)' ~ Consumer closed input channel or an error occurred. events=0x9 +06-02 16:38:23.030 E/InputDispatcher( 1869): channel 'd4edb65 org.mozilla.fenix.debug/org.mozilla.fenix.debug.App (server)' ~ Channel is unrecoverably broken and will be disposed! +06-02 16:38:23.031 D/gralloc_ranchu( 1728): gralloc_unregister_buffer: exiting HostConnection (is buffer-handling thread) +06-02 16:38:23.031 D/ ( 1728): HostConnection::get() New Host Connection established 0xe90dda40, tid 1952 +06-02 16:38:23.032 D/gralloc_ranchu( 1728): gralloc_unregister_buffer: exiting HostConnection (is buffer-handling thread) +06-02 16:38:23.032 D/ ( 1728): HostConnection::get() New Host Connection established 0xe7e99140, tid 1952 +06-02 16:38:23.032 D/gralloc_ranchu( 1728): gralloc_unregister_buffer: exiting HostConnection (is buffer-handling thread) +06-02 16:38:23.033 D/ ( 1728): HostConnection::get() New Host Connection established 0xe7e99140, tid 1952 +06-02 16:38:23.033 D/gralloc_ranchu( 1728): gralloc_unregister_buffer: exiting HostConnection (is buffer-handling thread) +06-02 16:38:23.040 I/WindowManager( 1869): WIN DEATH: Window{d4edb65 u0 org.mozilla.fenix.debug/org.mozilla.fenix.debug.App} +06-02 16:38:23.040 W/InputDispatcher( 1869): Attempted to unregister already unregistered input channel 'd4edb65 org.mozilla.fenix.debug/org.mozilla.fenix.debug.App (server)' +06-02 16:38:23.042 D/EGL_emulation( 2402): eglMakeCurrent: 0xe1911c80: ver 3 0 (tinfo 0xc8cbe260) +06-02 16:38:23.044 D/gralloc_ranchu( 1619): gralloc_alloc: Creating ashmem region of size 9334784 +06-02 16:38:23.044 W/ActivityManager( 1869): setHasOverlayUi called on unknown pid: 8940 +06-02 16:38:23.049 I/Zygote ( 1729): Process 8940 exited due to signal (9) +06-02 16:38:23.050 W/libprocessgroup( 1869): kill(-8940, 9) failed: No such process +06-02 16:38:23.050 I/libprocessgroup( 1869): Successfully killed process cgroup uid 10099 pid 8940 in 85ms +06-02 16:38:23.050 W/SurfaceFlinger( 1728): Attempting to destroy on removed layer: AppWindowToken{369c864 token=Token{86b81f7 ActivityRecord{caea9f6 u0 org.mozilla.fenix.debug/.App t388}}}#0 +06-02 16:38:23.050 W/SurfaceFlinger( 1728): Attempting to destroy on removed layer: Task=388#0 +06-02 16:38:23.054 W/libprocessgroup( 1869): kill(-8988, 9) failed: No such process +06-02 16:38:23.054 I/ActivityManager( 1869): Force stopping org.mozilla.fenix.debug appid=10099 user=0: from pid 9106 +06-02 16:38:23.057 D/gralloc_ranchu( 1619): gralloc_alloc: Creating ashmem region of size 9334784 +06-02 16:38:23.059 I/Zygote ( 1729): Process 8988 exited due to signal (9) +06-02 16:38:23.072 I/GoogleInputMethod( 1996): onFinishInput() : Dummy InputConnection bound +06-02 16:38:23.072 I/GoogleInputMethod( 1996): onStartInput() : Dummy InputConnection bound +06-02 16:38:23.081 D/EGL_emulation( 2488): eglMakeCurrent: 0xe3385ae0: ver 3 0 (tinfo 0xe33838f0) +06-02 16:38:23.082 D/CarrierSvcBindHelper( 2121): No carrier app for: 0 +06-02 16:38:23.089 W/SessionLifecycleManager( 2402): Handover failed. Creating new session controller. +06-02 16:38:23.099 W/libprocessgroup( 1869): kill(-8988, 9) failed: No such process +06-02 16:38:23.099 I/libprocessgroup( 1869): Successfully killed process cgroup uid 10099 pid 8988 in 45ms +06-02 16:38:23.105 D/EGL_emulation( 2002): eglMakeCurrent: 0xe3385900: ver 3 0 (tinfo 0xe33839b0) +06-02 16:38:23.112 V/SettingsProvider( 1869): Notifying for 0: content://settings/global/debug_app +06-02 16:38:23.123 I/GeofencerStateMachine( 2473): removeGeofences: removeRequest=RemoveGeofencingRequest[REMOVE_ALL packageName=org.mozilla.fenix.debug] +06-02 16:38:23.124 D/CarrierSvcBindHelper( 2121): No carrier app for: 0 +06-02 16:38:23.125 D/EGL_emulation( 2002): eglMakeCurrent: 0xe3385900: ver 3 0 (tinfo 0xe33839b0) +06-02 16:38:23.128 E/system_server( 1869): No package ID 7f found for ID 0x7f0801a6. +06-02 16:38:23.128 E/system_server( 1869): No package ID 7f found for ID 0x7f13011d. +06-02 16:38:23.128 E/system_server( 1869): No package ID 7f found for ID 0x7f13011d. +06-02 16:38:23.128 E/system_server( 1869): No package ID 7f found for ID 0x7f0801a4. +06-02 16:38:23.128 E/system_server( 1869): No package ID 7f found for ID 0x7f13011c. +06-02 16:38:23.128 E/system_server( 1869): No package ID 7f found for ID 0x7f13011c. +06-02 16:38:23.129 D/EGL_emulation( 2002): eglMakeCurrent: 0xe3385900: ver 3 0 (tinfo 0xe33839b0) +06-02 16:38:23.147 E/BatteryExternalStatsWorker( 1869): no controller energy info supplied for wifi +06-02 16:38:23.145 I/chatty ( 2002): uid=10024(com.android.systemui) RenderThread identical 1 line +06-02 16:38:23.149 D/EGL_emulation( 2002): eglMakeCurrent: 0xe3385900: ver 3 0 (tinfo 0xe33839b0) +06-02 16:38:23.151 I/.gms.persisten( 2473): Background concurrent copying GC freed 150132(6MB) AllocSpace objects, 3(60KB) LOS objects, 45% free, 7MB/13MB, paused 85us total 138.429ms +06-02 16:38:23.159 D/vold ( 1558): Remounting 10099 as mode read +06-02 16:38:23.161 D/EGL_emulation( 2002): eglMakeCurrent: 0xe3385900: ver 3 0 (tinfo 0xe33839b0) +06-02 16:38:23.166 D/EGL_emulation( 2002): eglMakeCurrent: 0xe3385900: ver 3 0 (tinfo 0xe33839b0) +06-02 16:38:23.168 I/LocationSettingsChecker( 2660): Removing dialog suppression flag for package org.mozilla.fenix.debug +06-02 16:38:23.180 D/EGL_emulation( 2002): eglMakeCurrent: 0xe3385900: ver 3 0 (tinfo 0xe33839b0) +06-02 16:38:23.183 D/EGL_emulation( 2002): eglMakeCurrent: 0xe3385900: ver 3 0 (tinfo 0xe33839b0) +06-02 16:38:23.184 W/LocationOracle( 2402): No location history returned by ContextManager +06-02 16:38:23.193 D/EGL_emulation( 2002): eglMakeCurrent: 0xe3385900: ver 3 0 (tinfo 0xe33839b0) +06-02 16:38:23.210 D/vold ( 1558): Remounting 10099 as mode write +06-02 16:38:23.198 D/EGL_emulation( 2002): eglMakeCurrent: 0xe3385900: ver 3 0 (tinfo 0xe33839b0) +06-02 16:38:23.219 I/Icing ( 2660): doRemovePackageData org.mozilla.fenix.debug +06-02 16:38:23.219 D/EGL_emulation( 2002): eglMakeCurrent: 0xe3385900: ver 3 0 (tinfo 0xe33839b0) +06-02 16:38:23.223 W/ctxmgr ( 2473): [AclManager]No 3 for (accnt=account#-517948760#, com.google.android.gms(10008):UserVelocityProducer, vrsn=13280022, 0, 3pPkg = null , 3pMdlId = null , pid = 2473). Was: 3 for 1, account#-517948760# +06-02 16:38:23.223 D/EGL_emulation( 2002): eglMakeCurrent: 0xe3385900: ver 3 0 (tinfo 0xe33839b0) +06-02 16:38:23.227 D/EGL_emulation( 2002): eglMakeCurrent: 0xe3385900: ver 3 0 (tinfo 0xe33839b0) +06-02 16:38:23.235 D/EGL_emulation( 2002): eglMakeCurrent: 0xe3385900: ver 3 0 (tinfo 0xe33839b0) +06-02 16:38:23.238 I/system_server( 1869): Background concurrent copying GC freed 69934(4MB) AllocSpace objects, 41(1540KB) LOS objects, 36% free, 10MB/16MB, paused 82us total 208.824ms +06-02 16:38:23.240 I/ProvidersCache( 4535): Provider returned no roots. Possibly naughty: com.google.android.apps.docs.storage +06-02 16:38:23.248 D/EGL_emulation( 2002): eglMakeCurrent: 0xe3385900: ver 3 0 (tinfo 0xe33839b0) +06-02 16:38:23.251 I/MicroDetectionWorker( 2402): #startMicroDetector [speakerMode: 0] +06-02 16:38:23.251 I/AudioController( 2402): Using mInputStreamFactoryBuilder +06-02 16:38:23.252 I/AudioController( 2402): Created new AudioSource +06-02 16:38:23.253 I/MicroDetectionWorker( 2402): onReady +06-02 16:38:23.256 D/EGL_emulation( 2002): eglMakeCurrent: 0xe3385900: ver 3 0 (tinfo 0xe33839b0) +06-02 16:38:23.305 I/MicroRecognitionRunner( 2402): Starting detection. +06-02 16:38:23.306 I/MicrophoneInputStream( 2402): mic_starting SR : 16000 CC : 16 SO : 6 +06-02 16:38:23.307 E/ ( 1627): Request requires android.permission.RECORD_AUDIO +06-02 16:38:23.307 E/AudioPolicyIntefaceImpl( 1627): getInputForAttr permission denied: recording not allowed for uid 10039 pid 2402 +06-02 16:38:23.307 E/AudioFlinger( 1627): createRecord() checkRecordThread_l failed +06-02 16:38:23.308 E/IAudioFlinger( 2402): createRecord returned error -22 +06-02 16:38:23.308 E/AudioRecord( 2402): AudioFlinger could not create record track, status: -22 +06-02 16:38:23.308 E/AudioRecord-JNI( 2402): Error creating AudioRecord instance: initialization check failed with status -22. +06-02 16:38:23.309 E/android.media.AudioRecord( 2402): Error code -20 when initializing native AudioRecord object. +06-02 16:38:23.309 I/MicrophoneInputStream( 2402): mic_started SR : 16000 CC : 16 SO : 6 +06-02 16:38:23.309 E/ActivityThread( 2402): Failed to find provider info for com.google.android.apps.gsa.testing.ui.audio.recorded +06-02 16:38:23.309 I/MicroDetectionWorker( 2402): onReady +06-02 16:38:23.311 I/MicrophoneInputStream( 2402): mic_close SR : 16000 CC : 16 SO : 6 +06-02 16:38:23.311 I/MicroRecognitionRunner( 2402): Detection finished +06-02 16:38:23.311 W/ErrorReporter( 2402): reportError [type: 211, code: 524300]: Error reading from input stream +06-02 16:38:23.311 I/MicroRecognitionRunner( 2402): Stopping hotword detection. +06-02 16:38:23.312 W/ErrorProcessor( 2402): onFatalError, processing error from engine(4) +06-02 16:38:23.312 W/ErrorProcessor( 2402): com.google.android.apps.gsa.shared.speech.b.g: Error reading from input stream +06-02 16:38:23.312 W/ErrorProcessor( 2402): at com.google.android.apps.gsa.staticplugins.microdetection.d.k.a(SourceFile:91) +06-02 16:38:23.312 W/ErrorProcessor( 2402): at com.google.android.apps.gsa.staticplugins.microdetection.d.l.run(Unknown Source:14) +06-02 16:38:23.312 W/ErrorProcessor( 2402): at com.google.android.libraries.gsa.runner.a.a.b(SourceFile:32) +06-02 16:38:23.312 W/ErrorProcessor( 2402): at com.google.android.libraries.gsa.runner.a.c.call(Unknown Source:4) +06-02 16:38:23.312 W/ErrorProcessor( 2402): at java.util.concurrent.FutureTask.run(FutureTask.java:266) +06-02 16:38:23.312 W/ErrorProcessor( 2402): at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:458) +06-02 16:38:23.312 W/ErrorProcessor( 2402): at java.util.concurrent.FutureTask.run(FutureTask.java:266) +06-02 16:38:23.312 W/ErrorProcessor( 2402): at com.google.android.apps.gsa.shared.util.concurrent.b.g.run(Unknown Source:4) +06-02 16:38:23.312 W/ErrorProcessor( 2402): at com.google.android.apps.gsa.shared.util.concurrent.b.aw.run(SourceFile:4) +06-02 16:38:23.312 W/ErrorProcessor( 2402): at com.google.android.apps.gsa.shared.util.concurrent.b.aw.run(SourceFile:4) +06-02 16:38:23.312 W/ErrorProcessor( 2402): at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1167) +06-02 16:38:23.312 W/ErrorProcessor( 2402): at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:641) +06-02 16:38:23.312 W/ErrorProcessor( 2402): at java.lang.Thread.run(Thread.java:764) +06-02 16:38:23.312 W/ErrorProcessor( 2402): at com.google.android.apps.gsa.shared.util.concurrent.b.i.run(SourceFile:6) +06-02 16:38:23.312 W/ErrorProcessor( 2402): Caused by: com.google.android.apps.gsa.shared.exception.GsaIOException: Error code: 393238 | Buffer overflow, no available space. +06-02 16:38:23.312 W/ErrorProcessor( 2402): at com.google.android.apps.gsa.speech.audio.Tee.j(SourceFile:103) +06-02 16:38:23.312 W/ErrorProcessor( 2402): at com.google.android.apps.gsa.speech.audio.au.read(SourceFile:2) +06-02 16:38:23.312 W/ErrorProcessor( 2402): at java.io.InputStream.read(InputStream.java:101) +06-02 16:38:23.312 W/ErrorProcessor( 2402): at com.google.android.apps.gsa.speech.audio.ao.run(SourceFile:17) +06-02 16:38:23.312 W/ErrorProcessor( 2402): at com.google.android.apps.gsa.speech.audio.an.run(SourceFile:2) +06-02 16:38:23.312 W/ErrorProcessor( 2402): at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:458) +06-02 16:38:23.312 W/ErrorProcessor( 2402): ... 10 more +06-02 16:38:23.312 I/AudioController( 2402): internalShutdown +06-02 16:38:23.313 I/MicroDetector( 2402): Keeping mic open: false +06-02 16:38:23.313 I/DeviceStateChecker( 2402): DeviceStateChecker cancelled +06-02 16:38:23.313 I/MicroDetectionWorker( 2402): #onError(false) +06-02 16:38:23.324 I/ActivityManager( 1869): Force stopping org.mozilla.fenix.debug appid=10099 user=-1: set debug app +06-02 16:38:23.324 V/SettingsProvider( 1869): Notifying for 0: content://settings/global/debug_app +06-02 16:38:23.328 I/Places ( 2473): ?: PlacesBleScanner start() with priority 2 +06-02 16:38:23.337 I/Places ( 2473): ?: PlacesBleScanner start() with priority 2 +06-02 16:38:23.337 I/PlaceInferenceEngine( 2473): [anon] Changed inference mode: 1 +06-02 16:38:23.345 I/Places ( 2473): Converted 0 out of 1 WiFi scans +06-02 16:38:23.357 I/ActivityManager( 1869): START u0 {flg=0x10000000 cmp=org.mozilla.fenix.debug/.App (has extras)} from uid 0 +06-02 16:38:23.364 I/Places ( 2473): ?: PlacesBleScanner start() with priority 2 +06-02 16:38:23.372 I/Places ( 2473): ?: PlacesBleScanner start() with priority 2 +06-02 16:38:23.374 I/PlaceInferenceEngine( 2473): [anon] Changed inference mode: 1 +06-02 16:38:23.380 I/PlaceInferenceEngine( 2473): No beacon scan available - ignoring candidates. +06-02 16:38:23.381 I/lla.fenix.debu( 9156): Not late-enabling -Xcheck:jni (already on) +06-02 16:38:23.386 I/ActivityManager( 1869): Start proc 9156:org.mozilla.fenix.debug/u0a99 for activity org.mozilla.fenix.debug/.App +06-02 16:38:23.390 I/Places ( 2473): Converted 0 out of 1 WiFi scans +06-02 16:38:23.399 W/lla.fenix.debu( 9156): Unexpected CPU variant for X86 using defaults: x86 +06-02 16:38:23.402 D/gralloc_ranchu( 1619): gralloc_alloc: Creating ashmem region of size 9334784 +06-02 16:38:23.403 I/PlaceInferenceEngine( 2473): No beacon scan available - ignoring candidates. +06-02 16:38:23.410 D/ ( 1869): HostConnection::get() New Host Connection established 0xcb8a3340, tid 1930 +06-02 16:38:23.419 W/ctxmgr ( 2473): [AclManager]No 2 for (accnt=account#-517948760#, com.google.android.gms(10008):PlacesProducer, vrsn=13280000, 0, 3pPkg = null , 3pMdlId = null , pid = 2473). Was: 3 for 18, account#-517948760# +06-02 16:38:23.454 W/ActivityThread( 9156): Application org.mozilla.fenix.debug can be debugged on port 8100... +06-02 16:38:23.457 I/lla.fenix.debu( 9156): The ClassLoaderContext is a special shared library. +06-02 16:38:23.470 D/gralloc_ranchu( 1897): gralloc_unregister_buffer: exiting HostConnection (is buffer-handling thread) +06-02 16:38:23.470 D/ ( 1897): HostConnection::get() New Host Connection established 0xed7c33c0, tid 5209 +06-02 16:38:23.471 D/gralloc_ranchu( 1897): gralloc_unregister_buffer: exiting HostConnection (is buffer-handling thread) +06-02 16:38:23.471 D/EGL_emulation( 2402): eglMakeCurrent: 0xe1911c80: ver 3 0 (tinfo 0xc8cbe260) +06-02 16:38:23.472 D/ ( 1897): HostConnection::get() New Host Connection established 0xed7c33c0, tid 5209 +06-02 16:38:23.472 D/gralloc_ranchu( 1897): gralloc_unregister_buffer: exiting HostConnection (is buffer-handling thread) +06-02 16:38:23.472 D/ ( 1897): HostConnection::get() New Host Connection established 0xed7c33c0, tid 5209 +06-02 16:38:23.472 D/gralloc_ranchu( 1897): gralloc_unregister_buffer: exiting HostConnection (is buffer-handling thread) +06-02 16:38:23.474 D/EGL_emulation( 2488): eglMakeCurrent: 0xe3385ae0: ver 3 0 (tinfo 0xe33838f0) +06-02 16:38:23.476 D/gralloc_ranchu( 1728): gralloc_unregister_buffer: exiting HostConnection (is buffer-handling thread) +06-02 16:38:23.477 D/ ( 1728): HostConnection::get() New Host Connection established 0xe90ddac0, tid 1952 +06-02 16:38:23.477 D/gralloc_ranchu( 1728): gralloc_unregister_buffer: exiting HostConnection (is buffer-handling thread) +06-02 16:38:23.479 D/ ( 1897): HostConnection::get() New Host Connection established 0xed7c33c0, tid 5209 +06-02 16:38:23.479 D/EGL_emulation( 2002): eglMakeCurrent: 0xe3385900: ver 3 0 (tinfo 0xe33839b0) +06-02 16:38:23.480 D/ ( 1728): HostConnection::get() New Host Connection established 0xe90ddd80, tid 1756 +06-02 16:38:23.480 D/ ( 1728): HostConnection::get() New Host Connection established 0xe90ddac0, tid 1952 +06-02 16:38:23.480 D/gralloc_ranchu( 1728): gralloc_unregister_buffer: exiting HostConnection (is buffer-handling thread) +06-02 16:38:23.480 D/gralloc_ranchu( 1728): gralloc_unregister_buffer: exiting HostConnection (is buffer-handling thread) +06-02 16:38:23.481 D/ ( 1728): HostConnection::get() New Host Connection established 0xe90ddd80, tid 1756 +06-02 16:38:23.481 D/ ( 1728): HostConnection::get() New Host Connection established 0xe90ddac0, tid 1952 +06-02 16:38:23.481 D/gralloc_ranchu( 1728): gralloc_unregister_buffer: exiting HostConnection (is buffer-handling thread) +06-02 16:38:23.482 D/ ( 1728): HostConnection::get() New Host Connection established 0xe90ddd80, tid 1756 +06-02 16:38:23.482 D/gralloc_ranchu( 1728): gralloc_unregister_buffer: exiting HostConnection (is buffer-handling thread) +06-02 16:38:23.482 D/gralloc_ranchu( 1728): gralloc_unregister_buffer: exiting HostConnection (is buffer-handling thread) +06-02 16:38:23.482 D/ ( 1728): HostConnection::get() New Host Connection established 0xe90ddac0, tid 1952 +06-02 16:38:23.483 D/gralloc_ranchu( 1728): gralloc_unregister_buffer: exiting HostConnection (is buffer-handling thread) +06-02 16:38:23.484 D/EGL_emulation( 2002): eglMakeCurrent: 0xe3385900: ver 3 0 (tinfo 0xe33839b0) +06-02 16:38:23.594 I/chatty ( 2002): uid=10024(com.android.systemui) RenderThread identical 13 lines +06-02 16:38:23.600 D/EGL_emulation( 2002): eglMakeCurrent: 0xe3385900: ver 3 0 (tinfo 0xe33839b0) +06-02 16:38:24.020 D/FirebaseApp( 9156): Default FirebaseApp failed to initialize because no default options were found. This usually means that com.google.gms:google-services was not applied to your gradle project. +06-02 16:38:24.020 I/FirebaseInitProvider( 9156): FirebaseApp initialization unsuccessful +06-02 16:38:24.088 D/FenixApplication( 9156): Initializing Glean (uploadEnabled=true, isFennec=false) +06-02 16:38:24.100 D/RustNativeSupport( 9156): findMegazordLibraryName(viaduct, 0.59.0 +06-02 16:38:24.100 D/RustNativeSupport( 9156): lib in use: none +06-02 16:38:24.100 D/RustNativeSupport( 9156): lib configured: megazord +06-02 16:38:24.100 D/RustNativeSupport( 9156): lib version configured: 0.59.0 +06-02 16:38:24.100 D/RustNativeSupport( 9156): settled on megazord +06-02 16:38:24.147 D/libglean_ffi( 9156): glean_ffi: Android logging should be hooked up! +06-02 16:38:24.150 I/glean/Glean( 9156): Registering pings for mozilla.telemetry.glean.GleanMetrics.Pings +06-02 16:38:24.152 I/libglean_ffi( 9156): glean_core: Creating new Glean +06-02 16:38:24.152 D/libglean_ffi( 9156): glean_core::database: Database path: "/data/user/0/org.mozilla.fenix.debug/glean_data/db" +06-02 16:38:24.152 I/libglean_ffi( 9156): glean_core::database: Database initialized +06-02 16:38:24.153 D/RustNativeSupport( 9156): findMegazordLibraryName(rustlog, 0.59.0 +06-02 16:38:24.153 D/RustNativeSupport( 9156): lib in use: none +06-02 16:38:24.153 D/RustNativeSupport( 9156): lib configured: megazord +06-02 16:38:24.153 D/RustNativeSupport( 9156): lib version configured: 0.59.0 +06-02 16:38:24.153 D/RustNativeSupport( 9156): settled on megazord +06-02 16:38:24.155 I/rc_log_ffi::ios( 9156): rc_log adapter initialized! +06-02 16:38:24.170 I/libglean_ffi( 9156): glean_ffi: Glean initialized +06-02 16:38:24.170 I/GeckoRuntime( 9156): Adding debug configuration from: /data/local/tmp/org.mozilla.fenix.debug-geckoview-config.yaml +06-02 16:38:24.170 D/GeckoDebugConfig( 9156): Adding environment variables from debug config: {MOZ_CRASHREPORTER=1, MOZ_CRASHREPORTER_NO_REPORT=1, MOZ_CRASHREPORTER_SHUTDOWN=1} +06-02 16:38:24.170 D/GeckoDebugConfig( 9156): Adding arguments from debug config: [-marionette, -profile, /mnt/sdcard/org.mozilla.fenix.debug-geckodriver-profile] +06-02 16:38:24.171 D/GeckoThread( 9156): State changed to LAUNCHED +06-02 16:38:24.172 I/GeckoThread( 9156): preparing to run Gecko +06-02 16:38:24.173 D/GeckoThread( 9156): env var: MOZ_CRASHREPORTER=1 +06-02 16:38:24.173 D/GeckoThread( 9156): env var: MOZ_CRASHREPORTER_NO_REPORT=1 +06-02 16:38:24.173 D/GeckoThread( 9156): env var: MOZ_CRASHREPORTER_SHUTDOWN=1 +06-02 16:38:24.178 D/GeckoRuntime( 9156): Lifecycle: onCreate +06-02 16:38:24.181 D/GeckoThread( 9156): State changed to MOZGLUE_READY +06-02 16:38:24.200 W/Settings( 9156): Setting animator_duration_scale has moved from android.provider.Settings.System to android.provider.Settings.Global, returning read-only global URI. +06-02 16:38:24.204 E/GeckoLibLoad( 9156): Load sqlite start +06-02 16:38:24.216 E/GeckoLibLoad( 9156): Load sqlite done +06-02 16:38:24.216 E/GeckoLibLoad( 9156): Load nss start +06-02 16:38:24.216 E/GeckoLibLoad( 9156): Load nss done +06-02 16:38:24.227 I/glean/MetricsPingSched( 9156): The application just updated. Send metrics ping now. +06-02 16:38:24.246 I/glean/MetricsPingSched( 9156): Collecting the 'metrics' ping, now = Tue Jun 02 16:38:24 EDT 2020, startup = true, reason = upgrade +06-02 16:38:24.262 D/LeakCanary( 9156): Updated AppWatcher.config: Config(no changes) +06-02 16:38:24.274 E/GeckoLibLoad( 9156): Loaded libs in 58.434504ms total, 0ms(60ms) user, 40ms(70ms) system, 0(0) faults +06-02 16:38:24.275 D/GeckoThread( 9156): State changed to LIBS_READY +06-02 16:38:24.275 I/libglean_ffi( 9156): glean_core::ping: Collecting metrics +06-02 16:38:24.275 I/libglean_ffi( 9156): glean_core::ping: Storage for metrics empty. Bailing out. +06-02 16:38:24.275 I/libglean_ffi( 9156): glean_core: No content for ping 'metrics', therefore no ping queued. +06-02 16:38:24.276 D/glean/MetricsPingSched( 9156): Scheduling the 'metrics' ping in 40895781ms +06-02 16:38:24.278 W/GeckoThread( 9156): zerdatime 4668409 - runGecko +06-02 16:38:24.280 D/GeckoProfile( 9156): Loading profile at: null name: default +06-02 16:38:24.281 D/GeckoProfile( 9156): Created new profile dir. +06-02 16:38:24.282 I/GeckoProfile( 9156): Enqueuing profile init. +06-02 16:38:24.284 D/GeckoProfile( 9156): Found profile dir: /data/user/0/org.mozilla.fenix.debug/files/mozilla/9w50stya.default +06-02 16:38:24.284 D/GeckoProfile( 9156): Attempting to write new client ID properties +06-02 16:38:24.285 D/GeckoProfile( 9156): Creating profile dir: /data/user/0/org.mozilla.fenix.debug/files/mozilla/9w50stya.default +06-02 16:38:24.286 D/LeakCanary( 9156): Updated LeakCanary.config: Config(no changes) +06-02 16:38:24.289 D/App ( 9156): DebugMetricController: start +06-02 16:38:24.289 D/App ( 9156): DebugMetricController: start +06-02 16:38:24.291 W/PushConfig( 9156): No firebase configuration found; cannot support push service. +06-02 16:38:24.299 I/Gecko:DumpUtils( 9156): Fifo watcher disabled via pref. +06-02 16:38:24.302 D/StrictMode( 9156): StrictMode policy violation; ~duration=144 ms: android.os.strictmode.DiskReadViolation +06-02 16:38:24.302 D/StrictMode( 9156): at android.os.StrictMode$AndroidBlockGuardPolicy.onReadFromDisk(StrictMode.java:1504) +06-02 16:38:24.302 D/StrictMode( 9156): at java.io.FileInputStream.<init>(FileInputStream.java:163) +06-02 16:38:24.302 D/StrictMode( 9156): at org.mozilla.gecko.util.DebugConfig.fromFile(DebugConfig.java:49) +06-02 16:38:24.302 D/StrictMode( 9156): at org.mozilla.geckoview.GeckoRuntime.init(GeckoRuntime.java:363) +06-02 16:38:24.302 D/StrictMode( 9156): at org.mozilla.geckoview.GeckoRuntime.create(GeckoRuntime.java:574) +06-02 16:38:24.302 D/StrictMode( 9156): at GeckoProvider.createRuntime(GeckoProvider.kt:58) +06-02 16:38:24.302 D/StrictMode( 9156): at GeckoProvider.getOrCreateRuntime(GeckoProvider.kt:28) +06-02 16:38:24.302 D/StrictMode( 9156): at org.mozilla.fenix.components.Core$engine$2.invoke(Core.kt:79) +06-02 16:38:24.302 D/StrictMode( 9156): at org.mozilla.fenix.components.Core$engine$2.invoke(Core.kt:57) +06-02 16:38:24.302 D/StrictMode( 9156): at kotlin.SynchronizedLazyImpl.getValue(LazyJVM.kt:74) +06-02 16:38:24.302 D/StrictMode( 9156): at org.mozilla.fenix.components.Core.getEngine(Unknown Source:7) +06-02 16:38:24.302 D/StrictMode( 9156): at org.mozilla.fenix.FenixApplication.setupInMainProcessOnly(FenixApplication.kt:128) +06-02 16:38:24.302 D/StrictMode( 9156): at org.mozilla.fenix.FenixApplication.onCreate(FenixApplication.kt:90) +06-02 16:38:24.302 D/StrictMode( 9156): at android.app.Instrumentation.callApplicationOnCreate(Instrumentation.java:1154) +06-02 16:38:24.302 D/StrictMode( 9156): at android.app.ActivityThread.handleBindApplication(ActivityThread.java:5871) +06-02 16:38:24.302 D/StrictMode( 9156): at android.app.ActivityThread.access$1100(ActivityThread.java:199) +06-02 16:38:24.302 D/StrictMode( 9156): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1650) +06-02 16:38:24.302 D/StrictMode( 9156): at android.os.Handler.dispatchMessage(Handler.java:106) +06-02 16:38:24.302 D/StrictMode( 9156): at android.os.Looper.loop(Looper.java:193) +06-02 16:38:24.302 D/StrictMode( 9156): at android.app.ActivityThread.main(ActivityThread.java:6669) +06-02 16:38:24.302 D/StrictMode( 9156): at java.lang.reflect.Method.invoke(Native Method) +06-02 16:38:24.302 D/StrictMode( 9156): at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:493) +06-02 16:38:24.302 D/StrictMode( 9156): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:858) +06-02 16:38:24.303 D/StrictMode( 9156): StrictMode policy violation; ~duration=140 ms: android.os.strictmode.DiskReadViolation +06-02 16:38:24.303 D/StrictMode( 9156): at android.os.StrictMode$AndroidBlockGuardPolicy.onReadFromDisk(StrictMode.java:1504) +06-02 16:38:24.303 D/StrictMode( 9156): at libcore.io.BlockGuardOs.read(BlockGuardOs.java:253) +06-02 16:38:24.303 D/StrictMode( 9156): at libcore.io.IoBridge.read(IoBridge.java:501) +06-02 16:38:24.303 D/StrictMode( 9156): at java.io.FileInputStream.read(FileInputStream.java:307) +06-02 16:38:24.303 D/StrictMode( 9156): at java.io.FilterInputStream.read(FilterInputStream.java:133) +06-02 16:38:24.303 D/StrictMode( 9156): at java.io.PushbackInputStream.read(PushbackInputStream.java:186) +06-02 16:38:24.303 D/StrictMode( 9156): at org.yaml.snakeyaml.reader.UnicodeReader.init(UnicodeReader.java:92) +06-02 16:38:24.303 D/StrictMode( 9156): at org.yaml.snakeyaml.reader.UnicodeReader.read(UnicodeReader.java:124) +06-02 16:38:24.303 D/StrictMode( 9156): at org.yaml.snakeyaml.reader.StreamReader.update(StreamReader.java:183) +06-02 16:38:24.303 D/StrictMode( 9156): at org.yaml.snakeyaml.reader.StreamReader.ensureEnoughData(StreamReader.java:176) +06-02 16:38:24.303 D/StrictMode( 9156): at org.yaml.snakeyaml.reader.StreamReader.ensureEnoughData(StreamReader.java:171) +06-02 16:38:24.303 D/StrictMode( 9156): at org.yaml.snakeyaml.reader.StreamReader.peek(StreamReader.java:126) +06-02 16:38:24.303 D/StrictMode( 9156): at org.yaml.snakeyaml.scanner.ScannerImpl.scanToNextToken(ScannerImpl.java:1177) +06-02 16:38:24.303 D/StrictMode( 9156): at org.yaml.snakeyaml.scanner.ScannerImpl.fetchMoreTokens(ScannerImpl.java:287) +06-02 16:38:24.303 D/StrictMode( 9156): at org.yaml.snakeyaml.scanner.ScannerImpl.checkToken(ScannerImpl.java:227) +06-02 16:38:24.303 D/StrictMode( 9156): at org.yaml.snakeyaml.parser.ParserImpl$ParseImplicitDocumentStart.produce(ParserImpl.java:195) +06-02 16:38:24.303 D/StrictMode( 9156): at org.yaml.snakeyaml.parser.ParserImpl.peekEvent(ParserImpl.java:158) +06-02 16:38:24.303 D/StrictMode( 9156): at org.yaml.snakeyaml.parser.ParserImpl.checkEvent(ParserImpl.java:148) +06-02 16:38:24.303 D/StrictMode( 9156): at org.yaml.snakeyaml.composer.Composer.getSingleNode(Composer.java:107) +06-02 16:38:24.303 D/StrictMode( 9156): at org.yaml.snakeyaml.constructor.BaseConstructor.getSingleData(BaseConstructor.java:141) +06-02 16:38:24.303 D/StrictMode( 9156): at org.yaml.snakeyaml.Yaml.loadFromReader(Yaml.java:525) +06-02 16:38:24.303 D/StrictMode( 9156): at org.yaml.snakeyaml.Yaml.load(Yaml.java:453) +06-02 16:38:24.303 D/StrictMode( 9156): at org.mozilla.gecko.util.DebugConfig.fromFile(DebugConfig.java:51) +06-02 16:38:24.303 D/StrictMode( 9156): at org.mozilla.geckoview.GeckoRuntime.init(GeckoRuntime.java:363) +06-02 16:38:24.303 D/StrictMode( 9156): at org.mozilla.geckoview.GeckoRuntime.create(GeckoRuntime.java:574) +06-02 16:38:24.303 D/StrictMode( 9156): at GeckoProvider.createRuntime(GeckoProvider.kt:58) +06-02 16:38:24.303 D/StrictMode( 9156): at GeckoProvider.getOrCreateRuntime(GeckoProvider.kt:28) +06-02 16:38:24.303 D/StrictMode( 9156): at org.mozilla.fenix.components.Core$engine$2.invoke(Core.kt:79) +06-02 16:38:24.303 D/StrictMode( 9156): at org.mozilla.fenix.components.Core$engine$2.invoke(Core.kt:57) +06-02 16:38:24.303 D/StrictMode( 9156): at kotlin.SynchronizedLazyImpl.getValue(LazyJVM.kt:74) +06-02 16:38:24.303 D/StrictMode( 9156): at org.mozilla.fenix.components.Core.getEngine(Unknown Source:7) +06-02 16:38:24.303 D/StrictMode( 9156): at org.mozilla.fenix.FenixApplication.setupInMainProcessOnly(FenixApplication.kt:128) +06-02 16:38:24.303 D/StrictMode( 9156): at org.mozilla.fenix.FenixApplication.onCreate(FenixApplication.kt:90) +06-02 16:38:24.303 D/StrictMode( 9156): at android.app.Instrumentation.callApplicationOnCreate(Instrumentation.java:1154) +06-02 16:38:24.303 D/StrictMode( 9156): at android.app.ActivityThread.handleBindApplication(ActivityThread.java:5871) +06-02 16:38:24.303 D/StrictMode( 9156): at android.app.ActivityThread.access$1100(ActivityThread.java:199) +06-02 16:38:24.303 D/StrictMode( 9156): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1650) +06-02 16:38:24.303 D/StrictMode( 9156): at android.os.Handler.dispatchMessage(Handler.java:106) +06-02 16:38:24.303 D/StrictMode( 9156): at android.os.Looper.loop(Looper.java:193) +06-02 16:38:24.303 D/StrictMode( 9156): at android.app.ActivityThread.main(ActivityThread.java:6669) +06-02 16:38:24.303 D/StrictMode( 9156): at java.lang.reflect.Method.invoke(Native Method) +06-02 16:38:24.303 D/StrictMode( 9156): at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:493) +06-02 16:38:24.303 D/StrictMode( 9156): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:858) +06-02 16:38:24.305 D/StrictMode( 9156): StrictMode policy violation; ~duration=140 ms: android.os.strictmode.DiskReadViolation +06-02 16:38:24.305 D/StrictMode( 9156): at android.os.StrictMode$AndroidBlockGuardPolicy.onReadFromDisk(StrictMode.java:1504) +06-02 16:38:24.305 D/StrictMode( 9156): at libcore.io.BlockGuardOs.read(BlockGuardOs.java:253) +06-02 16:38:24.305 D/StrictMode( 9156): at libcore.io.IoBridge.read(IoBridge.java:501) +06-02 16:38:24.305 D/StrictMode( 9156): at java.io.FileInputStream.read(FileInputStream.java:307) +06-02 16:38:24.305 D/StrictMode( 9156): at java.io.FilterInputStream.read(FilterInputStream.java:133) +06-02 16:38:24.305 D/StrictMode( 9156): at java.io.PushbackInputStream.read(PushbackInputStream.java:186) +06-02 16:38:24.305 D/StrictMode( 9156): at sun.nio.cs.StreamDecoder.readBytes(StreamDecoder.java:288) +06-02 16:38:24.305 D/StrictMode( 9156): at sun.nio.cs.StreamDecoder.implRead(StreamDecoder.java:351) +06-02 16:38:24.305 D/StrictMode( 9156): at sun.nio.cs.StreamDecoder.read(StreamDecoder.java:180) +06-02 16:38:24.305 D/StrictMode( 9156): at java.io.InputStreamReader.read(InputStreamReader.java:184) +06-02 16:38:24.305 D/StrictMode( 9156): at org.yaml.snakeyaml.reader.UnicodeReader.read(UnicodeReader.java:125) +06-02 16:38:24.305 D/StrictMode( 9156): at org.yaml.snakeyaml.reader.StreamReader.update(StreamReader.java:183) +06-02 16:38:24.305 D/StrictMode( 9156): at org.yaml.snakeyaml.reader.StreamReader.ensureEnoughData(StreamReader.java:176) +06-02 16:38:24.305 D/StrictMode( 9156): at org.yaml.snakeyaml.reader.StreamReader.ensureEnoughData(StreamReader.java:171) +06-02 16:38:24.305 D/StrictMode( 9156): at org.yaml.snakeyaml.reader.StreamReader.peek(StreamReader.java:126) +06-02 16:38:24.305 D/StrictMode( 9156): at org.yaml.snakeyaml.scanner.ScannerImpl.scanToNextToken(ScannerImpl.java:1177) +06-02 16:38:24.305 D/StrictMode( 9156): at org.yaml.snakeyaml.scanner.ScannerImpl.fetchMoreTokens(ScannerImpl.java:287) +06-02 16:38:24.305 D/StrictMode( 9156): at org.yaml.snakeyaml.scanner.ScannerImpl.checkToken(ScannerImpl.java:227) +06-02 16:38:24.305 D/StrictMode( 9156): at org.yaml.snakeyaml.parser.ParserImpl$ParseImplicitDocumentStart.produce(ParserImpl.java:195) +06-02 16:38:24.305 D/StrictMode( 9156): at org.yaml.snakeyaml.parser.ParserImpl.peekEvent(ParserImpl.java:158) +06-02 16:38:24.305 D/StrictMode( 9156): at org.yaml.snakeyaml.parser.ParserImpl.checkEvent(ParserImpl.java:148) +06-02 16:38:24.305 D/StrictMode( 9156): at org.yaml.snakeyaml.composer.Composer.getSingleNode(Composer.java:107) +06-02 16:38:24.305 D/StrictMode( 9156): at org.yaml.snakeyaml.constructor.BaseConstructor.getSingleData(BaseConstructor.java:141) +06-02 16:38:24.305 D/StrictMode( 9156): at org.yaml.snakeyaml.Yaml.loadFromReader(Yaml.java:525) +06-02 16:38:24.305 D/StrictMode( 9156): at org.yaml.snakeyaml.Yaml.load(Yaml.java:453) +06-02 16:38:24.305 D/StrictMode( 9156): at org.mozilla.gecko.util.DebugConfig.fromFile(DebugConfig.java:51) +06-02 16:38:24.305 D/StrictMode( 9156): at org.mozilla.geckoview.GeckoRuntime.init(GeckoRuntime.java:363) +06-02 16:38:24.305 D/StrictMode( 9156): at org.mozilla.geckoview.GeckoRuntime.create(GeckoRuntime.java:574) +06-02 16:38:24.305 D/StrictMode( 9156): at GeckoProvider.createRuntime(GeckoProvider.kt:58) +06-02 16:38:24.305 D/StrictMode( 9156): at GeckoProvider.getOrCreateRuntime(GeckoProvider.kt:28) +06-02 16:38:24.305 D/StrictMode( 9156): at org.mozilla.fenix.components.Core$engine$2.invoke(Core.kt:79) +06-02 16:38:24.305 D/StrictMode( 9156): at org.mozilla.fenix.components.Core$engine$2.invoke(Core.kt:57) +06-02 16:38:24.305 D/StrictMode( 9156): at kotlin.SynchronizedLazyImpl.getValue(LazyJVM.kt:74) +06-02 16:38:24.305 D/StrictMode( 9156): at org.mozilla.fenix.components.Core.getEngine(Unknown Source:7) +06-02 16:38:24.305 D/StrictMode( 9156): at org.mozilla.fenix.FenixApplication.setupInMainProcessOnly(FenixApplication.kt:128) +06-02 16:38:24.305 D/StrictMode( 9156): at org.mozilla.fenix.FenixApplication.onCreate(FenixApplication.kt:90) +06-02 16:38:24.305 D/StrictMode( 9156): at android.app.Instrumentation.callApplicationOnCreate(Instrumentation.java:1154) +06-02 16:38:24.305 D/StrictMode( 9156): at android.app.ActivityThread.handleBindApplication(ActivityThread.java:5871) +06-02 16:38:24.305 D/StrictMode( 9156): at android.app.ActivityThread.access$1100(ActivityThread.java:199) +06-02 16:38:24.305 D/StrictMode( 9156): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1650) +06-02 16:38:24.305 D/StrictMode( 9156): at android.os.Handler.dispatchMessage(Handler.java:106) +06-02 16:38:24.305 D/StrictMode( 9156): at android.os.Looper.loop(Looper.java:193) +06-02 16:38:24.305 D/StrictMode( 9156): at android.app.ActivityThread.main(ActivityThread.java:6669) +06-02 16:38:24.305 D/StrictMode( 9156): at java.lang.reflect.Method.invoke(Native Method) +06-02 16:38:24.305 D/StrictMode( 9156): at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:493) +06-02 16:38:24.305 D/StrictMode( 9156): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:858) +06-02 16:38:24.308 D/StrictMode( 9156): StrictMode policy violation; ~duration=133 ms: android.os.strictmode.DiskReadViolation +06-02 16:38:24.308 D/StrictMode( 9156): at android.os.StrictMode$AndroidBlockGuardPolicy.onReadFromDisk(StrictMode.java:1504) +06-02 16:38:24.308 D/StrictMode( 9156): at libcore.io.BlockGuardOs.read(BlockGuardOs.java:253) +06-02 16:38:24.308 D/StrictMode( 9156): at libcore.io.IoBridge.read(IoBridge.java:501) +06-02 16:38:24.308 D/StrictMode( 9156): at java.io.FileInputStream.read(FileInputStream.java:307) +06-02 16:38:24.308 D/StrictMode( 9156): at java.io.FilterInputStream.read(FilterInputStream.java:133) +06-02 16:38:24.308 D/StrictMode( 9156): at java.io.PushbackInputStream.read(PushbackInputStream.java:186) +06-02 16:38:24.308 D/StrictMode( 9156): at sun.nio.cs.StreamDecoder.readBytes(StreamDecoder.java:288) +06-02 16:38:24.308 D/StrictMode( 9156): at sun.nio.cs.StreamDecoder.implRead(StreamDecoder.java:351) +06-02 16:38:24.308 D/StrictMode( 9156): at sun.nio.cs.StreamDecoder.read(StreamDecoder.java:180) +06-02 16:38:24.308 D/StrictMode( 9156): at java.io.InputStreamReader.read(InputStreamReader.java:184) +06-02 16:38:24.308 D/StrictMode( 9156): at org.yaml.snakeyaml.reader.UnicodeReader.read(UnicodeReader.java:125) +06-02 16:38:24.308 D/StrictMode( 9156): at org.yaml.snakeyaml.reader.StreamReader.update(StreamReader.java:183) +06-02 16:38:24.308 D/StrictMode( 9156): at org.yaml.snakeyaml.reader.StreamReader.ensureEnoughData(StreamReader.java:176) +06-02 16:38:24.308 D/StrictMode( 9156): at org.yaml.snakeyaml.reader.StreamReader.peek(StreamReader.java:136) +06-02 16:38:24.308 D/StrictMode( 9156): at org.yaml.snakeyaml.scanner.ScannerImpl.scanPlain(ScannerImpl.java:1999) +06-02 16:38:24.308 D/StrictMode( 9156): at org.yaml.snakeyaml.scanner.ScannerImpl.fetchPlain(ScannerImpl.java:1044) +06-02 16:38:24.308 D/StrictMode( 9156): at org.yaml.snakeyaml.scanner.ScannerImpl.fetchMoreTokens(ScannerImpl.java:399) +06-02 16:38:24.308 D/StrictMode( 9156): at org.yaml.snakeyaml.scanner.ScannerImpl.checkToken(ScannerImpl.java:227) +06-02 16:38:24.308 D/StrictMode( 9156): at org.yaml.snakeyaml.parser.ParserImpl$ParseBlockSequenceEntry.produce(ParserImpl.java:504) +06-02 16:38:24.308 D/StrictMode( 9156): at org.yaml.snakeyaml.parser.ParserImpl.peekEvent(ParserImpl.java:158) +06-02 16:38:24.308 D/StrictMode( 9156): at org.yaml.snakeyaml.parser.ParserImpl.checkEvent(ParserImpl.java:148) +06-02 16:38:24.308 D/StrictMode( 9156): at org.yaml.snakeyaml.composer.Composer.composeSequenceNode(Composer.java:188) +06-02 16:38:24.308 D/StrictMode( 9156): at org.yaml.snakeyaml.composer.Composer.composeNode(Composer.java:142) +06-02 16:38:24.308 D/StrictMode( 9156): at org.yaml.snakeyaml.composer.Composer.composeValueNode(Composer.java:236) +06-02 16:38:24.308 D/StrictMode( 9156): at org.yaml.snakeyaml.composer.Composer.composeMappingChildren(Composer.java:227) +06-02 16:38:24.308 D/StrictMode( 9156): at org.yaml.snakeyaml.composer.Composer.composeMappingNode(Composer.java:215) +06-02 16:38:24.308 D/StrictMode( 9156): at org.yaml.snakeyaml.composer.Composer.composeNode(Composer.java:144) +06-02 16:38:24.308 D/StrictMode( 9156): at org.yaml.snakeyaml.composer.Composer.getNode(Composer.java:85) +06-02 16:38:24.308 D/StrictMode( 9156): at org.yaml.snakeyaml.composer.Composer.getSingleNode(Composer.java:108) +06-02 16:38:24.308 D/StrictMode( 9156): at org.yaml.snakeyaml.constructor.BaseConstructor.getSingleData(BaseConstructor.java:141) +06-02 16:38:24.308 D/StrictMode( 9156): at org.yaml.snakeyaml.Yaml.loadFromReader(Yaml.java:525) +06-02 16:38:24.308 D/StrictMode( 9156): at org.yaml.snakeyaml.Yaml.load(Yaml.java:453) +06-02 16:38:24.308 D/StrictMode( 9156): at org.mozilla.gecko.util.DebugConfig.fromFile(DebugConfig.java:51) +06-02 16:38:24.308 D/StrictMode( 9156): at org.mozilla.geckoview.GeckoRuntime.init(GeckoRuntime.java:363) +06-02 16:38:24.308 D/StrictMode( 9156): at org.mozilla.geckoview.GeckoRuntime.create(GeckoRuntime.java:574) +06-02 16:38:24.308 D/StrictMode( 9156): at GeckoProvider.createRuntime(GeckoProvider.kt:58) +06-02 16:38:24.308 D/StrictMode( 9156): at GeckoProvider.getOrCreateRuntime(GeckoProvider.kt:28) +06-02 16:38:24.308 D/StrictMode( 9156): at org.mozilla.fenix.components.Core$engine$2.invoke(Core.kt:79) +06-02 16:38:24.308 D/StrictMode( 9156): at org.mozilla.fenix.components.Core$engine$2.invoke(Core.kt:57) +06-02 16:38:24.308 D/StrictMode( 9156): at kotlin.SynchronizedLazyImpl.getValue(LazyJVM.kt:74) +06-02 16:38:24.308 D/StrictMode( 9156): at org.mozilla.fenix.components.Core.getEngine(Unknown Source:7) +06-02 16:38:24.308 D/StrictMode( 9156): at org.mozilla.fenix.FenixApplication.setupInMainProcessOnly(FenixApplication.kt:128) +06-02 16:38:24.308 D/StrictMode( 9156): at org.mozilla.fenix.FenixApplication.onCreate(FenixApplication.kt:90) +06-02 16:38:24.308 D/StrictMode( 9156): at android.app.Instrumentation.callApplicationOnCreate(Instrumentation.java:1154) +06-02 16:38:24.308 D/StrictMode( 9156): at android.app.ActivityThread.handleBindApplication(ActivityThread.java:5871) +06-02 16:38:24.308 D/StrictMode( 9156): at android.app.ActivityThread.access$1100(ActivityThread.java:199) +06-02 16:38:24.308 D/StrictMode( 9156): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1650) +06-02 16:38:24.308 D/StrictMode( 9156): at android.os.Handler.dispatchMessage(Handler.java:106) +06-02 16:38:24.308 D/StrictMode( 9156): at android.os.Looper.loop(Looper.java:193) +06-02 16:38:24.308 D/StrictMode( 9156): at android.app.ActivityThread.main(ActivityThread.java:6669) +06-02 16:38:24.308 D/StrictMode( 9156): at java.lang.reflect.Method.invoke(Native Method) +06-02 16:38:24.308 D/StrictMode( 9156): at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:493) +06-02 16:38:24.308 D/StrictMode( 9156): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:858) +06-02 16:38:24.311 D/StrictMode( 9156): StrictMode policy violation; ~duration=120 ms: android.os.strictmode.DiskReadViolation +06-02 16:38:24.311 D/StrictMode( 9156): at android.os.StrictMode$AndroidBlockGuardPolicy.onReadFromDisk(StrictMode.java:1504) +06-02 16:38:24.311 D/StrictMode( 9156): at java.io.UnixFileSystem.checkAccess(UnixFileSystem.java:251) +06-02 16:38:24.311 D/StrictMode( 9156): at java.io.File.exists(File.java:815) +06-02 16:38:24.311 D/StrictMode( 9156): at android.app.ContextImpl.ensurePrivateDirExists(ContextImpl.java:605) +06-02 16:38:24.311 D/StrictMode( 9156): at android.app.ContextImpl.ensurePrivateDirExists(ContextImpl.java:596) +06-02 16:38:24.311 D/StrictMode( 9156): at android.app.ContextImpl.getPreferencesDir(ContextImpl.java:552) +06-02 16:38:24.311 D/StrictMode( 9156): at android.app.ContextImpl.getSharedPreferencesPath(ContextImpl.java:747) +06-02 16:38:24.311 D/StrictMode( 9156): at android.app.ContextImpl.getSharedPreferences(ContextImpl.java:400) +06-02 16:38:24.311 D/StrictMode( 9156): at android.content.ContextWrapper.getSharedPreferences(ContextWrapper.java:174) +06-02 16:38:24.311 D/StrictMode( 9156): at mozilla.components.browser.engine.gecko.GeckoEngine.<init>(GeckoEngine.kt:68) +06-02 16:38:24.311 D/StrictMode( 9156): at mozilla.components.browser.engine.gecko.GeckoEngine.<init>(GeckoEngine.kt:63) +06-02 16:38:24.311 D/StrictMode( 9156): at org.mozilla.fenix.components.Core$engine$2.invoke(Core.kt:76) +06-02 16:38:24.311 D/StrictMode( 9156): at org.mozilla.fenix.components.Core$engine$2.invoke(Core.kt:57) +06-02 16:38:24.311 D/StrictMode( 9156): at kotlin.SynchronizedLazyImpl.getValue(LazyJVM.kt:74) +06-02 16:38:24.311 D/StrictMode( 9156): at org.mozilla.fenix.components.Core.getEngine(Unknown Source:7) +06-02 16:38:24.311 D/StrictMode( 9156): at org.mozilla.fenix.FenixApplication.setupInMainProcessOnly(FenixApplication.kt:128) +06-02 16:38:24.311 D/StrictMode( 9156): at org.mozilla.fenix.FenixApplication.onCreate(FenixApplication.kt:90) +06-02 16:38:24.311 D/StrictMode( 9156): at android.app.Instrumentation.callApplicationOnCreate(Instrumentation.java:1154) +06-02 16:38:24.311 D/StrictMode( 9156): at android.app.ActivityThread.handleBindApplication(ActivityThread.java:5871) +06-02 16:38:24.311 D/StrictMode( 9156): at android.app.ActivityThread.access$1100(ActivityThread.java:199) +06-02 16:38:24.311 D/StrictMode( 9156): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1650) +06-02 16:38:24.311 D/StrictMode( 9156): at android.os.Handler.dispatchMessage(Handler.java:106) +06-02 16:38:24.311 D/StrictMode( 9156): at android.os.Looper.loop(Looper.java:193) +06-02 16:38:24.311 D/StrictMode( 9156): at android.app.ActivityThread.main(ActivityThread.java:6669) +06-02 16:38:24.311 D/StrictMode( 9156): at java.lang.reflect.Method.invoke(Native Method) +06-02 16:38:24.311 D/StrictMode( 9156): at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:493) +06-02 16:38:24.311 D/StrictMode( 9156): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:858) +06-02 16:38:24.312 D/StrictMode( 9156): StrictMode policy violation; ~duration=43 ms: android.os.strictmode.DiskReadViolation +06-02 16:38:24.312 D/StrictMode( 9156): at android.os.StrictMode$AndroidBlockGuardPolicy.onReadFromDisk(StrictMode.java:1504) +06-02 16:38:24.312 D/StrictMode( 9156): at java.io.UnixFileSystem.checkAccess(UnixFileSystem.java:251) +06-02 16:38:24.312 D/StrictMode( 9156): at java.io.File.exists(File.java:815) +06-02 16:38:24.312 D/StrictMode( 9156): at android.app.ContextImpl.ensurePrivateDirExists(ContextImpl.java:605) +06-02 16:38:24.312 D/StrictMode( 9156): at android.app.ContextImpl.ensurePrivateDirExists(ContextImpl.java:596) +06-02 16:38:24.312 D/StrictMode( 9156): at android.app.ContextImpl.getPreferencesDir(ContextImpl.java:552) +06-02 16:38:24.312 D/StrictMode( 9156): at android.app.ContextImpl.getSharedPreferencesPath(ContextImpl.java:747) +06-02 16:38:24.312 D/StrictMode( 9156): at android.app.ContextImpl.getSharedPreferences(ContextImpl.java:400) +06-02 16:38:24.312 D/StrictMode( 9156): at android.content.ContextWrapper.getSharedPreferences(ContextWrapper.java:174) +06-02 16:38:24.312 D/StrictMode( 9156): at androidx.preference.PreferenceManager.getDefaultSharedPreferences(PreferenceManager.java:119) +06-02 16:38:24.312 D/StrictMode( 9156): at org.mozilla.fenix.DebugFenixApplication.setupLeakCanary(DebugFenixApplication.kt:15) +06-02 16:38:24.312 D/StrictMode( 9156): at org.mozilla.fenix.FenixApplication.setupInMainProcessOnly(FenixApplication.kt:140) +06-02 16:38:24.312 D/StrictMode( 9156): at org.mozilla.fenix.FenixApplication.onCreate(FenixApplication.kt:90) +06-02 16:38:24.312 D/StrictMode( 9156): at android.app.Instrumentation.callApplicationOnCreate(Instrumentation.java:1154) +06-02 16:38:24.312 D/StrictMode( 9156): at android.app.ActivityThread.handleBindApplication(ActivityThread.java:5871) +06-02 16:38:24.312 D/StrictMode( 9156): at android.app.ActivityThread.access$1100(ActivityThread.java:199) +06-02 16:38:24.312 D/StrictMode( 9156): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1650) +06-02 16:38:24.312 D/StrictMode( 9156): at android.os.Handler.dispatchMessage(Handler.java:106) +06-02 16:38:24.312 D/StrictMode( 9156): at android.os.Looper.loop(Looper.java:193) +06-02 16:38:24.312 D/StrictMode( 9156): at android.app.ActivityThread.main(ActivityThread.java:6669) +06-02 16:38:24.312 D/StrictMode( 9156): at java.lang.reflect.Method.invoke(Native Method) +06-02 16:38:24.312 D/StrictMode( 9156): at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:493) +06-02 16:38:24.312 D/StrictMode( 9156): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:858) +06-02 16:38:24.313 D/StrictMode( 9156): StrictMode policy violation; ~duration=41 ms: android.os.strictmode.DiskReadViolation +06-02 16:38:24.313 D/StrictMode( 9156): at android.os.StrictMode$AndroidBlockGuardPolicy.onReadFromDisk(StrictMode.java:1504) +06-02 16:38:24.313 D/StrictMode( 9156): at android.app.SharedPreferencesImpl.awaitLoadedLocked(SharedPreferencesImpl.java:256) +06-02 16:38:24.313 D/StrictMode( 9156): at android.app.SharedPreferencesImpl.getBoolean(SharedPreferencesImpl.java:325) +06-02 16:38:24.313 D/StrictMode( 9156): at org.mozilla.fenix.DebugFenixApplication.setupLeakCanary(DebugFenixApplication.kt:16) +06-02 16:38:24.313 D/StrictMode( 9156): at org.mozilla.fenix.FenixApplication.setupInMainProcessOnly(FenixApplication.kt:140) +06-02 16:38:24.313 D/StrictMode( 9156): at org.mozilla.fenix.FenixApplication.onCreate(FenixApplication.kt:90) +06-02 16:38:24.313 D/StrictMode( 9156): at android.app.Instrumentation.callApplicationOnCreate(Instrumentation.java:1154) +06-02 16:38:24.313 D/StrictMode( 9156): at android.app.ActivityThread.handleBindApplication(ActivityThread.java:5871) +06-02 16:38:24.313 D/StrictMode( 9156): at android.app.ActivityThread.access$1100(ActivityThread.java:199) +06-02 16:38:24.313 D/StrictMode( 9156): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1650) +06-02 16:38:24.313 D/StrictMode( 9156): at android.os.Handler.dispatchMessage(Handler.java:106) +06-02 16:38:24.313 D/StrictMode( 9156): at android.os.Looper.loop(Looper.java:193) +06-02 16:38:24.313 D/StrictMode( 9156): at android.app.ActivityThread.main(ActivityThread.java:6669) +06-02 16:38:24.313 D/StrictMode( 9156): at java.lang.reflect.Method.invoke(Native Method) +06-02 16:38:24.313 D/StrictMode( 9156): at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:493) +06-02 16:38:24.313 D/StrictMode( 9156): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:858) +06-02 16:38:24.317 D/GeckoSysInfo( 9156): System memory: 1494MB. +06-02 16:38:24.317 W/lla.fenix.debu( 9156): Accessing hidden method Landroid/os/MessageQueue;->next()Landroid/os/Message; (light greylist, JNI) +06-02 16:38:24.318 D/StrictMode( 9156): StrictMode policy violation: android.os.strictmode.NonSdkApiUsedViolation: Landroid/os/MessageQueue;->next()Landroid/os/Message; +06-02 16:38:24.318 D/StrictMode( 9156): at android.os.StrictMode.lambda$static$1(StrictMode.java:428) +06-02 16:38:24.318 D/StrictMode( 9156): at android.os.-$$Lambda$StrictMode$lu9ekkHJ2HMz0jd3F8K8MnhenxQ.accept(Unknown Source:2) +06-02 16:38:24.318 D/StrictMode( 9156): at org.mozilla.gecko.mozglue.GeckoLoader.nativeRun(Native Method) +06-02 16:38:24.318 D/StrictMode( 9156): at org.mozilla.gecko.GeckoThread.run(GeckoThread.java:449) +06-02 16:38:24.318 W/lla.fenix.debu( 9156): Accessing hidden field Landroid/os/MessageQueue;->mMessages:Landroid/os/Message; (light greylist, JNI) +06-02 16:38:24.318 D/StrictMode( 9156): StrictMode policy violation: android.os.strictmode.NonSdkApiUsedViolation: Landroid/os/MessageQueue;->mMessages:Landroid/os/Message; +06-02 16:38:24.318 D/StrictMode( 9156): at android.os.StrictMode.lambda$static$1(StrictMode.java:428) +06-02 16:38:24.318 D/StrictMode( 9156): at android.os.-$$Lambda$StrictMode$lu9ekkHJ2HMz0jd3F8K8MnhenxQ.accept(Unknown Source:2) +06-02 16:38:24.318 D/StrictMode( 9156): at org.mozilla.gecko.mozglue.GeckoLoader.nativeRun(Native Method) +06-02 16:38:24.318 D/StrictMode( 9156): at org.mozilla.gecko.GeckoThread.run(GeckoThread.java:449) +06-02 16:38:24.319 W/lla.fenix.debu( 9156): Accessing hidden field Ljava/lang/Boolean;->value:Z (light greylist, JNI) +06-02 16:38:24.319 D/StrictMode( 9156): StrictMode policy violation: android.os.strictmode.NonSdkApiUsedViolation: Ljava/lang/Boolean;->value:Z +06-02 16:38:24.319 D/StrictMode( 9156): at android.os.StrictMode.lambda$static$1(StrictMode.java:428) +06-02 16:38:24.319 D/StrictMode( 9156): at android.os.-$$Lambda$StrictMode$lu9ekkHJ2HMz0jd3F8K8MnhenxQ.accept(Unknown Source:2) +06-02 16:38:24.319 D/StrictMode( 9156): at org.mozilla.gecko.mozglue.GeckoLoader.nativeRun(Native Method) +06-02 16:38:24.319 D/StrictMode( 9156): at org.mozilla.gecko.GeckoThread.run(GeckoThread.java:449) +06-02 16:38:24.319 W/lla.fenix.debu( 9156): Accessing hidden field Ljava/lang/Integer;->value:I (light greylist, JNI) +06-02 16:38:24.320 D/StrictMode( 9156): StrictMode policy violation: android.os.strictmode.NonSdkApiUsedViolation: Ljava/lang/Integer;->value:I +06-02 16:38:24.320 D/StrictMode( 9156): at android.os.StrictMode.lambda$static$1(StrictMode.java:428) +06-02 16:38:24.320 D/StrictMode( 9156): at android.os.-$$Lambda$StrictMode$lu9ekkHJ2HMz0jd3F8K8MnhenxQ.accept(Unknown Source:2) +06-02 16:38:24.320 D/StrictMode( 9156): at org.mozilla.gecko.mozglue.GeckoLoader.nativeRun(Native Method) +06-02 16:38:24.320 D/StrictMode( 9156): at org.mozilla.gecko.GeckoThread.run(GeckoThread.java:449) +06-02 16:38:24.320 W/lla.fenix.debu( 9156): Accessing hidden field Ljava/lang/Double;->value:D (light greylist, JNI) +06-02 16:38:24.320 D/StrictMode( 9156): StrictMode policy violation: android.os.strictmode.NonSdkApiUsedViolation: Ljava/lang/Double;->value:D +06-02 16:38:24.320 D/StrictMode( 9156): at android.os.StrictMode.lambda$static$1(StrictMode.java:428) +06-02 16:38:24.320 D/StrictMode( 9156): at android.os.-$$Lambda$StrictMode$lu9ekkHJ2HMz0jd3F8K8MnhenxQ.accept(Unknown Source:2) +06-02 16:38:24.320 D/StrictMode( 9156): at org.mozilla.gecko.mozglue.GeckoLoader.nativeRun(Native Method) +06-02 16:38:24.320 D/StrictMode( 9156): at org.mozilla.gecko.GeckoThread.run(GeckoThread.java:449) +06-02 16:38:24.321 D/GeckoThread( 9156): State changed to JNI_READY +06-02 16:38:24.325 D/ServiceAllocator( 9156): org.mozilla.gecko.process.GeckoChildProcessServices$tab0 updateBindings: BACKGROUND priority, 0 importance, 2 successful binds, 0 failed binds, 0 successful unbinds, 0 failed unbinds +06-02 16:38:24.331 I/enix.debug:tab( 9201): Not late-enabling -Xcheck:jni (already on) +06-02 16:38:24.337 I/ActivityManager( 1869): Start proc 9201:org.mozilla.fenix.debug:tab0/u0a99 for service org.mozilla.fenix.debug/org.mozilla.gecko.process.GeckoChildProcessServices$tab0 +06-02 16:38:24.341 W/enix.debug:tab( 9201): Unexpected CPU variant for X86 using defaults: x86 +06-02 16:38:24.370 I/enix.debug:tab( 9201): The ClassLoaderContext is a special shared library. +06-02 16:38:24.380 W/lla.fenix.debu( 9156): Accessing hidden method Landroid/content/res/Resources$Theme;->rebase()V (dark greylist, reflection) +06-02 16:38:24.381 D/StrictMode( 9156): StrictMode policy violation: android.os.strictmode.NonSdkApiUsedViolation: Landroid/content/res/Resources$Theme;->rebase()V +06-02 16:38:24.381 D/StrictMode( 9156): at android.os.StrictMode.lambda$static$1(StrictMode.java:428) +06-02 16:38:24.381 D/StrictMode( 9156): at android.os.-$$Lambda$StrictMode$lu9ekkHJ2HMz0jd3F8K8MnhenxQ.accept(Unknown Source:2) +06-02 16:38:24.381 D/StrictMode( 9156): at java.lang.Class.getDeclaredMethodInternal(Native Method) +06-02 16:38:24.381 D/StrictMode( 9156): at java.lang.Class.getMethod(Class.java:2064) +06-02 16:38:24.381 D/StrictMode( 9156): at java.lang.Class.getDeclaredMethod(Class.java:2047) +06-02 16:38:24.381 D/StrictMode( 9156): at androidx.core.content.res.ResourcesCompat$ThemeCompat$ImplApi23.rebase(ResourcesCompat.java:501) +06-02 16:38:24.381 D/StrictMode( 9156): at androidx.core.content.res.ResourcesCompat$ThemeCompat.rebase(ResourcesCompat.java:477) +06-02 16:38:24.381 D/StrictMode( 9156): at androidx.appcompat.app.AppCompatDelegateImpl.attachBaseContext2(AppCompatDelegateImpl.java:465) +06-02 16:38:24.381 D/StrictMode( 9156): at androidx.appcompat.app.AppCompatActivity.attachBaseContext(AppCompatActivity.java:107) +06-02 16:38:24.381 D/StrictMode( 9156): at mozilla.components.support.locale.LocaleAwareAppCompatActivity.attachBaseContext(LocaleAwareAppCompatActivity.kt:19) +06-02 16:38:24.381 D/StrictMode( 9156): at android.app.Activity.attach(Activity.java:7051) +06-02 16:38:24.381 D/StrictMode( 9156): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2873) +06-02 16:38:24.381 D/StrictMode( 9156): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3048) +06-02 16:38:24.381 D/StrictMode( 9156): at android.app.servertransaction.LaunchActivityItem.execute(LaunchActivityItem.java:78) +06-02 16:38:24.381 D/StrictMode( 9156): at android.app.servertransaction.TransactionExecutor.executeCallbacks(TransactionExecutor.java:108) +06-02 16:38:24.381 D/StrictMode( 9156): at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:68) +06-02 16:38:24.381 D/StrictMode( 9156): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1808) +06-02 16:38:24.381 D/StrictMode( 9156): at android.os.Handler.dispatchMessage(Handler.java:106) +06-02 16:38:24.381 D/StrictMode( 9156): at android.os.Looper.loop(Looper.java:193) +06-02 16:38:24.381 D/StrictMode( 9156): at android.app.ActivityThread.main(ActivityThread.java:6669) +06-02 16:38:24.381 D/StrictMode( 9156): at java.lang.reflect.Method.invoke(Native Method) +06-02 16:38:24.381 D/StrictMode( 9156): at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:493) +06-02 16:38:24.381 D/StrictMode( 9156): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:858) +06-02 16:38:24.383 I/ResourcesCompat( 9156): Failed to retrieve rebase() method +06-02 16:38:24.383 I/ResourcesCompat( 9156): java.lang.NoSuchMethodException: rebase [] +06-02 16:38:24.383 I/ResourcesCompat( 9156): at java.lang.Class.getMethod(Class.java:2068) +06-02 16:38:24.383 I/ResourcesCompat( 9156): at java.lang.Class.getDeclaredMethod(Class.java:2047) +06-02 16:38:24.383 I/ResourcesCompat( 9156): at androidx.core.content.res.ResourcesCompat$ThemeCompat$ImplApi23.rebase(ResourcesCompat.java:501) +06-02 16:38:24.383 I/ResourcesCompat( 9156): at androidx.core.content.res.ResourcesCompat$ThemeCompat.rebase(ResourcesCompat.java:477) +06-02 16:38:24.383 I/ResourcesCompat( 9156): at androidx.appcompat.app.AppCompatDelegateImpl.attachBaseContext2(AppCompatDelegateImpl.java:465) +06-02 16:38:24.383 I/ResourcesCompat( 9156): at androidx.appcompat.app.AppCompatActivity.attachBaseContext(AppCompatActivity.java:107) +06-02 16:38:24.383 I/ResourcesCompat( 9156): at mozilla.components.support.locale.LocaleAwareAppCompatActivity.attachBaseContext(LocaleAwareAppCompatActivity.kt:19) +06-02 16:38:24.383 I/ResourcesCompat( 9156): at android.app.Activity.attach(Activity.java:7051) +06-02 16:38:24.383 I/ResourcesCompat( 9156): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2873) +06-02 16:38:24.383 I/ResourcesCompat( 9156): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3048) +06-02 16:38:24.383 I/ResourcesCompat( 9156): at android.app.servertransaction.LaunchActivityItem.execute(LaunchActivityItem.java:78) +06-02 16:38:24.383 I/ResourcesCompat( 9156): at android.app.servertransaction.TransactionExecutor.executeCallbacks(TransactionExecutor.java:108) +06-02 16:38:24.383 I/ResourcesCompat( 9156): at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:68) +06-02 16:38:24.383 I/ResourcesCompat( 9156): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1808) +06-02 16:38:24.383 I/ResourcesCompat( 9156): at android.os.Handler.dispatchMessage(Handler.java:106) +06-02 16:38:24.383 I/ResourcesCompat( 9156): at android.os.Looper.loop(Looper.java:193) +06-02 16:38:24.383 I/ResourcesCompat( 9156): at android.app.ActivityThread.main(ActivityThread.java:6669) +06-02 16:38:24.383 I/ResourcesCompat( 9156): at java.lang.reflect.Method.invoke(Native Method) +06-02 16:38:24.383 I/ResourcesCompat( 9156): at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:493) +06-02 16:38:24.383 I/ResourcesCompat( 9156): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:858) +06-02 16:38:24.391 W/lla.fenix.debu( 9156): Accessing hidden method Landroid/graphics/drawable/Drawable;->getOpticalInsets()Landroid/graphics/Insets; (light greylist, linking) +06-02 16:38:24.391 W/lla.fenix.debu( 9156): Accessing hidden field Landroid/graphics/Insets;->left:I (light greylist, linking) +06-02 16:38:24.391 W/lla.fenix.debu( 9156): Accessing hidden field Landroid/graphics/Insets;->right:I (light greylist, linking) +06-02 16:38:24.391 W/lla.fenix.debu( 9156): Accessing hidden field Landroid/graphics/Insets;->top:I (light greylist, linking) +06-02 16:38:24.391 W/lla.fenix.debu( 9156): Accessing hidden field Landroid/graphics/Insets;->bottom:I (light greylist, linking) +06-02 16:38:24.428 W/lla.fenix.debu( 9156): Accessing hidden method Landroid/view/View;->getAccessibilityDelegate()Landroid/view/View$AccessibilityDelegate; (light greylist, linking) +06-02 16:38:24.434 D/GeckoViewStartup( 9156): observe: app-startup +06-02 16:38:24.434 W/lla.fenix.debu( 9156): Accessing hidden method Landroid/view/View;->computeFitSystemWindows(Landroid/graphics/Rect;Landroid/graphics/Rect;)Z (light greylist, reflection) +06-02 16:38:24.435 D/StrictMode( 9156): StrictMode policy violation: android.os.strictmode.NonSdkApiUsedViolation: Landroid/view/View;->computeFitSystemWindows(Landroid/graphics/Rect;Landroid/graphics/Rect;)Z +06-02 16:38:24.435 D/StrictMode( 9156): at android.os.StrictMode.lambda$static$1(StrictMode.java:428) +06-02 16:38:24.435 D/StrictMode( 9156): at android.os.-$$Lambda$StrictMode$lu9ekkHJ2HMz0jd3F8K8MnhenxQ.accept(Unknown Source:2) +06-02 16:38:24.435 D/StrictMode( 9156): at java.lang.Class.getDeclaredMethodInternal(Native Method) +06-02 16:38:24.435 D/StrictMode( 9156): at java.lang.Class.getMethod(Class.java:2064) +06-02 16:38:24.435 D/StrictMode( 9156): at java.lang.Class.getDeclaredMethod(Class.java:2047) +06-02 16:38:24.435 D/StrictMode( 9156): at androidx.appcompat.widget.ViewUtils.<clinit>(ViewUtils.java:44) +06-02 16:38:24.435 D/StrictMode( 9156): at androidx.appcompat.widget.ViewUtils.makeOptionalFitsSystemWindows(ViewUtils.java:80) +06-02 16:38:24.435 D/StrictMode( 9156): at androidx.appcompat.app.AppCompatDelegateImpl.createSubDecor(AppCompatDelegateImpl.java:970) +06-02 16:38:24.435 D/StrictMode( 9156): at androidx.appcompat.app.AppCompatDelegateImpl.ensureSubDecor(AppCompatDelegateImpl.java:803) +06-02 16:38:24.435 D/StrictMode( 9156): at androidx.appcompat.app.AppCompatDelegateImpl.setContentView(AppCompatDelegateImpl.java:692) +06-02 16:38:24.435 D/StrictMode( 9156): at androidx.appcompat.app.AppCompatActivity.setContentView(AppCompatActivity.java:170) +06-02 16:38:24.435 D/StrictMode( 9156): at org.mozilla.fenix.HomeActivity.onCreate(HomeActivity.kt:130) +06-02 16:38:24.435 D/StrictMode( 9156): at android.app.Activity.performCreate(Activity.java:7136) +06-02 16:38:24.435 D/StrictMode( 9156): at android.app.Activity.performCreate(Activity.java:7127) +06-02 16:38:24.435 D/StrictMode( 9156): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1271) +06-02 16:38:24.435 D/StrictMode( 9156): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2893) +06-02 16:38:24.435 D/StrictMode( 9156): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3048) +06-02 16:38:24.435 D/StrictMode( 9156): at android.app.servertransaction.LaunchActivityItem.execute(LaunchActivityItem.java:78) +06-02 16:38:24.435 D/StrictMode( 9156): at android.app.servertransaction.TransactionExecutor.executeCallbacks(TransactionExecutor.java:108) +06-02 16:38:24.435 D/StrictMode( 9156): at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:68) +06-02 16:38:24.435 D/StrictMode( 9156): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1808) +06-02 16:38:24.435 D/StrictMode( 9156): at android.os.Handler.dispatchMessage(Handler.java:106) +06-02 16:38:24.435 D/StrictMode( 9156): at android.os.Looper.loop(Looper.java:193) +06-02 16:38:24.435 D/StrictMode( 9156): at android.app.ActivityThread.main(ActivityThread.java:6669) +06-02 16:38:24.435 D/StrictMode( 9156): at java.lang.reflect.Method.invoke(Native Method) +06-02 16:38:24.435 D/StrictMode( 9156): at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:493) +06-02 16:38:24.435 D/StrictMode( 9156): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:858) +06-02 16:38:24.435 W/lla.fenix.debu( 9156): Accessing hidden method Landroid/view/ViewGroup;->makeOptionalFitsSystemWindows()V (light greylist, reflection) +06-02 16:38:24.436 D/StrictMode( 9156): StrictMode policy violation: android.os.strictmode.NonSdkApiUsedViolation: Landroid/view/ViewGroup;->makeOptionalFitsSystemWindows()V +06-02 16:38:24.436 D/StrictMode( 9156): at android.os.StrictMode.lambda$static$1(StrictMode.java:428) +06-02 16:38:24.436 D/StrictMode( 9156): at android.os.-$$Lambda$StrictMode$lu9ekkHJ2HMz0jd3F8K8MnhenxQ.accept(Unknown Source:2) +06-02 16:38:24.436 D/StrictMode( 9156): at java.lang.Class.getDeclaredMethodInternal(Native Method) +06-02 16:38:24.436 D/StrictMode( 9156): at java.lang.Class.getPublicMethodRecursive(Class.java:2075) +06-02 16:38:24.436 D/StrictMode( 9156): at java.lang.Class.getMethod(Class.java:2063) +06-02 16:38:24.436 D/StrictMode( 9156): at java.lang.Class.getMethod(Class.java:1690) +06-02 16:38:24.436 D/StrictMode( 9156): at androidx.appcompat.widget.ViewUtils.makeOptionalFitsSystemWindows(ViewUtils.java:84) +06-02 16:38:24.436 D/StrictMode( 9156): at androidx.appcompat.app.AppCompatDelegateImpl.createSubDecor(AppCompatDelegateImpl.java:970) +06-02 16:38:24.436 D/StrictMode( 9156): at androidx.appcompat.app.AppCompatDelegateImpl.ensureSubDecor(AppCompatDelegateImpl.java:803) +06-02 16:38:24.436 D/StrictMode( 9156): at androidx.appcompat.app.AppCompatDelegateImpl.setContentView(AppCompatDelegateImpl.java:692) +06-02 16:38:24.436 D/StrictMode( 9156): at androidx.appcompat.app.AppCompatActivity.setContentView(AppCompatActivity.java:170) +06-02 16:38:24.436 D/StrictMode( 9156): at org.mozilla.fenix.HomeActivity.onCreate(HomeActivity.kt:130) +06-02 16:38:24.436 D/StrictMode( 9156): at android.app.Activity.performCreate(Activity.java:7136) +06-02 16:38:24.436 D/StrictMode( 9156): at android.app.Activity.performCreate(Activity.java:7127) +06-02 16:38:24.436 D/StrictMode( 9156): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1271) +06-02 16:38:24.436 D/StrictMode( 9156): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2893) +06-02 16:38:24.436 D/StrictMode( 9156): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3048) +06-02 16:38:24.436 D/StrictMode( 9156): at android.app.servertransaction.LaunchActivityItem.execute(LaunchActivityItem.java:78) +06-02 16:38:24.436 D/StrictMode( 9156): at android.app.servertransaction.TransactionExecutor.executeCallbacks(TransactionExecutor.java:108) +06-02 16:38:24.436 D/StrictMode( 9156): at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:68) +06-02 16:38:24.436 D/StrictMode( 9156): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1808) +06-02 16:38:24.436 D/StrictMode( 9156): at android.os.Handler.dispatchMessage(Handler.java:106) +06-02 16:38:24.436 D/StrictMode( 9156): at android.os.Looper.loop(Looper.java:193) +06-02 16:38:24.436 D/StrictMode( 9156): at android.app.ActivityThread.main(ActivityThread.java:6669) +06-02 16:38:24.436 D/StrictMode( 9156): at java.lang.reflect.Method.invoke(Native Method) +06-02 16:38:24.436 D/StrictMode( 9156): at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:493) +06-02 16:38:24.436 D/StrictMode( 9156): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:858) +06-02 16:38:24.442 D/GeckoViewConsole( 9156): enabled = true +06-02 16:38:24.482 I/AJC ( 9156): isPerformanceTest +06-02 16:38:24.483 I/AJC ( 9156): isPerformanceTest : isPhonePlugged: true +06-02 16:38:24.483 I/AJC ( 9156): isPerformanceTest : isAdbEnabled: true +06-02 16:38:24.487 D/App ( 9156): DebugMetricController: track event: org.mozilla.fenix.components.metrics.Event$DismissedOnboarding@6354493 +06-02 16:38:24.505 I/GeckoConsole( 9156): No chrome package registered for chrome://browser/content/built_in_addons.json +06-02 16:38:24.582 W/lla.fenix.debu( 9156): Accessing hidden method Landroid/graphics/FontFamily;-><init>()V (light greylist, reflection) +06-02 16:38:24.585 D/StrictMode( 9156): StrictMode policy violation: android.os.strictmode.NonSdkApiUsedViolation: Landroid/graphics/FontFamily;-><init>()V +06-02 16:38:24.585 D/StrictMode( 9156): at android.os.StrictMode.lambda$static$1(StrictMode.java:428) +06-02 16:38:24.585 D/StrictMode( 9156): at android.os.-$$Lambda$StrictMode$lu9ekkHJ2HMz0jd3F8K8MnhenxQ.accept(Unknown Source:2) +06-02 16:38:24.585 D/StrictMode( 9156): at java.lang.Class.getDeclaredConstructorInternal(Native Method) +06-02 16:38:24.585 D/StrictMode( 9156): at java.lang.Class.getConstructor0(Class.java:2325) +06-02 16:38:24.585 D/StrictMode( 9156): at java.lang.Class.getConstructor(Class.java:1725) +06-02 16:38:24.585 D/StrictMode( 9156): at androidx.core.graphics.TypefaceCompatApi26Impl.obtainFontFamilyCtor(TypefaceCompatApi26Impl.java:321) +06-02 16:38:24.585 D/StrictMode( 9156): at androidx.core.graphics.TypefaceCompatApi26Impl.<init>(TypefaceCompatApi26Impl.java:84) +06-02 16:38:24.585 D/StrictMode( 9156): at androidx.core.graphics.TypefaceCompatApi28Impl.<init>(TypefaceCompatApi28Impl.java:36) +06-02 16:38:24.585 D/StrictMode( 9156): at androidx.core.graphics.TypefaceCompat.<clinit>(TypefaceCompat.java:51) +06-02 16:38:24.585 D/StrictMode( 9156): at androidx.core.graphics.TypefaceCompat.create(TypefaceCompat.java:194) +06-02 16:38:24.585 D/StrictMode( 9156): at androidx.appcompat.widget.AppCompatTextView.setTypeface(AppCompatTextView.java:708) +06-02 16:38:24.585 D/StrictMode( 9156): at android.widget.TextView.resolveStyleAndSetTypeface(TextView.java:2037) +06-02 16:38:24.585 D/StrictMode( 9156): at android.widget.TextView.setTypefaceFromAttrs(TextView.java:2008) +06-02 16:38:24.585 D/StrictMode( 9156): at android.widget.TextView.applyTextAppearance(TextView.java:3640) +06-02 16:38:24.585 D/StrictMode( 9156): at android.widget.TextView.<init>(TextView.java:1498) +06-02 16:38:24.585 D/StrictMode( 9156): at android.widget.TextView.<init>(TextView.java:869) +06-02 16:38:24.585 D/StrictMode( 9156): at androidx.appcompat.widget.AppCompatTextView.<init>(AppCompatTextView.java:100) +06-02 16:38:24.585 D/StrictMode( 9156): at androidx.appcompat.widget.AppCompatTextView.<init>(AppCompatTextView.java:95) +06-02 16:38:24.585 D/StrictMode( 9156): at androidx.appcompat.app.AppCompatViewInflater.createTextView(AppCompatViewInflater.java:194) +06-02 16:38:24.585 D/StrictMode( 9156): at androidx.appcompat.app.AppCompatViewInflater.createView(AppCompatViewInflater.java:115) +06-02 16:38:24.585 D/StrictMode( 9156): at androidx.appcompat.app.AppCompatDelegateImpl.createView(AppCompatDelegateImpl.java:1548) +06-02 16:38:24.585 D/StrictMode( 9156): at androidx.appcompat.app.AppCompatDelegateImpl.onCreateView(AppCompatDelegateImpl.java:1599) +06-02 16:38:24.585 D/StrictMode( 9156): at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:772) +06-02 16:38:24.585 D/StrictMode( 9156): at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:730) +06-02 16:38:24.585 D/StrictMode( 9156): at android.view.LayoutInflater.rInflate(LayoutInflater.java:863) +06-02 16:38:24.585 D/StrictMode( 9156): at android.view.LayoutInflater.rInflateChildren(LayoutInflater.java:824) +06-02 16:38:24.585 D/StrictMode( 9156): at android.view.LayoutInflater.rInflate(LayoutInflater.java:866) +06-02 16:38:24.585 D/StrictMode( 9156): at android.view.LayoutInflater.inflate(LayoutInflater.java:489) +06-02 16:38:24.585 D/StrictMode( 9156): at android.view.LayoutInflater.inflate(LayoutInflater.java:423) +06-02 16:38:24.585 D/StrictMode( 9156): at android.view.LayoutInflater.inflate(LayoutInflater.java:374) +06-02 16:38:24.585 D/StrictMode( 9156): at org.mozilla.fenix.components.toolbar.TabCounter.<init>(TabCounter.kt:30) +06-02 16:38:24.585 D/StrictMode( 9156): at org.mozilla.fenix.components.toolbar.TabCounter.<init>(TabCounter.kt:22) +06-02 16:38:24.585 D/StrictMode( 9156): at org.mozilla.fenix.components.toolbar.TabCounter.<init>(Unknown Source:6) +06-02 16:38:24.585 D/StrictMode( 9156): at java.lang.reflect.Constructor.newInstance0(Native Method) +06-02 16:38:24.585 D/StrictMode( 9156): at java.lang.reflect.Constructor.newInstance(Constructor.java:343) +06-02 16:38:24.585 D/StrictMode( 9156): at android.view.LayoutInflater.createView(LayoutInflater.java:647) +06-02 16:38:24.585 D/StrictMode( 9156): at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:790) +06-02 16:38:24.585 D/StrictMode( 9156): at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:730) +06-02 16:38:24.585 D/StrictMode( 9156): at android.view.LayoutInflater.rInflate(LayoutInflater.java:863) +06-02 16:38:24.585 D/StrictMode( 9156): at android.view.LayoutInflater.rInflateChildren(LayoutInflater.java:824) +06-02 16:38:24.585 D/StrictMode( 9156): at android.view.LayoutInflater.rInflate(LayoutInflater.java:866) +06-02 16:38:24.585 D/StrictMode( 9156): at android.view.LayoutInflater.rInflateChildren(LayoutInflater.java:824) +06-02 16:38:24.585 D/StrictMode( 9156): at android.view.LayoutInflater.inflate(LayoutInflater.java:515) +06-02 16:38:24.585 D/StrictMode( 9156): at android.view.LayoutInflater.inflate(LayoutInflater.java:423) +06-02 16:38:24.585 D/StrictMode( 9156): at org.mozilla.fenix.home.HomeFragment.onCreateView(HomeFragment.kt:183) +06-02 16:38:24.585 D/StrictMode( 9156): at androidx.fragment.app.Fragment.performCreateView(Fragment.java:2698) +06-02 16:38:24.585 D/StrictMode( 9156): at androidx.fragment.app.FragmentStateManager.createView(FragmentStateManager.java:320) +06-02 16:38:24.585 D/StrictMode( 9156): at androidx.fragment.app.FragmentManager.moveToState(FragmentManager.java:1187) +06-02 16:38:24.585 D/StrictMode( 9156): at androidx.fragment.app.FragmentManager.addAddedFragments(FragmentManager.java:2224) +06-02 16:38:24.585 D/StrictMode( 9156): at androidx.fragment.app.FragmentManager.executeOpsTogether(FragmentManager.java:1997) +06-02 16:38:24.585 D/StrictMode( 9156): at androidx.fragment.app.FragmentManager.removeRedundantOperationsAndExecute(FragmentManager.java:1953) +06-02 16:38:24.585 D/StrictMode( 9156): at androidx.fragment.app.FragmentManager.execPendingActions(FragmentManager.java:1849) +06-02 16:38:24.585 D/StrictMode( 9156): at +06-02 16:38:24.585 W/lla.fenix.debu( 9156): Accessing hidden method Landroid/graphics/FontFamily;->addFontFromAssetManager(Landroid/content/res/AssetManager;Ljava/lang/String;IZIII[Landroid/graphics/fonts/FontVariationAxis;)Z (light greylist, reflection) +06-02 16:38:24.588 D/StrictMode( 9156): StrictMode policy violation: android.os.strictmode.NonSdkApiUsedViolation: Landroid/graphics/FontFamily;->addFontFromAssetManager(Landroid/content/res/AssetManager;Ljava/lang/String;IZIII[Landroid/graphics/fonts/FontVariationAxis;)Z +06-02 16:38:24.588 D/StrictMode( 9156): at android.os.StrictMode.lambda$static$1(StrictMode.java:428) +06-02 16:38:24.588 D/StrictMode( 9156): at android.os.-$$Lambda$StrictMode$lu9ekkHJ2HMz0jd3F8K8MnhenxQ.accept(Unknown Source:2) +06-02 16:38:24.588 D/StrictMode( 9156): at java.lang.Class.getDeclaredMethodInternal(Native Method) +06-02 16:38:24.588 D/StrictMode( 9156): at java.lang.Class.getPublicMethodRecursive(Class.java:2075) +06-02 16:38:24.588 D/StrictMode( 9156): at java.lang.Class.getMethod(Class.java:2063) +06-02 16:38:24.588 D/StrictMode( 9156): at java.lang.Class.getMethod(Class.java:1690) +06-02 16:38:24.588 D/StrictMode( 9156): at androidx.core.graphics.TypefaceCompatApi26Impl.obtainAddFontFromAssetManagerMethod(TypefaceCompatApi26Impl.java:326) +06-02 16:38:24.588 D/StrictMode( 9156): at androidx.core.graphics.TypefaceCompatApi26Impl.<init>(TypefaceCompatApi26Impl.java:85) +06-02 16:38:24.588 D/StrictMode( 9156): at androidx.core.graphics.TypefaceCompatApi28Impl.<init>(TypefaceCompatApi28Impl.java:36) +06-02 16:38:24.588 D/StrictMode( 9156): at androidx.core.graphics.TypefaceCompat.<clinit>(TypefaceCompat.java:51) +06-02 16:38:24.588 D/StrictMode( 9156): at androidx.core.graphics.TypefaceCompat.create(TypefaceCompat.java:194) +06-02 16:38:24.588 D/StrictMode( 9156): at androidx.appcompat.widget.AppCompatTextView.setTypeface(AppCompatTextView.java:708) +06-02 16:38:24.588 D/StrictMode( 9156): at android.widget.TextView.resolveStyleAndSetTypeface(TextView.java:2037) +06-02 16:38:24.588 D/StrictMode( 9156): at android.widget.TextView.setTypefaceFromAttrs(TextView.java:2008) +06-02 16:38:24.588 D/StrictMode( 9156): at android.widget.TextView.applyTextAppearance(TextView.java:3640) +06-02 16:38:24.588 D/StrictMode( 9156): at android.widget.TextView.<init>(TextView.java:1498) +06-02 16:38:24.588 D/StrictMode( 9156): at android.widget.TextView.<init>(TextView.java:869) +06-02 16:38:24.588 D/StrictMode( 9156): at androidx.appcompat.widget.AppCompatTextView.<init>(AppCompatTextView.java:100) +06-02 16:38:24.588 D/StrictMode( 9156): at androidx.appcompat.widget.AppCompatTextView.<init>(AppCompatTextView.java:95) +06-02 16:38:24.588 D/StrictMode( 9156): at androidx.appcompat.app.AppCompatViewInflater.createTextView(AppCompatViewInflater.java:194) +06-02 16:38:24.588 D/StrictMode( 9156): at androidx.appcompat.app.AppCompatViewInflater.createView(AppCompatViewInflater.java:115) +06-02 16:38:24.588 D/StrictMode( 9156): at androidx.appcompat.app.AppCompatDelegateImpl.createView(AppCompatDelegateImpl.java:1548) +06-02 16:38:24.588 D/StrictMode( 9156): at androidx.appcompat.app.AppCompatDelegateImpl.onCreateView(AppCompatDelegateImpl.java:1599) +06-02 16:38:24.588 D/StrictMode( 9156): at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:772) +06-02 16:38:24.588 D/StrictMode( 9156): at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:730) +06-02 16:38:24.588 D/StrictMode( 9156): at android.view.LayoutInflater.rInflate(LayoutInflater.java:863) +06-02 16:38:24.588 D/StrictMode( 9156): at android.view.LayoutInflater.rInflateChildren(LayoutInflater.java:824) +06-02 16:38:24.588 D/StrictMode( 9156): at android.view.LayoutInflater.rInflate(LayoutInflater.java:866) +06-02 16:38:24.588 D/StrictMode( 9156): at android.view.LayoutInflater.inflate(LayoutInflater.java:489) +06-02 16:38:24.588 D/StrictMode( 9156): at android.view.LayoutInflater.inflate(LayoutInflater.java:423) +06-02 16:38:24.588 D/StrictMode( 9156): at android.view.LayoutInflater.inflate(LayoutInflater.java:374) +06-02 16:38:24.588 D/StrictMode( 9156): at org.mozilla.fenix.components.toolbar.TabCounter.<init>(TabCounter.kt:30) +06-02 16:38:24.588 D/StrictMode( 9156): at org.mozilla.fenix.components.toolbar.TabCounter.<init>(TabCounter.kt:22) +06-02 16:38:24.588 D/StrictMode( 9156): at org.mozilla.fenix.components.toolbar.TabCounter.<init>(Unknown Source:6) +06-02 16:38:24.588 D/StrictMode( 9156): at java.lang.reflect.Constructor.newInstance0(Native Method) +06-02 16:38:24.588 D/StrictMode( 9156): at java.lang.reflect.Constructor.newInstance(Constructor.java:343) +06-02 16:38:24.588 D/StrictMode( 9156): at android.view.LayoutInflater.createView(LayoutInflater.java:647) +06-02 16:38:24.588 D/StrictMode( 9156): at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:790) +06-02 16:38:24.588 D/StrictMode( 9156): at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:730) +06-02 16:38:24.588 D/StrictMode( 9156): at android.view.LayoutInflater.rInflate(LayoutInflater.java:863) +06-02 16:38:24.588 D/StrictMode( 9156): at android.view.LayoutInflater.rInflateChildren(LayoutInflater.java:824) +06-02 16:38:24.588 D/StrictMode( 9156): at android.view.LayoutInflater.rInflate(LayoutInflater.java:866) +06-02 16:38:24.588 D/StrictMode( 9156): at android.view.LayoutInflater.rInflateChildren(LayoutInflater.java:824) +06-02 16:38:24.588 D/StrictMode( 9156): at android.view.LayoutInflater.inflate(LayoutInflater.java:515) +06-02 16:38:24.588 D/StrictMode( 9156): at android.view.LayoutInflater.inflate(LayoutInflater.java:423) +06-02 16:38:24.588 D/StrictMode( 9156): at org.mozilla.fenix.home.HomeFragment.onCreateView(HomeFragment.kt:183) +06-02 16:38:24.588 D/StrictMode( 9156): at androidx.fragment.app.Fragment.performCreateView(Fragment.java:2698) +06-02 16:38:24.588 D/StrictMode( 9156): at androidx.fragment.app.FragmentStateManager.createView(FragmentStateManager.java:320) +06-02 16:38:24.588 D/StrictMode( 9156): at androidx.fragment.app.FragmentManager.moveToState(FragmentManager.java:1187) +06-02 16:38:24.588 D/StrictMode( 9156): at androidx.fragment.app.FragmentManager.addAddedFragments(FragmentManager.java:2224) +06-02 16:38:24.588 D/StrictMode( 9156): at androidx.fragment.app.FragmentManager.executeOpsTogether(FragmentManager.java:1997) +06-02 16:38:24.588 D/StrictMode( 9156): at androidx.fragme +06-02 16:38:24.588 W/lla.fenix.debu( 9156): Accessing hidden method Landroid/graphics/FontFamily;->addFontFromBuffer(Ljava/nio/ByteBuffer;I[Landroid/graphics/fonts/FontVariationAxis;II)Z (light greylist, reflection) +06-02 16:38:24.590 D/StrictMode( 9156): StrictMode policy violation: android.os.strictmode.NonSdkApiUsedViolation: Landroid/graphics/FontFamily;->addFontFromBuffer(Ljava/nio/ByteBuffer;I[Landroid/graphics/fonts/FontVariationAxis;II)Z +06-02 16:38:24.590 D/StrictMode( 9156): at android.os.StrictMode.lambda$static$1(StrictMode.java:428) +06-02 16:38:24.590 D/StrictMode( 9156): at android.os.-$$Lambda$StrictMode$lu9ekkHJ2HMz0jd3F8K8MnhenxQ.accept(Unknown Source:2) +06-02 16:38:24.590 D/StrictMode( 9156): at java.lang.Class.getDeclaredMethodInternal(Native Method) +06-02 16:38:24.590 D/StrictMode( 9156): at java.lang.Class.getPublicMethodRecursive(Class.java:2075) +06-02 16:38:24.590 D/StrictMode( 9156): at java.lang.Class.getMethod(Class.java:2063) +06-02 16:38:24.590 D/StrictMode( 9156): at java.lang.Class.getMethod(Class.java:1690) +06-02 16:38:24.590 D/StrictMode( 9156): at androidx.core.graphics.TypefaceCompatApi26Impl.obtainAddFontFromBufferMethod(TypefaceCompatApi26Impl.java:333) +06-02 16:38:24.590 D/StrictMode( 9156): at androidx.core.graphics.TypefaceCompatApi26Impl.<init>(TypefaceCompatApi26Impl.java:86) +06-02 16:38:24.590 D/StrictMode( 9156): at androidx.core.graphics.TypefaceCompatApi28Impl.<init>(TypefaceCompatApi28Impl.java:36) +06-02 16:38:24.590 D/StrictMode( 9156): at androidx.core.graphics.TypefaceCompat.<clinit>(TypefaceCompat.java:51) +06-02 16:38:24.590 D/StrictMode( 9156): at androidx.core.graphics.TypefaceCompat.create(TypefaceCompat.java:194) +06-02 16:38:24.590 D/StrictMode( 9156): at androidx.appcompat.widget.AppCompatTextView.setTypeface(AppCompatTextView.java:708) +06-02 16:38:24.590 D/StrictMode( 9156): at android.widget.TextView.resolveStyleAndSetTypeface(TextView.java:2037) +06-02 16:38:24.590 D/StrictMode( 9156): at android.widget.TextView.setTypefaceFromAttrs(TextView.java:2008) +06-02 16:38:24.590 D/StrictMode( 9156): at android.widget.TextView.applyTextAppearance(TextView.java:3640) +06-02 16:38:24.590 D/StrictMode( 9156): at android.widget.TextView.<init>(TextView.java:1498) +06-02 16:38:24.590 D/StrictMode( 9156): at android.widget.TextView.<init>(TextView.java:869) +06-02 16:38:24.590 D/StrictMode( 9156): at androidx.appcompat.widget.AppCompatTextView.<init>(AppCompatTextView.java:100) +06-02 16:38:24.590 D/StrictMode( 9156): at androidx.appcompat.widget.AppCompatTextView.<init>(AppCompatTextView.java:95) +06-02 16:38:24.590 D/StrictMode( 9156): at androidx.appcompat.app.AppCompatViewInflater.createTextView(AppCompatViewInflater.java:194) +06-02 16:38:24.590 D/StrictMode( 9156): at androidx.appcompat.app.AppCompatViewInflater.createView(AppCompatViewInflater.java:115) +06-02 16:38:24.590 D/StrictMode( 9156): at androidx.appcompat.app.AppCompatDelegateImpl.createView(AppCompatDelegateImpl.java:1548) +06-02 16:38:24.590 D/StrictMode( 9156): at androidx.appcompat.app.AppCompatDelegateImpl.onCreateView(AppCompatDelegateImpl.java:1599) +06-02 16:38:24.590 D/StrictMode( 9156): at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:772) +06-02 16:38:24.590 D/StrictMode( 9156): at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:730) +06-02 16:38:24.590 D/StrictMode( 9156): at android.view.LayoutInflater.rInflate(LayoutInflater.java:863) +06-02 16:38:24.590 D/StrictMode( 9156): at android.view.LayoutInflater.rInflateChildren(LayoutInflater.java:824) +06-02 16:38:24.590 D/StrictMode( 9156): at android.view.LayoutInflater.rInflate(LayoutInflater.java:866) +06-02 16:38:24.590 D/StrictMode( 9156): at android.view.LayoutInflater.inflate(LayoutInflater.java:489) +06-02 16:38:24.590 D/StrictMode( 9156): at android.view.LayoutInflater.inflate(LayoutInflater.java:423) +06-02 16:38:24.590 D/StrictMode( 9156): at android.view.LayoutInflater.inflate(LayoutInflater.java:374) +06-02 16:38:24.590 D/StrictMode( 9156): at org.mozilla.fenix.components.toolbar.TabCounter.<init>(TabCounter.kt:30) +06-02 16:38:24.590 D/StrictMode( 9156): at org.mozilla.fenix.components.toolbar.TabCounter.<init>(TabCounter.kt:22) +06-02 16:38:24.590 D/StrictMode( 9156): at org.mozilla.fenix.components.toolbar.TabCounter.<init>(Unknown Source:6) +06-02 16:38:24.590 D/StrictMode( 9156): at java.lang.reflect.Constructor.newInstance0(Native Method) +06-02 16:38:24.590 D/StrictMode( 9156): at java.lang.reflect.Constructor.newInstance(Constructor.java:343) +06-02 16:38:24.590 D/StrictMode( 9156): at android.view.LayoutInflater.createView(LayoutInflater.java:647) +06-02 16:38:24.590 D/StrictMode( 9156): at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:790) +06-02 16:38:24.590 D/StrictMode( 9156): at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:730) +06-02 16:38:24.590 D/StrictMode( 9156): at android.view.LayoutInflater.rInflate(LayoutInflater.java:863) +06-02 16:38:24.590 D/StrictMode( 9156): at android.view.LayoutInflater.rInflateChildren(LayoutInflater.java:824) +06-02 16:38:24.590 D/StrictMode( 9156): at android.view.LayoutInflater.rInflate(LayoutInflater.java:866) +06-02 16:38:24.590 D/StrictMode( 9156): at android.view.LayoutInflater.rInflateChildren(LayoutInflater.java:824) +06-02 16:38:24.590 D/StrictMode( 9156): at android.view.LayoutInflater.inflate(LayoutInflater.java:515) +06-02 16:38:24.590 D/StrictMode( 9156): at android.view.LayoutInflater.inflate(LayoutInflater.java:423) +06-02 16:38:24.590 D/StrictMode( 9156): at org.mozilla.fenix.home.HomeFragment.onCreateView(HomeFragment.kt:183) +06-02 16:38:24.590 D/StrictMode( 9156): at androidx.fragment.app.Fragment.performCreateView(Fragment.java:2698) +06-02 16:38:24.590 D/StrictMode( 9156): at androidx.fragment.app.FragmentStateManager.createView(FragmentStateManager.java:320) +06-02 16:38:24.590 D/StrictMode( 9156): at androidx.fragment.app.FragmentManager.moveToState(FragmentManager.java:1187) +06-02 16:38:24.590 D/StrictMode( 9156): at androidx.fragment.app.FragmentManager.addAddedFragments(FragmentManager.java:2224) +06-02 16:38:24.590 D/StrictMode( 9156): at androidx.fragment.app.FragmentManager.executeOpsTogether(FragmentManager.java:1997) +06-02 16:38:24.590 D/StrictMode( 9156): at androidx.fragment.app.FragmentManager.removeRedundantOperati +06-02 16:38:24.591 W/lla.fenix.debu( 9156): Accessing hidden method Landroid/graphics/FontFamily;->freeze()Z (light greylist, reflection) +06-02 16:38:24.591 D/StrictMode( 9156): StrictMode policy violation: android.os.strictmode.NonSdkApiUsedViolation: Landroid/graphics/FontFamily;->freeze()Z +06-02 16:38:24.591 D/StrictMode( 9156): at android.os.StrictMode.lambda$static$1(StrictMode.java:428) +06-02 16:38:24.591 D/StrictMode( 9156): at android.os.-$$Lambda$StrictMode$lu9ekkHJ2HMz0jd3F8K8MnhenxQ.accept(Unknown Source:2) +06-02 16:38:24.591 D/StrictMode( 9156): at java.lang.Class.getDeclaredMethodInternal(Native Method) +06-02 16:38:24.591 D/StrictMode( 9156): at java.lang.Class.getPublicMethodRecursive(Class.java:2075) +06-02 16:38:24.591 D/StrictMode( 9156): at java.lang.Class.getMethod(Class.java:2063) +06-02 16:38:24.591 D/StrictMode( 9156): at java.lang.Class.getMethod(Class.java:1690) +06-02 16:38:24.591 D/StrictMode( 9156): at androidx.core.graphics.TypefaceCompatApi26Impl.obtainFreezeMethod(TypefaceCompatApi26Impl.java:339) +06-02 16:38:24.591 D/StrictMode( 9156): at androidx.core.graphics.TypefaceCompatApi26Impl.<init>(TypefaceCompatApi26Impl.java:87) +06-02 16:38:24.591 D/StrictMode( 9156): at androidx.core.graphics.TypefaceCompatApi28Impl.<init>(TypefaceCompatApi28Impl.java:36) +06-02 16:38:24.591 D/StrictMode( 9156): at androidx.core.graphics.TypefaceCompat.<clinit>(TypefaceCompat.java:51) +06-02 16:38:24.591 D/StrictMode( 9156): at androidx.core.graphics.TypefaceCompat.create(TypefaceCompat.java:194) +06-02 16:38:24.591 D/StrictMode( 9156): at androidx.appcompat.widget.AppCompatTextView.setTypeface(AppCompatTextView.java:708) +06-02 16:38:24.591 D/StrictMode( 9156): at android.widget.TextView.resolveStyleAndSetTypeface(TextView.java:2037) +06-02 16:38:24.591 D/StrictMode( 9156): at android.widget.TextView.setTypefaceFromAttrs(TextView.java:2008) +06-02 16:38:24.591 D/StrictMode( 9156): at android.widget.TextView.applyTextAppearance(TextView.java:3640) +06-02 16:38:24.591 D/StrictMode( 9156): at android.widget.TextView.<init>(TextView.java:1498) +06-02 16:38:24.591 D/StrictMode( 9156): at android.widget.TextView.<init>(TextView.java:869) +06-02 16:38:24.591 D/StrictMode( 9156): at androidx.appcompat.widget.AppCompatTextView.<init>(AppCompatTextView.java:100) +06-02 16:38:24.591 D/StrictMode( 9156): at androidx.appcompat.widget.AppCompatTextView.<init>(AppCompatTextView.java:95) +06-02 16:38:24.591 D/StrictMode( 9156): at androidx.appcompat.app.AppCompatViewInflater.createTextView(AppCompatViewInflater.java:194) +06-02 16:38:24.591 D/StrictMode( 9156): at androidx.appcompat.app.AppCompatViewInflater.createView(AppCompatViewInflater.java:115) +06-02 16:38:24.591 D/StrictMode( 9156): at androidx.appcompat.app.AppCompatDelegateImpl.createView(AppCompatDelegateImpl.java:1548) +06-02 16:38:24.591 D/StrictMode( 9156): at androidx.appcompat.app.AppCompatDelegateImpl.onCreateView(AppCompatDelegateImpl.java:1599) +06-02 16:38:24.591 D/StrictMode( 9156): at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:772) +06-02 16:38:24.591 D/StrictMode( 9156): at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:730) +06-02 16:38:24.591 D/StrictMode( 9156): at android.view.LayoutInflater.rInflate(LayoutInflater.java:863) +06-02 16:38:24.591 D/StrictMode( 9156): at android.view.LayoutInflater.rInflateChildren(LayoutInflater.java:824) +06-02 16:38:24.591 D/StrictMode( 9156): at android.view.LayoutInflater.rInflate(LayoutInflater.java:866) +06-02 16:38:24.591 D/StrictMode( 9156): at android.view.LayoutInflater.inflate(LayoutInflater.java:489) +06-02 16:38:24.591 D/StrictMode( 9156): at android.view.LayoutInflater.inflate(LayoutInflater.java:423) +06-02 16:38:24.591 D/StrictMode( 9156): at android.view.LayoutInflater.inflate(LayoutInflater.java:374) +06-02 16:38:24.591 D/StrictMode( 9156): at org.mozilla.fenix.components.toolbar.TabCounter.<init>(TabCounter.kt:30) +06-02 16:38:24.591 D/StrictMode( 9156): at org.mozilla.fenix.components.toolbar.TabCounter.<init>(TabCounter.kt:22) +06-02 16:38:24.591 D/StrictMode( 9156): at org.mozilla.fenix.components.toolbar.TabCounter.<init>(Unknown Source:6) +06-02 16:38:24.591 D/StrictMode( 9156): at java.lang.reflect.Constructor.newInstance0(Native Method) +06-02 16:38:24.591 D/StrictMode( 9156): at java.lang.reflect.Constructor.newInstance(Constructor.java:343) +06-02 16:38:24.591 D/StrictMode( 9156): at android.view.LayoutInflater.createView(LayoutInflater.java:647) +06-02 16:38:24.591 D/StrictMode( 9156): at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:790) +06-02 16:38:24.591 D/StrictMode( 9156): at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:730) +06-02 16:38:24.591 D/StrictMode( 9156): at android.view.LayoutInflater.rInflate(LayoutInflater.java:863) +06-02 16:38:24.591 D/StrictMode( 9156): at android.view.LayoutInflater.rInflateChildren(LayoutInflater.java:824) +06-02 16:38:24.591 D/StrictMode( 9156): at android.view.LayoutInflater.rInflate(LayoutInflater.java:866) +06-02 16:38:24.591 D/StrictMode( 9156): at android.view.LayoutInflater.rInflateChildren(LayoutInflater.java:824) +06-02 16:38:24.591 D/StrictMode( 9156): at android.view.LayoutInflater.inflate(LayoutInflater.java:515) +06-02 16:38:24.591 D/StrictMode( 9156): at android.view.LayoutInflater.inflate(LayoutInflater.java:423) +06-02 16:38:24.591 D/StrictMode( 9156): at org.mozilla.fenix.home.HomeFragment.onCreateView(HomeFragment.kt:183) +06-02 16:38:24.591 D/StrictMode( 9156): at androidx.fragment.app.Fragment.performCreateView(Fragment.java:2698) +06-02 16:38:24.591 D/StrictMode( 9156): at androidx.fragment.app.FragmentStateManager.createView(FragmentStateManager.java:320) +06-02 16:38:24.591 D/StrictMode( 9156): at androidx.fragment.app.FragmentManager.moveToState(FragmentManager.java:1187) +06-02 16:38:24.591 D/StrictMode( 9156): at androidx.fragment.app.FragmentManager.addAddedFragments(FragmentManager.java:2224) +06-02 16:38:24.591 D/StrictMode( 9156): at androidx.fragment.app.FragmentManager.executeOpsTogether(FragmentManager.java:1997) +06-02 16:38:24.591 D/StrictMode( 9156): at androidx.fragment.app.FragmentManager.removeRedundantOperationsAndExecute(FragmentManager.java:1953) +06-02 16:38:24.591 D/StrictMode( 9156): at androidx.fragment.app.FragmentManager.execPe +06-02 16:38:24.591 W/lla.fenix.debu( 9156): Accessing hidden method Landroid/graphics/FontFamily;->abortCreation()V (light greylist, reflection) +06-02 16:38:24.592 D/StrictMode( 9156): StrictMode policy violation: android.os.strictmode.NonSdkApiUsedViolation: Landroid/graphics/FontFamily;->abortCreation()V +06-02 16:38:24.592 D/StrictMode( 9156): at android.os.StrictMode.lambda$static$1(StrictMode.java:428) +06-02 16:38:24.592 D/StrictMode( 9156): at android.os.-$$Lambda$StrictMode$lu9ekkHJ2HMz0jd3F8K8MnhenxQ.accept(Unknown Source:2) +06-02 16:38:24.592 D/StrictMode( 9156): at java.lang.Class.getDeclaredMethodInternal(Native Method) +06-02 16:38:24.592 D/StrictMode( 9156): at java.lang.Class.getPublicMethodRecursive(Class.java:2075) +06-02 16:38:24.592 D/StrictMode( 9156): at java.lang.Class.getMethod(Class.java:2063) +06-02 16:38:24.592 D/StrictMode( 9156): at java.lang.Class.getMethod(Class.java:1690) +06-02 16:38:24.592 D/StrictMode( 9156): at androidx.core.graphics.TypefaceCompatApi26Impl.obtainAbortCreationMethod(TypefaceCompatApi26Impl.java:343) +06-02 16:38:24.592 D/StrictMode( 9156): at androidx.core.graphics.TypefaceCompatApi26Impl.<init>(TypefaceCompatApi26Impl.java:88) +06-02 16:38:24.592 D/StrictMode( 9156): at androidx.core.graphics.TypefaceCompatApi28Impl.<init>(TypefaceCompatApi28Impl.java:36) +06-02 16:38:24.592 D/StrictMode( 9156): at androidx.core.graphics.TypefaceCompat.<clinit>(TypefaceCompat.java:51) +06-02 16:38:24.592 D/StrictMode( 9156): at androidx.core.graphics.TypefaceCompat.create(TypefaceCompat.java:194) +06-02 16:38:24.592 D/StrictMode( 9156): at androidx.appcompat.widget.AppCompatTextView.setTypeface(AppCompatTextView.java:708) +06-02 16:38:24.592 D/StrictMode( 9156): at android.widget.TextView.resolveStyleAndSetTypeface(TextView.java:2037) +06-02 16:38:24.592 D/StrictMode( 9156): at android.widget.TextView.setTypefaceFromAttrs(TextView.java:2008) +06-02 16:38:24.592 D/StrictMode( 9156): at android.widget.TextView.applyTextAppearance(TextView.java:3640) +06-02 16:38:24.592 D/StrictMode( 9156): at android.widget.TextView.<init>(TextView.java:1498) +06-02 16:38:24.592 D/StrictMode( 9156): at android.widget.TextView.<init>(TextView.java:869) +06-02 16:38:24.592 D/StrictMode( 9156): at androidx.appcompat.widget.AppCompatTextView.<init>(AppCompatTextView.java:100) +06-02 16:38:24.592 D/StrictMode( 9156): at androidx.appcompat.widget.AppCompatTextView.<init>(AppCompatTextView.java:95) +06-02 16:38:24.592 D/StrictMode( 9156): at androidx.appcompat.app.AppCompatViewInflater.createTextView(AppCompatViewInflater.java:194) +06-02 16:38:24.592 D/StrictMode( 9156): at androidx.appcompat.app.AppCompatViewInflater.createView(AppCompatViewInflater.java:115) +06-02 16:38:24.592 D/StrictMode( 9156): at androidx.appcompat.app.AppCompatDelegateImpl.createView(AppCompatDelegateImpl.java:1548) +06-02 16:38:24.592 D/StrictMode( 9156): at androidx.appcompat.app.AppCompatDelegateImpl.onCreateView(AppCompatDelegateImpl.java:1599) +06-02 16:38:24.592 D/StrictMode( 9156): at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:772) +06-02 16:38:24.592 D/StrictMode( 9156): at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:730) +06-02 16:38:24.592 D/StrictMode( 9156): at android.view.LayoutInflater.rInflate(LayoutInflater.java:863) +06-02 16:38:24.592 D/StrictMode( 9156): at android.view.LayoutInflater.rInflateChildren(LayoutInflater.java:824) +06-02 16:38:24.592 D/StrictMode( 9156): at android.view.LayoutInflater.rInflate(LayoutInflater.java:866) +06-02 16:38:24.592 D/StrictMode( 9156): at android.view.LayoutInflater.inflate(LayoutInflater.java:489) +06-02 16:38:24.592 D/StrictMode( 9156): at android.view.LayoutInflater.inflate(LayoutInflater.java:423) +06-02 16:38:24.592 D/StrictMode( 9156): at android.view.LayoutInflater.inflate(LayoutInflater.java:374) +06-02 16:38:24.592 D/StrictMode( 9156): at org.mozilla.fenix.components.toolbar.TabCounter.<init>(TabCounter.kt:30) +06-02 16:38:24.592 D/StrictMode( 9156): at org.mozilla.fenix.components.toolbar.TabCounter.<init>(TabCounter.kt:22) +06-02 16:38:24.592 D/StrictMode( 9156): at org.mozilla.fenix.components.toolbar.TabCounter.<init>(Unknown Source:6) +06-02 16:38:24.592 D/StrictMode( 9156): at java.lang.reflect.Constructor.newInstance0(Native Method) +06-02 16:38:24.592 D/StrictMode( 9156): at java.lang.reflect.Constructor.newInstance(Constructor.java:343) +06-02 16:38:24.592 D/StrictMode( 9156): at android.view.LayoutInflater.createView(LayoutInflater.java:647) +06-02 16:38:24.592 D/StrictMode( 9156): at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:790) +06-02 16:38:24.592 D/StrictMode( 9156): at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:730) +06-02 16:38:24.592 D/StrictMode( 9156): at android.view.LayoutInflater.rInflate(LayoutInflater.java:863) +06-02 16:38:24.592 D/StrictMode( 9156): at android.view.LayoutInflater.rInflateChildren(LayoutInflater.java:824) +06-02 16:38:24.592 D/StrictMode( 9156): at android.view.LayoutInflater.rInflate(LayoutInflater.java:866) +06-02 16:38:24.592 D/StrictMode( 9156): at android.view.LayoutInflater.rInflateChildren(LayoutInflater.java:824) +06-02 16:38:24.592 D/StrictMode( 9156): at android.view.LayoutInflater.inflate(LayoutInflater.java:515) +06-02 16:38:24.592 D/StrictMode( 9156): at android.view.LayoutInflater.inflate(LayoutInflater.java:423) +06-02 16:38:24.592 D/StrictMode( 9156): at org.mozilla.fenix.home.HomeFragment.onCreateView(HomeFragment.kt:183) +06-02 16:38:24.592 D/StrictMode( 9156): at androidx.fragment.app.Fragment.performCreateView(Fragment.java:2698) +06-02 16:38:24.592 D/StrictMode( 9156): at androidx.fragment.app.FragmentStateManager.createView(FragmentStateManager.java:320) +06-02 16:38:24.592 D/StrictMode( 9156): at androidx.fragment.app.FragmentManager.moveToState(FragmentManager.java:1187) +06-02 16:38:24.592 D/StrictMode( 9156): at androidx.fragment.app.FragmentManager.addAddedFragments(FragmentManager.java:2224) +06-02 16:38:24.592 D/StrictMode( 9156): at androidx.fragment.app.FragmentManager.executeOpsTogether(FragmentManager.java:1997) +06-02 16:38:24.592 D/StrictMode( 9156): at androidx.fragment.app.FragmentManager.removeRedundantOperationsAndExecute(FragmentManager.java:1953) +06-02 16:38:24.592 D/StrictMode( 9156): at androidx.fragment.app.Fragment +06-02 16:38:24.592 W/lla.fenix.debu( 9156): Accessing hidden method Landroid/graphics/Typeface;->createFromFamiliesWithDefault([Landroid/graphics/FontFamily;Ljava/lang/String;II)Landroid/graphics/Typeface; (light greylist, reflection) +06-02 16:38:24.594 D/StrictMode( 9156): StrictMode policy violation: android.os.strictmode.NonSdkApiUsedViolation: Landroid/graphics/Typeface;->createFromFamiliesWithDefault([Landroid/graphics/FontFamily;Ljava/lang/String;II)Landroid/graphics/Typeface; +06-02 16:38:24.594 D/StrictMode( 9156): at android.os.StrictMode.lambda$static$1(StrictMode.java:428) +06-02 16:38:24.594 D/StrictMode( 9156): at android.os.-$$Lambda$StrictMode$lu9ekkHJ2HMz0jd3F8K8MnhenxQ.accept(Unknown Source:2) +06-02 16:38:24.594 D/StrictMode( 9156): at java.lang.Class.getDeclaredMethodInternal(Native Method) +06-02 16:38:24.594 D/StrictMode( 9156): at java.lang.Class.getMethod(Class.java:2064) +06-02 16:38:24.594 D/StrictMode( 9156): at java.lang.Class.getDeclaredMethod(Class.java:2047) +06-02 16:38:24.594 D/StrictMode( 9156): at androidx.core.graphics.TypefaceCompatApi28Impl.obtainCreateFromFamiliesWithDefaultMethod(TypefaceCompatApi28Impl.java:62) +06-02 16:38:24.594 D/StrictMode( 9156): at androidx.core.graphics.TypefaceCompatApi26Impl.<init>(TypefaceCompatApi26Impl.java:89) +06-02 16:38:24.594 D/StrictMode( 9156): at androidx.core.graphics.TypefaceCompatApi28Impl.<init>(TypefaceCompatApi28Impl.java:36) +06-02 16:38:24.594 D/StrictMode( 9156): at androidx.core.graphics.TypefaceCompat.<clinit>(TypefaceCompat.java:51) +06-02 16:38:24.594 D/StrictMode( 9156): at androidx.core.graphics.TypefaceCompat.create(TypefaceCompat.java:194) +06-02 16:38:24.594 D/StrictMode( 9156): at androidx.appcompat.widget.AppCompatTextView.setTypeface(AppCompatTextView.java:708) +06-02 16:38:24.594 D/StrictMode( 9156): at android.widget.TextView.resolveStyleAndSetTypeface(TextView.java:2037) +06-02 16:38:24.594 D/StrictMode( 9156): at android.widget.TextView.setTypefaceFromAttrs(TextView.java:2008) +06-02 16:38:24.594 D/StrictMode( 9156): at android.widget.TextView.applyTextAppearance(TextView.java:3640) +06-02 16:38:24.594 D/StrictMode( 9156): at android.widget.TextView.<init>(TextView.java:1498) +06-02 16:38:24.594 D/StrictMode( 9156): at android.widget.TextView.<init>(TextView.java:869) +06-02 16:38:24.594 D/StrictMode( 9156): at androidx.appcompat.widget.AppCompatTextView.<init>(AppCompatTextView.java:100) +06-02 16:38:24.594 D/StrictMode( 9156): at androidx.appcompat.widget.AppCompatTextView.<init>(AppCompatTextView.java:95) +06-02 16:38:24.594 D/StrictMode( 9156): at androidx.appcompat.app.AppCompatViewInflater.createTextView(AppCompatViewInflater.java:194) +06-02 16:38:24.594 D/StrictMode( 9156): at androidx.appcompat.app.AppCompatViewInflater.createView(AppCompatViewInflater.java:115) +06-02 16:38:24.594 D/StrictMode( 9156): at androidx.appcompat.app.AppCompatDelegateImpl.createView(AppCompatDelegateImpl.java:1548) +06-02 16:38:24.594 D/StrictMode( 9156): at androidx.appcompat.app.AppCompatDelegateImpl.onCreateView(AppCompatDelegateImpl.java:1599) +06-02 16:38:24.594 D/StrictMode( 9156): at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:772) +06-02 16:38:24.594 D/StrictMode( 9156): at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:730) +06-02 16:38:24.594 D/StrictMode( 9156): at android.view.LayoutInflater.rInflate(LayoutInflater.java:863) +06-02 16:38:24.594 D/StrictMode( 9156): at android.view.LayoutInflater.rInflateChildren(LayoutInflater.java:824) +06-02 16:38:24.594 D/StrictMode( 9156): at android.view.LayoutInflater.rInflate(LayoutInflater.java:866) +06-02 16:38:24.594 D/StrictMode( 9156): at android.view.LayoutInflater.inflate(LayoutInflater.java:489) +06-02 16:38:24.594 D/StrictMode( 9156): at android.view.LayoutInflater.inflate(LayoutInflater.java:423) +06-02 16:38:24.594 D/StrictMode( 9156): at android.view.LayoutInflater.inflate(LayoutInflater.java:374) +06-02 16:38:24.594 D/StrictMode( 9156): at org.mozilla.fenix.components.toolbar.TabCounter.<init>(TabCounter.kt:30) +06-02 16:38:24.594 D/StrictMode( 9156): at org.mozilla.fenix.components.toolbar.TabCounter.<init>(TabCounter.kt:22) +06-02 16:38:24.594 D/StrictMode( 9156): at org.mozilla.fenix.components.toolbar.TabCounter.<init>(Unknown Source:6) +06-02 16:38:24.594 D/StrictMode( 9156): at java.lang.reflect.Constructor.newInstance0(Native Method) +06-02 16:38:24.594 D/StrictMode( 9156): at java.lang.reflect.Constructor.newInstance(Constructor.java:343) +06-02 16:38:24.594 D/StrictMode( 9156): at android.view.LayoutInflater.createView(LayoutInflater.java:647) +06-02 16:38:24.594 D/StrictMode( 9156): at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:790) +06-02 16:38:24.594 D/StrictMode( 9156): at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:730) +06-02 16:38:24.594 D/StrictMode( 9156): at android.view.LayoutInflater.rInflate(LayoutInflater.java:863) +06-02 16:38:24.594 D/StrictMode( 9156): at android.view.LayoutInflater.rInflateChildren(LayoutInflater.java:824) +06-02 16:38:24.594 D/StrictMode( 9156): at android.view.LayoutInflater.rInflate(LayoutInflater.java:866) +06-02 16:38:24.594 D/StrictMode( 9156): at android.view.LayoutInflater.rInflateChildren(LayoutInflater.java:824) +06-02 16:38:24.594 D/StrictMode( 9156): at android.view.LayoutInflater.inflate(LayoutInflater.java:515) +06-02 16:38:24.594 D/StrictMode( 9156): at android.view.LayoutInflater.inflate(LayoutInflater.java:423) +06-02 16:38:24.594 D/StrictMode( 9156): at org.mozilla.fenix.home.HomeFragment.onCreateView(HomeFragment.kt:183) +06-02 16:38:24.594 D/StrictMode( 9156): at androidx.fragment.app.Fragment.performCreateView(Fragment.java:2698) +06-02 16:38:24.594 D/StrictMode( 9156): at androidx.fragment.app.FragmentStateManager.createView(FragmentStateManager.java:320) +06-02 16:38:24.594 D/StrictMode( 9156): at androidx.fragment.app.FragmentManager.moveToState(FragmentManager.java:1187) +06-02 16:38:24.594 D/StrictMode( 9156): at androidx.fragment.app.FragmentManager.addAddedFragments(FragmentManager.java:2224) +06-02 16:38:24.594 D/StrictMode( 9156): at androidx.fragment.app.FragmentManager.executeOpsTogether(FragmentManager.java:1997) +06-02 16:38:24.594 D/StrictMode( 9156): at androidx.fragment.app.FragmentManager.removeRedundantOperationsAndExecute(FragmentMa +06-02 16:38:24.706 D/GeckoRuntime( 9156): Lifecycle: onStart +06-02 16:38:24.710 D/GeckoRuntime( 9156): Lifecycle: onResume +06-02 16:38:24.713 D/GeckoNetworkManager( 9156): Incoming event start for state OffNoListeners -> OnNoListeners +06-02 16:38:24.714 D/GeckoNetworkManager( 9156): New network state: UP, WIFI, WIFI +06-02 16:38:24.716 D/OpenGLRenderer( 9156): Skia GL Pipeline +06-02 16:38:24.733 E/SurfaceFlinger( 1728): ro.sf.lcd_density must be defined as a build property +06-02 16:38:24.756 D/StrictMode( 9156): StrictMode policy violation; ~duration=372 ms: android.os.strictmode.DiskReadViolation +06-02 16:38:24.756 D/StrictMode( 9156): at android.os.StrictMode$AndroidBlockGuardPolicy.onReadFromDisk(StrictMode.java:1504) +06-02 16:38:24.756 D/StrictMode( 9156): at java.io.UnixFileSystem.checkAccess(UnixFileSystem.java:251) +06-02 16:38:24.756 D/StrictMode( 9156): at java.io.File.exists(File.java:815) +06-02 16:38:24.756 D/StrictMode( 9156): at android.app.ContextImpl.getDataDir(ContextImpl.java:2253) +06-02 16:38:24.756 D/StrictMode( 9156): at android.app.ContextImpl.getPreferencesDir(ContextImpl.java:550) +06-02 16:38:24.756 D/StrictMode( 9156): at android.app.ContextImpl.getSharedPreferencesPath(ContextImpl.java:747) +06-02 16:38:24.756 D/StrictMode( 9156): at android.app.ContextImpl.getSharedPreferences(ContextImpl.java:400) +06-02 16:38:24.756 D/StrictMode( 9156): at mozilla.components.support.locale.LocaleManager$Storage.getSharedPreferences(LocaleManager.kt:123) +06-02 16:38:24.756 D/StrictMode( 9156): at mozilla.components.support.locale.LocaleManager$Storage.getLocale(LocaleManager.kt:99) +06-02 16:38:24.756 D/StrictMode( 9156): at mozilla.components.support.locale.LocaleManager.getCurrentLocale(LocaleManager.kt:42) +06-02 16:38:24.756 D/StrictMode( 9156): at mozilla.components.support.locale.LocaleManager.updateResources$support_locale_release(LocaleManager.kt:72) +06-02 16:38:24.756 D/StrictMode( 9156): at mozilla.components.support.locale.LocaleAwareAppCompatActivity.attachBaseContext(LocaleAwareAppCompatActivity.kt:18) +06-02 16:38:24.756 D/StrictMode( 9156): at android.app.Activity.attach(Activity.java:7051) +06-02 16:38:24.756 D/StrictMode( 9156): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2873) +06-02 16:38:24.756 D/StrictMode( 9156): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3048) +06-02 16:38:24.756 D/StrictMode( 9156): at android.app.servertransaction.LaunchActivityItem.execute(LaunchActivityItem.java:78) +06-02 16:38:24.756 D/StrictMode( 9156): at android.app.servertransaction.TransactionExecutor.executeCallbacks(TransactionExecutor.java:108) +06-02 16:38:24.756 D/StrictMode( 9156): at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:68) +06-02 16:38:24.756 D/StrictMode( 9156): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1808) +06-02 16:38:24.756 D/StrictMode( 9156): at android.os.Handler.dispatchMessage(Handler.java:106) +06-02 16:38:24.756 D/StrictMode( 9156): at android.os.Looper.loop(Looper.java:193) +06-02 16:38:24.756 D/StrictMode( 9156): at android.app.ActivityThread.main(ActivityThread.java:6669) +06-02 16:38:24.756 D/StrictMode( 9156): at java.lang.reflect.Method.invoke(Native Method) +06-02 16:38:24.756 D/StrictMode( 9156): at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:493) +06-02 16:38:24.756 D/StrictMode( 9156): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:858) +06-02 16:38:24.762 D/StrictMode( 9156): StrictMode policy violation; ~duration=372 ms: android.os.strictmode.DiskReadViolation +06-02 16:38:24.762 D/StrictMode( 9156): at android.os.StrictMode$AndroidBlockGuardPolicy.onReadFromDisk(StrictMode.java:1504) +06-02 16:38:24.762 D/StrictMode( 9156): at java.io.UnixFileSystem.checkAccess(UnixFileSystem.java:251) +06-02 16:38:24.762 D/StrictMode( 9156): at java.io.File.exists(File.java:815) +06-02 16:38:24.762 D/StrictMode( 9156): at android.app.ContextImpl.ensurePrivateDirExists(ContextImpl.java:605) +06-02 16:38:24.762 D/StrictMode( 9156): at android.app.ContextImpl.ensurePrivateDirExists(ContextImpl.java:596) +06-02 16:38:24.762 D/StrictMode( 9156): at android.app.ContextImpl.getPreferencesDir(ContextImpl.java:552) +06-02 16:38:24.762 D/StrictMode( 9156): at android.app.ContextImpl.getSharedPreferencesPath(ContextImpl.java:747) +06-02 16:38:24.762 D/StrictMode( 9156): at android.app.ContextImpl.getSharedPreferences(ContextImpl.java:400) +06-02 16:38:24.762 D/StrictMode( 9156): at mozilla.components.support.locale.LocaleManager$Storage.getSharedPreferences(LocaleManager.kt:123) +06-02 16:38:24.762 D/StrictMode( 9156): at mozilla.components.support.locale.LocaleManager$Storage.getLocale(LocaleManager.kt:99) +06-02 16:38:24.762 D/StrictMode( 9156): at mozilla.components.support.locale.LocaleManager.getCurrentLocale(LocaleManager.kt:42) +06-02 16:38:24.762 D/StrictMode( 9156): at mozilla.components.support.locale.LocaleManager.updateResources$support_locale_release(LocaleManager.kt:72) +06-02 16:38:24.762 D/StrictMode( 9156): at mozilla.components.support.locale.LocaleAwareAppCompatActivity.attachBaseContext(LocaleAwareAppCompatActivity.kt:18) +06-02 16:38:24.762 D/StrictMode( 9156): at android.app.Activity.attach(Activity.java:7051) +06-02 16:38:24.762 D/StrictMode( 9156): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2873) +06-02 16:38:24.762 D/StrictMode( 9156): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3048) +06-02 16:38:24.762 D/StrictMode( 9156): at android.app.servertransaction.LaunchActivityItem.execute(LaunchActivityItem.java:78) +06-02 16:38:24.762 D/StrictMode( 9156): at android.app.servertransaction.TransactionExecutor.executeCallbacks(TransactionExecutor.java:108) +06-02 16:38:24.762 D/StrictMode( 9156): at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:68) +06-02 16:38:24.762 D/StrictMode( 9156): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1808) +06-02 16:38:24.762 D/StrictMode( 9156): at android.os.Handler.dispatchMessage(Handler.java:106) +06-02 16:38:24.762 D/StrictMode( 9156): at android.os.Looper.loop(Looper.java:193) +06-02 16:38:24.762 D/StrictMode( 9156): at android.app.ActivityThread.main(ActivityThread.java:6669) +06-02 16:38:24.762 D/StrictMode( 9156): at java.lang.reflect.Method.invoke(Native Method) +06-02 16:38:24.762 D/StrictMode( 9156): at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:493) +06-02 16:38:24.762 D/StrictMode( 9156): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:858) +06-02 16:38:24.765 D/StrictMode( 9156): StrictMode policy violation; ~duration=259 ms: android.os.strictmode.DiskReadViolation +06-02 16:38:24.765 D/StrictMode( 9156): at android.os.StrictMode$AndroidBlockGuardPolicy.onReadFromDisk(StrictMode.java:1504) +06-02 16:38:24.765 D/StrictMode( 9156): at java.io.UnixFileSystem.checkAccess(UnixFileSystem.java:251) +06-02 16:38:24.765 D/StrictMode( 9156): at java.io.File.exists(File.java:815) +06-02 16:38:24.765 D/StrictMode( 9156): at android.app.ContextImpl.getDataDir(ContextImpl.java:2253) +06-02 16:38:24.765 D/StrictMode( 9156): at android.app.ContextImpl.getPreferencesDir(ContextImpl.java:550) +06-02 16:38:24.765 D/StrictMode( 9156): at android.app.ContextImpl.getSharedPreferencesPath(ContextImpl.java:747) +06-02 16:38:24.765 D/StrictMode( 9156): at android.app.ContextImpl.getSharedPreferences(ContextImpl.java:400) +06-02 16:38:24.765 D/StrictMode( 9156): at android.content.ContextWrapper.getSharedPreferences(ContextWrapper.java:174) +06-02 16:38:24.765 D/StrictMode( 9156): at android.content.ContextWrapper.getSharedPreferences(ContextWrapper.java:174) +06-02 16:38:24.765 D/StrictMode( 9156): at org.mozilla.fenix.onboarding.FenixOnboarding.<init>(FenixOnboarding.kt:15) +06-02 16:38:24.765 D/StrictMode( 9156): at org.mozilla.fenix.perf.Performance.disableOnboarding(Performance.kt:72) +06-02 16:38:24.765 D/StrictMode( 9156): at org.mozilla.fenix.perf.Performance.processIntentIfPerformanceTest(Performance.kt:32) +06-02 16:38:24.765 D/StrictMode( 9156): at org.mozilla.fenix.HomeActivity.onCreate(HomeActivity.kt:145) +06-02 16:38:24.765 D/StrictMode( 9156): at android.app.Activity.performCreate(Activity.java:7136) +06-02 16:38:24.765 D/StrictMode( 9156): at android.app.Activity.performCreate(Activity.java:7127) +06-02 16:38:24.765 D/StrictMode( 9156): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1271) +06-02 16:38:24.765 D/StrictMode( 9156): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2893) +06-02 16:38:24.765 D/StrictMode( 9156): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3048) +06-02 16:38:24.765 D/StrictMode( 9156): at android.app.servertransaction.LaunchActivityItem.execute(LaunchActivityItem.java:78) +06-02 16:38:24.765 D/StrictMode( 9156): at android.app.servertransaction.TransactionExecutor.executeCallbacks(TransactionExecutor.java:108) +06-02 16:38:24.765 D/StrictMode( 9156): at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:68) +06-02 16:38:24.765 D/StrictMode( 9156): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1808) +06-02 16:38:24.765 D/StrictMode( 9156): at android.os.Handler.dispatchMessage(Handler.java:106) +06-02 16:38:24.765 D/StrictMode( 9156): at android.os.Looper.loop(Looper.java:193) +06-02 16:38:24.765 D/StrictMode( 9156): at android.app.ActivityThread.main(ActivityThread.java:6669) +06-02 16:38:24.765 D/StrictMode( 9156): at java.lang.reflect.Method.invoke(Native Method) +06-02 16:38:24.765 D/StrictMode( 9156): at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:493) +06-02 16:38:24.765 D/StrictMode( 9156): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:858) +06-02 16:38:24.772 D/StrictMode( 9156): StrictMode policy violation; ~duration=259 ms: android.os.strictmode.DiskReadViolation +06-02 16:38:24.772 D/StrictMode( 9156): at android.os.StrictMode$AndroidBlockGuardPolicy.onReadFromDisk(StrictMode.java:1504) +06-02 16:38:24.772 D/StrictMode( 9156): at java.io.UnixFileSystem.checkAccess(UnixFileSystem.java:251) +06-02 16:38:24.772 D/StrictMode( 9156): at java.io.File.exists(File.java:815) +06-02 16:38:24.772 D/StrictMode( 9156): at android.app.ContextImpl.ensurePrivateDirExists(ContextImpl.java:605) +06-02 16:38:24.772 D/StrictMode( 9156): at android.app.ContextImpl.ensurePrivateDirExists(ContextImpl.java:596) +06-02 16:38:24.772 D/StrictMode( 9156): at android.app.ContextImpl.getPreferencesDir(ContextImpl.java:552) +06-02 16:38:24.772 D/StrictMode( 9156): at android.app.ContextImpl.getSharedPreferencesPath(ContextImpl.java:747) +06-02 16:38:24.772 D/StrictMode( 9156): at android.app.ContextImpl.getSharedPreferences(ContextImpl.java:400) +06-02 16:38:24.772 D/StrictMode( 9156): at android.content.ContextWrapper.getSharedPreferences(ContextWrapper.java:174) +06-02 16:38:24.772 D/StrictMode( 9156): at android.content.ContextWrapper.getSharedPreferences(ContextWrapper.java:174) +06-02 16:38:24.772 D/StrictMode( 9156): at org.mozilla.fenix.onboarding.FenixOnboarding.<init>(FenixOnboarding.kt:15) +06-02 16:38:24.772 D/StrictMode( 9156): at org.mozilla.fenix.perf.Performance.disableOnboarding(Performance.kt:72) +06-02 16:38:24.772 D/StrictMode( 9156): at org.mozilla.fenix.perf.Performance.processIntentIfPerformanceTest(Performance.kt:32) +06-02 16:38:24.772 D/StrictMode( 9156): at org.mozilla.fenix.HomeActivity.onCreate(HomeActivity.kt:145) +06-02 16:38:24.772 D/StrictMode( 9156): at android.app.Activity.performCreate(Activity.java:7136) +06-02 16:38:24.772 D/StrictMode( 9156): at android.app.Activity.performCreate(Activity.java:7127) +06-02 16:38:24.772 D/StrictMode( 9156): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1271) +06-02 16:38:24.772 D/StrictMode( 9156): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2893) +06-02 16:38:24.772 D/StrictMode( 9156): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3048) +06-02 16:38:24.772 D/StrictMode( 9156): at android.app.servertransaction.LaunchActivityItem.execute(LaunchActivityItem.java:78) +06-02 16:38:24.772 D/StrictMode( 9156): at android.app.servertransaction.TransactionExecutor.executeCallbacks(TransactionExecutor.java:108) +06-02 16:38:24.772 D/StrictMode( 9156): at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:68) +06-02 16:38:24.772 D/StrictMode( 9156): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1808) +06-02 16:38:24.772 D/StrictMode( 9156): at android.os.Handler.dispatchMessage(Handler.java:106) +06-02 16:38:24.772 D/StrictMode( 9156): at android.os.Looper.loop(Looper.java:193) +06-02 16:38:24.772 D/StrictMode( 9156): at android.app.ActivityThread.main(ActivityThread.java:6669) +06-02 16:38:24.772 D/StrictMode( 9156): at java.lang.reflect.Method.invoke(Native Method) +06-02 16:38:24.772 D/StrictMode( 9156): at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:493) +06-02 16:38:24.772 D/StrictMode( 9156): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:858) +06-02 16:38:24.774 D/StrictMode( 9156): StrictMode policy violation; ~duration=257 ms: android.os.strictmode.DiskReadViolation +06-02 16:38:24.774 D/StrictMode( 9156): at android.os.StrictMode$AndroidBlockGuardPolicy.onReadFromDisk(StrictMode.java:1504) +06-02 16:38:24.774 D/StrictMode( 9156): at android.app.SharedPreferencesImpl.awaitLoadedLocked(SharedPreferencesImpl.java:256) +06-02 16:38:24.774 D/StrictMode( 9156): at android.app.SharedPreferencesImpl.edit(SharedPreferencesImpl.java:349) +06-02 16:38:24.774 D/StrictMode( 9156): at org.mozilla.fenix.onboarding.FenixOnboarding.setOnboardedVersion(FenixOnboarding.kt:42) +06-02 16:38:24.774 D/StrictMode( 9156): at org.mozilla.fenix.onboarding.FenixOnboarding.finish(FenixOnboarding.kt:25) +06-02 16:38:24.774 D/StrictMode( 9156): at org.mozilla.fenix.perf.Performance.disableOnboarding(Performance.kt:72) +06-02 16:38:24.774 D/StrictMode( 9156): at org.mozilla.fenix.perf.Performance.processIntentIfPerformanceTest(Performance.kt:32) +06-02 16:38:24.774 D/StrictMode( 9156): at org.mozilla.fenix.HomeActivity.onCreate(HomeActivity.kt:145) +06-02 16:38:24.774 D/StrictMode( 9156): at android.app.Activity.performCreate(Activity.java:7136) +06-02 16:38:24.774 D/StrictMode( 9156): at android.app.Activity.performCreate(Activity.java:7127) +06-02 16:38:24.774 D/StrictMode( 9156): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1271) +06-02 16:38:24.774 D/StrictMode( 9156): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2893) +06-02 16:38:24.774 D/StrictMode( 9156): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3048) +06-02 16:38:24.774 D/StrictMode( 9156): at android.app.servertransaction.LaunchActivityItem.execute(LaunchActivityItem.java:78) +06-02 16:38:24.774 D/StrictMode( 9156): at android.app.servertransaction.TransactionExecutor.executeCallbacks(TransactionExecutor.java:108) +06-02 16:38:24.774 D/StrictMode( 9156): at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:68) +06-02 16:38:24.774 D/StrictMode( 9156): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1808) +06-02 16:38:24.774 D/StrictMode( 9156): at android.os.Handler.dispatchMessage(Handler.java:106) +06-02 16:38:24.774 D/StrictMode( 9156): at android.os.Looper.loop(Looper.java:193) +06-02 16:38:24.774 D/StrictMode( 9156): at android.app.ActivityThread.main(ActivityThread.java:6669) +06-02 16:38:24.774 D/StrictMode( 9156): at java.lang.reflect.Method.invoke(Native Method) +06-02 16:38:24.774 D/StrictMode( 9156): at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:493) +06-02 16:38:24.774 D/StrictMode( 9156): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:858) +06-02 16:38:24.775 D/StrictMode( 9156): StrictMode policy violation; ~duration=100 ms: android.os.strictmode.DiskReadViolation +06-02 16:38:24.775 D/StrictMode( 9156): at android.os.StrictMode$AndroidBlockGuardPolicy.onReadFromDisk(StrictMode.java:1504) +06-02 16:38:24.775 D/StrictMode( 9156): at java.io.UnixFileSystem.checkAccess(UnixFileSystem.java:251) +06-02 16:38:24.775 D/StrictMode( 9156): at java.io.File.exists(File.java:815) +06-02 16:38:24.775 D/StrictMode( 9156): at android.app.ContextImpl.ensurePrivateDirExists(ContextImpl.java:605) +06-02 16:38:24.775 D/StrictMode( 9156): at android.app.ContextImpl.ensurePrivateDirExists(ContextImpl.java:596) +06-02 16:38:24.775 D/StrictMode( 9156): at android.app.ContextImpl.getPreferencesDir(ContextImpl.java:552) +06-02 16:38:24.775 D/StrictMode( 9156): at android.app.ContextImpl.getSharedPreferencesPath(ContextImpl.java:747) +06-02 16:38:24.775 D/StrictMode( 9156): at android.app.ContextImpl.getSharedPreferences(ContextImpl.java:400) +06-02 16:38:24.775 D/StrictMode( 9156): at android.content.ContextWrapper.getSharedPreferences(ContextWrapper.java:174) +06-02 16:38:24.775 D/StrictMode( 9156): at mozilla.components.support.locale.LocaleManager$Storage.getSharedPreferences(LocaleManager.kt:123) +06-02 16:38:24.775 D/StrictMode( 9156): at mozilla.components.support.locale.LocaleManager$Storage.getLocale(LocaleManager.kt:99) +06-02 16:38:24.775 D/StrictMode( 9156): at mozilla.components.support.locale.LocaleManager.getCurrentLocale(LocaleManager.kt:42) +06-02 16:38:24.775 D/StrictMode( 9156): at org.mozilla.fenix.settings.advanced.LocaleManagerExtensionKt.getSelectedLocale(LocaleManagerExtension.kt:39) +06-02 16:38:24.775 D/StrictMode( 9156): at org.mozilla.fenix.settings.advanced.LocaleManagerExtensionKt.getSelectedLocale$default(LocaleManagerExtension.kt:37) +06-02 16:38:24.775 D/StrictMode( 9156): at org.mozilla.fenix.components.TopSiteStorage.addDefaultTopSites(TopSiteStorage.kt:57) +06-02 16:38:24.775 D/StrictMode( 9156): at org.mozilla.fenix.components.TopSiteStorage.<init>(TopSiteStorage.kt:30) +06-02 16:38:24.775 D/StrictMode( 9156): at org.mozilla.fenix.components.Core$topSiteStorage$2.invoke(Core.kt:216) +06-02 16:38:24.775 D/StrictMode( 9156): at org.mozilla.fenix.components.Core$topSiteStorage$2.invoke(Core.kt:57) +06-02 16:38:24.775 D/StrictMode( 9156): at kotlin.SynchronizedLazyImpl.getValue(LazyJVM.kt:74) +06-02 16:38:24.775 D/StrictMode( 9156): at org.mozilla.fenix.components.Core.getTopSiteStorage(Unknown Source:8) +06-02 16:38:24.775 D/StrictMode( 9156): at org.mozilla.fenix.home.HomeFragment$onCreateView$2.invoke(HomeFragment.kt:210) +06-02 16:38:24.775 D/StrictMode( 9156): at org.mozilla.fenix.home.HomeFragment$onCreateView$2.invoke(HomeFragment.kt:114) +06-02 16:38:24.775 D/StrictMode( 9156): at org.mozilla.fenix.components.StoreProviderFactory.create(StoreProvider.kt:42) +06-02 16:38:24.775 D/StrictMode( 9156): at androidx.lifecycle.ViewModelProvider.get(ViewModelProvider.java:187) +06-02 16:38:24.775 D/StrictMode( 9156): at androidx.lifecycle.ViewModelProvider.get(ViewModelProvider.java:150) +06-02 16:38:24.775 D/StrictMode( 9156): at org.mozilla.fenix.components.StoreProvider$Companion.get(StoreProvider.kt:46) +06-02 16:38:24.775 D/StrictMode( 9156): at org.mozilla.fenix.home.HomeFragment.onCreateView(HomeFragment.kt:203) +06-02 16:38:24.775 D/StrictMode( 9156): at androidx.fragment.app.Fragment.performCreateView(Fragment.java:2698) +06-02 16:38:24.775 D/StrictMode( 9156): at androidx.fragment.app.FragmentStateManager.createView(FragmentStateManager.java:320) +06-02 16:38:24.775 D/StrictMode( 9156): at androidx.fragment.app.FragmentManager.moveToState(FragmentManager.java:1187) +06-02 16:38:24.775 D/StrictMode( 9156): at androidx.fragment.app.FragmentManager.addAddedFragments(FragmentManager.java:2224) +06-02 16:38:24.775 D/StrictMode( 9156): at androidx.fragment.app.FragmentManager.executeOpsTogether(FragmentManager.java:1997) +06-02 16:38:24.775 D/StrictMode( 9156): at androidx.fragment.app.FragmentManager.removeRedundantOperationsAndExecute(FragmentManager.java:1953) +06-02 16:38:24.775 D/StrictMode( 9156): at androidx.fragment.app.FragmentManager.execPendingActions(FragmentManager.java:1849) +06-02 16:38:24.775 D/StrictMode( 9156): at androidx.fragment.app.FragmentManager.dispatchStateChange(FragmentManager.java:2629) +06-02 16:38:24.775 D/StrictMode( 9156): at androidx.fragment.app.FragmentManager.dispatchActivityCreated(FragmentManager.java:2577) +06-02 16:38:24.775 D/StrictMode( 9156): at androidx.fragment.app.Fragment.performActivityCreated(Fragment.java:2722) +06-02 16:38:24.775 D/StrictMode( 9156): at androidx.fragment.app.FragmentStateManager.activityCreated(FragmentStateManager.java:346) +06-02 16:38:24.775 D/StrictMode( 9156): at androidx.fragment.app.FragmentManager.moveToState(FragmentManager.java:1188) +06-02 16:38:24.775 D/StrictMode( 9156): at androidx.fragment.app.FragmentManager.moveToState(FragmentManager.java:1356) +06-02 16:38:24.775 D/StrictMode( 9156): at androidx.fragment.app.FragmentManager.moveFragmentToExpectedState(FragmentManager.java:1434) +06-02 16:38:24.775 D/StrictMode( 9156): at androidx.fragment.app.FragmentManager.moveToState(FragmentManager.java:1497) +06-02 16:38:24.775 D/StrictMode( 9156): at androidx.fragment.app.FragmentManager.dispatchStateChange(FragmentManager.java:2625) +06-02 16:38:24.775 D/StrictMode( 9156): at androidx.fragment.app.FragmentManager.dispatchActivityCreated(FragmentManager.java:2577) +06-02 16:38:24.775 D/StrictMode( 9156): at androidx.fragment.app.FragmentController.dispatchActivityCreated(FragmentController.java:247) +06-02 16:38:24.775 D/StrictMode( 9156): at androidx.fragment.app.FragmentActivity.onStart(FragmentActivity.java:541) +06-02 16:38:24.775 D/StrictMode( 9156): at androidx.appcompat.app.AppCompatActivity.onStart(AppCompatActivity.java:210) +06-02 16:38:24.775 D/StrictMode( 9156): at android.app.Instrumentation.callActivityOnStart(Instrumentation.java:1391) +06-02 16:38:24.775 D/StrictMode( 9156): +06-02 16:38:24.779 D/StrictMode( 9156): StrictMode policy violation; ~duration=58 ms: android.os.strictmode.DiskReadViolation +06-02 16:38:24.779 D/StrictMode( 9156): at android.os.StrictMode$AndroidBlockGuardPolicy.onReadFromDisk(StrictMode.java:1504) +06-02 16:38:24.779 D/StrictMode( 9156): at java.io.UnixFileSystem.checkAccess(UnixFileSystem.java:251) +06-02 16:38:24.779 D/StrictMode( 9156): at java.io.File.exists(File.java:815) +06-02 16:38:24.779 D/StrictMode( 9156): at android.app.ContextImpl.ensurePrivateDirExists(ContextImpl.java:605) +06-02 16:38:24.779 D/StrictMode( 9156): at android.app.ContextImpl.ensurePrivateDirExists(ContextImpl.java:596) +06-02 16:38:24.779 D/StrictMode( 9156): at android.app.ContextImpl.getPreferencesDir(ContextImpl.java:552) +06-02 16:38:24.779 D/StrictMode( 9156): at android.app.ContextImpl.getSharedPreferencesPath(ContextImpl.java:747) +06-02 16:38:24.779 D/StrictMode( 9156): at android.app.ContextImpl.getSharedPreferences(ContextImpl.java:400) +06-02 16:38:24.779 D/StrictMode( 9156): at android.content.ContextWrapper.getSharedPreferences(ContextWrapper.java:174) +06-02 16:38:24.779 D/StrictMode( 9156): at org.mozilla.fenix.components.AccountAbnormalities.<init>(AccountAbnormalities.kt:78) +06-02 16:38:24.779 D/StrictMode( 9156): at org.mozilla.fenix.components.AccountAbnormalities.<init>(AccountAbnormalities.kt:60) +06-02 16:38:24.779 D/StrictMode( 9156): at org.mozilla.fenix.components.BackgroundServices.<init>(BackgroundServices.kt:103) +06-02 16:38:24.779 D/StrictMode( 9156): at org.mozilla.fenix.components.Components$backgroundServices$2.invoke(Components.kt:34) +06-02 16:38:24.779 D/StrictMode( 9156): at org.mozilla.fenix.components.Components$backgroundServices$2.invoke(Components.kt:32) +06-02 16:38:24.779 D/StrictMode( 9156): at kotlin.SynchronizedLazyImpl.getValue(LazyJVM.kt:74) +06-02 16:38:24.779 D/StrictMode( 9156): at org.mozilla.fenix.components.Components.getBackgroundServices(Unknown Source:7) +06-02 16:38:24.779 D/StrictMode( 9156): at org.mozilla.fenix.home.HomeMenu$coreMenuItems$2.invoke(HomeMenu.kt:131) +06-02 16:38:24.779 D/StrictMode( 9156): at org.mozilla.fenix.home.HomeMenu$coreMenuItems$2.invoke(HomeMenu.kt:31) +06-02 16:38:24.779 D/StrictMode( 9156): at kotlin.SynchronizedLazyImpl.getValue(LazyJVM.kt:74) +06-02 16:38:24.779 D/StrictMode( 9156): at org.mozilla.fenix.home.HomeMenu.getCoreMenuItems(Unknown Source:7) +06-02 16:38:24.779 D/StrictMode( 9156): at org.mozilla.fenix.home.HomeMenu.<init>(HomeMenu.kt:170) +06-02 16:38:24.779 D/StrictMode( 9156): at org.mozilla.fenix.home.HomeFragment.createHomeMenu(HomeFragment.kt:668) +06-02 16:38:24.779 D/StrictMode( 9156): at org.mozilla.fenix.home.HomeFragment.onViewCreated(HomeFragment.kt:337) +06-02 16:38:24.779 D/StrictMode( 9156): at androidx.fragment.app.FragmentStateManager.createView(FragmentStateManager.java:332) +06-02 16:38:24.779 D/StrictMode( 9156): at androidx.fragment.app.FragmentManager.moveToState(FragmentManager.java:1187) +06-02 16:38:24.779 D/StrictMode( 9156): at androidx.fragment.app.FragmentManager.addAddedFragments(FragmentManager.java:2224) +06-02 16:38:24.779 D/StrictMode( 9156): at androidx.fragment.app.FragmentManager.executeOpsTogether(FragmentManager.java:1997) +06-02 16:38:24.779 D/StrictMode( 9156): at androidx.fragment.app.FragmentManager.removeRedundantOperationsAndExecute(FragmentManager.java:1953) +06-02 16:38:24.779 D/StrictMode( 9156): at androidx.fragment.app.FragmentManager.execPendingActions(FragmentManager.java:1849) +06-02 16:38:24.779 D/StrictMode( 9156): at androidx.fragment.app.FragmentManager.dispatchStateChange(FragmentManager.java:2629) +06-02 16:38:24.779 D/StrictMode( 9156): at androidx.fragment.app.FragmentManager.dispatchActivityCreated(FragmentManager.java:2577) +06-02 16:38:24.779 D/StrictMode( 9156): at androidx.fragment.app.Fragment.performActivityCreated(Fragment.java:2722) +06-02 16:38:24.779 D/StrictMode( 9156): at androidx.fragment.app.FragmentStateManager.activityCreated(FragmentStateManager.java:346) +06-02 16:38:24.779 D/StrictMode( 9156): at androidx.fragment.app.FragmentManager.moveToState(FragmentManager.java:1188) +06-02 16:38:24.779 D/StrictMode( 9156): at androidx.fragment.app.FragmentManager.moveToState(FragmentManager.java:1356) +06-02 16:38:24.779 D/StrictMode( 9156): at androidx.fragment.app.FragmentManager.moveFragmentToExpectedState(FragmentManager.java:1434) +06-02 16:38:24.779 D/StrictMode( 9156): at androidx.fragment.app.FragmentManager.moveToState(FragmentManager.java:1497) +06-02 16:38:24.779 D/StrictMode( 9156): at androidx.fragment.app.FragmentManager.dispatchStateChange(FragmentManager.java:2625) +06-02 16:38:24.779 D/StrictMode( 9156): at androidx.fragment.app.FragmentManager.dispatchActivityCreated(FragmentManager.java:2577) +06-02 16:38:24.779 D/StrictMode( 9156): at androidx.fragment.app.FragmentController.dispatchActivityCreated(FragmentController.java:247) +06-02 16:38:24.779 D/StrictMode( 9156): at androidx.fragment.app.FragmentActivity.onStart(FragmentActivity.java:541) +06-02 16:38:24.779 D/StrictMode( 9156): at androidx.appcompat.app.AppCompatActivity.onStart(AppCompatActivity.java:210) +06-02 16:38:24.779 D/StrictMode( 9156): at android.app.Instrumentation.callActivityOnStart(Instrumentation.java:1391) +06-02 16:38:24.779 D/StrictMode( 9156): at android.app.Activity.performStart(Activity.java:7157) +06-02 16:38:24.779 D/StrictMode( 9156): at android.app.ActivityThread.handleStartActivity(ActivityThread.java:2937) +06-02 16:38:24.779 D/StrictMode( 9156): at android.app.servertransaction.TransactionExecutor.performLifecycleSequence(TransactionExecutor.java:180) +06-02 16:38:24.779 D/StrictMode( 9156): at android.app.servertransaction.TransactionExecutor.cycleToPath(TransactionExecutor.java:165) +06-02 16:38:24.779 D/StrictMode( 9156): at android.app.servertransaction.TransactionExecutor.executeLifecycleState(TransactionExecutor.java:142) +06-02 16:38:24.779 D/StrictMode( 9156): at android.app.servertransaction.TransactionExecutor.execute(Transac +06-02 16:38:24.782 D/StrictMode( 9156): StrictMode policy violation; ~duration=47 ms: android.os.strictmode.DiskReadViolation +06-02 16:38:24.782 D/StrictMode( 9156): at android.os.StrictMode$AndroidBlockGuardPolicy.onReadFromDisk(StrictMode.java:1504) +06-02 16:38:24.782 D/StrictMode( 9156): at java.io.UnixFileSystem.checkAccess(UnixFileSystem.java:251) +06-02 16:38:24.782 D/StrictMode( 9156): at java.io.File.exists(File.java:815) +06-02 16:38:24.782 D/StrictMode( 9156): at android.app.ContextImpl.ensurePrivateDirExists(ContextImpl.java:605) +06-02 16:38:24.782 D/StrictMode( 9156): at android.app.ContextImpl.ensurePrivateDirExists(ContextImpl.java:596) +06-02 16:38:24.782 D/StrictMode( 9156): at android.app.ContextImpl.getPreferencesDir(ContextImpl.java:552) +06-02 16:38:24.782 D/StrictMode( 9156): at android.app.ContextImpl.getSharedPreferencesPath(ContextImpl.java:747) +06-02 16:38:24.782 D/StrictMode( 9156): at android.app.ContextImpl.getSharedPreferences(ContextImpl.java:400) +06-02 16:38:24.782 D/StrictMode( 9156): at android.content.ContextWrapper.getSharedPreferences(ContextWrapper.java:174) +06-02 16:38:24.782 D/StrictMode( 9156): at android.content.ContextWrapper.getSharedPreferences(ContextWrapper.java:174) +06-02 16:38:24.782 D/StrictMode( 9156): at android.preference.PreferenceManager.getDefaultSharedPreferences(PreferenceManager.java:526) +06-02 16:38:24.782 D/StrictMode( 9156): at org.mozilla.fenix.whatsnew.SharedPreferenceWhatsNewStorage.<init>(WhatsNewStorage.kt:35) +06-02 16:38:24.782 D/StrictMode( 9156): at org.mozilla.fenix.whatsnew.WhatsNew$Companion.shouldHighlightWhatsNew(WhatsNew.kt:71) +06-02 16:38:24.782 D/StrictMode( 9156): at org.mozilla.fenix.home.HomeMenu$coreMenuItems$2$whatsNewItem$1.invoke(HomeMenu.kt:92) +06-02 16:38:24.782 D/StrictMode( 9156): at org.mozilla.fenix.home.HomeMenu$coreMenuItems$2$whatsNewItem$1.invoke(HomeMenu.kt:31) +06-02 16:38:24.782 D/StrictMode( 9156): at mozilla.components.browser.menu.ext.BrowserMenuItemKt$getHighlight$3.invoke(BrowserMenuItem.kt:18) +06-02 16:38:24.782 D/StrictMode( 9156): at mozilla.components.browser.menu.ext.BrowserMenuItemKt$getHighlight$3.invoke(Unknown Source:2) +06-02 16:38:24.782 D/StrictMode( 9156): at kotlin.sequences.FilteringSequence$iterator$1.calcNext(Sequences.kt:133) +06-02 16:38:24.782 D/StrictMode( 9156): at kotlin.sequences.FilteringSequence$iterator$1.hasNext(Sequences.kt:156) +06-02 16:38:24.782 D/StrictMode( 9156): at kotlin.sequences.TransformingSequence$iterator$1.hasNext(Sequences.kt:176) +06-02 16:38:24.782 D/StrictMode( 9156): at kotlin.sequences.FilteringSequence$iterator$1.calcNext(Sequences.kt:131) +06-02 16:38:24.782 D/StrictMode( 9156): at kotlin.sequences.FilteringSequence$iterator$1.hasNext(Sequences.kt:156) +06-02 16:38:24.782 D/StrictMode( 9156): at mozilla.components.browser.menu.ext.BrowserMenuItemKt.getHighlight(BrowserMenuItem.kt:31) +06-02 16:38:24.782 D/StrictMode( 9156): at org.mozilla.fenix.home.HomeMenu$coreMenuItems$2.invoke(HomeMenu.kt:149) +06-02 16:38:24.782 D/StrictMode( 9156): at org.mozilla.fenix.home.HomeMenu$coreMenuItems$2.invoke(HomeMenu.kt:31) +06-02 16:38:24.782 D/StrictMode( 9156): at kotlin.SynchronizedLazyImpl.getValue(LazyJVM.kt:74) +06-02 16:38:24.782 D/StrictMode( 9156): at org.mozilla.fenix.home.HomeMenu.getCoreMenuItems(Unknown Source:7) +06-02 16:38:24.782 D/StrictMode( 9156): at org.mozilla.fenix.home.HomeMenu.<init>(HomeMenu.kt:170) +06-02 16:38:24.782 D/StrictMode( 9156): at org.mozilla.fenix.home.HomeFragment.createHomeMenu(HomeFragment.kt:668) +06-02 16:38:24.782 D/StrictMode( 9156): at org.mozilla.fenix.home.HomeFragment.onViewCreated(HomeFragment.kt:337) +06-02 16:38:24.782 D/StrictMode( 9156): at androidx.fragment.app.FragmentStateManager.createView(FragmentStateManager.java:332) +06-02 16:38:24.782 D/StrictMode( 9156): at androidx.fragment.app.FragmentManager.moveToState(FragmentManager.java:1187) +06-02 16:38:24.782 D/StrictMode( 9156): at androidx.fragment.app.FragmentManager.addAddedFragments(FragmentManager.java:2224) +06-02 16:38:24.782 D/StrictMode( 9156): at androidx.fragment.app.FragmentManager.executeOpsTogether(FragmentManager.java:1997) +06-02 16:38:24.782 D/StrictMode( 9156): at androidx.fragment.app.FragmentManager.removeRedundantOperationsAndExecute(FragmentManager.java:1953) +06-02 16:38:24.782 D/StrictMode( 9156): at androidx.fragment.app.FragmentManager.execPendingActions(FragmentManager.java:1849) +06-02 16:38:24.782 D/StrictMode( 9156): at androidx.fragment.app.FragmentManager.dispatchStateChange(FragmentManager.java:2629) +06-02 16:38:24.782 D/StrictMode( 9156): at androidx.fragment.app.FragmentManager.dispatchActivityCreated(FragmentManager.java:2577) +06-02 16:38:24.782 D/StrictMode( 9156): at androidx.fragment.app.Fragment.performActivityCreated(Fragment.java:2722) +06-02 16:38:24.782 D/StrictMode( 9156): at androidx.fragment.app.FragmentStateManager.activityCreated(FragmentStateManager.java:346) +06-02 16:38:24.782 D/StrictMode( 9156): at androidx.fragment.app.FragmentManager.moveToState(FragmentManager.java:1188) +06-02 16:38:24.782 D/StrictMode( 9156): at androidx.fragment.app.FragmentManager.moveToState(FragmentManager.java:1356) +06-02 16:38:24.782 D/StrictMode( 9156): at androidx.fragment.app.FragmentManager.moveFragmentToExpectedState(FragmentManager.java:1434) +06-02 16:38:24.782 D/StrictMode( 9156): at androidx.fragment.app.FragmentManager.moveToState(FragmentManager.java:1497) +06-02 16:38:24.782 D/StrictMode( 9156): at androidx.fragment.app.FragmentManager.dispatchStateChange(FragmentManager.java:2625) +06-02 16:38:24.782 D/StrictMode( 9156): at androidx.fragment.app.FragmentManager.dispatchActivityCreated(FragmentManager.java:2577) +06-02 16:38:24.782 D/StrictMode( 9156): at androidx.fragment.app.FragmentController.dispatchActivityCreated(FragmentController.java:247) +06-02 16:38:24.782 D/StrictMode( 9156): at androidx.fragment.app.FragmentActivity.onStart(FragmentActivity.java:541) +06-02 16:38:24.782 D/StrictMode( 9156): at androidx.appcompat.app.AppCompatAc +06-02 16:38:24.782 D/LeakCanary( 9156): LeakCanary is running and ready to detect leaks +06-02 16:38:24.787 I/libglean_ffi( 9156): glean_core::ping: Collecting baseline +06-02 16:38:24.796 D/libglean_ffi( 9156): glean_core::ping: Storing ping 'df517eba-b482-412e-a056-0d6679710e3c' at '/data/user/0/org.mozilla.fenix.debug/glean_data/pending_pings/df517eba-b482-412e-a056-0d6679710e3c' +06-02 16:38:24.796 I/libglean_ffi( 9156): glean_core: The ping 'baseline' was submitted and will be sent as soon as possible +06-02 16:38:24.819 D/GeckoNetworkManager( 9156): Incoming event enableNotifications for state OnNoListeners -> OnWithListeners +06-02 16:38:24.820 D/GeckoNetworkManager( 9156): New network state: UP, WIFI, WIFI +06-02 16:38:24.820 W/ActivityManager( 1869): Receiver with filter android.content.IntentFilter@d1608ed already registered for pid 9156, callerPackage is org.mozilla.fenix.debug +06-02 16:38:24.827 D/GeckoNetworkManager( 9156): Incoming event receivedUpdate for state OnWithListeners -> OnWithListeners +06-02 16:38:24.828 D/GeckoNetworkManager( 9156): New network state: UP, WIFI, WIFI +06-02 16:38:24.898 D/GeckoThread( 9156): State changed to PROFILE_READY +06-02 16:38:24.904 D/GeckoThread( 9201): State changed to LAUNCHED +06-02 16:38:24.904 I/GeckoThread( 9201): preparing to run Gecko +06-02 16:38:24.915 D/WIFI_UT ( 1869): got request NetworkRequest [ TRACK_DEFAULT id=34, [ Capabilities: INTERNET&NOT_RESTRICTED&TRUSTED Unwanted: Uid: 10099] ] with score 60 +06-02 16:38:24.915 D/WIFI ( 1869): got request NetworkRequest [ TRACK_DEFAULT id=34, [ Capabilities: INTERNET&NOT_RESTRICTED&TRUSTED Unwanted: Uid: 10099] ] with score 60 +06-02 16:38:24.915 D/PhoneSwitcherNetworkRequstListener( 2121): got request NetworkRequest [ TRACK_DEFAULT id=34, [ Capabilities: INTERNET&NOT_RESTRICTED&TRUSTED Unwanted: Uid: 10099] ] with score 60 +06-02 16:38:24.933 I/lla.fenix.debu( 9156): Background concurrent copying GC freed 16527(1436KB) AllocSpace objects, 30(1032KB) LOS objects, 49% free, 4MB/9MB, paused 264us total 150.694ms +06-02 16:38:24.952 D/gralloc_ranchu( 1619): gralloc_alloc: Creating ashmem region of size 9334784 +06-02 16:38:24.952 D/GeckoViewStartup( 9156): observe: profile-after-change +06-02 16:38:24.957 D/GeckoViewTelemetryController( 9156): setup - canRecordPrereleaseData true, canRecordReleaseData true +06-02 16:38:24.962 D/ ( 1728): HostConnection::get() New Host Connection established 0xe50f1400, tid 1952 +06-02 16:38:24.963 D/gralloc_ranchu( 1619): gralloc_alloc: Creating ashmem region of size 9334784 +06-02 16:38:24.970 D/gralloc_ranchu( 1619): gralloc_alloc: Creating ashmem region of size 9334784 +06-02 16:38:24.987 D/ ( 9156): HostConnection::get() New Host Connection established 0xe33a0f40, tid 9245 +06-02 16:38:24.991 I/ConfigStore( 9156): android::hardware::configstore::V1_0::ISurfaceFlingerConfigs::hasWideColorDisplay retrieved: 0 +06-02 16:38:24.991 I/ConfigStore( 9156): android::hardware::configstore::V1_0::ISurfaceFlingerConfigs::hasHDRDisplay retrieved: 0 +06-02 16:38:24.991 I/OpenGLRenderer( 9156): Initialized EGL, version 1.4 +06-02 16:38:24.991 D/OpenGLRenderer( 9156): Swap behavior 1 +06-02 16:38:24.992 W/OpenGLRenderer( 9156): Failed to choose config with EGL_SWAP_BEHAVIOR_PRESERVED, retrying without... +06-02 16:38:24.992 D/OpenGLRenderer( 9156): Swap behavior 0 +06-02 16:38:24.993 D/EGL_emulation( 9156): eglCreateContext: 0xe33868c0: maj 3 min 0 rcv 3 +06-02 16:38:24.994 D/EGL_emulation( 9156): eglMakeCurrent: 0xe33868c0: ver 3 0 (tinfo 0xb35fe0f0) +06-02 16:38:24.996 E/SurfaceFlinger( 1728): ro.sf.lcd_density must be defined as a build property +06-02 16:38:24.999 D/GeckoThread( 9156): State changed to RUNNING +06-02 16:38:25.001 W/lla.fenix.debu( 9156): Accessing hidden field Landroid/os/Trace;->TRACE_TAG_APP:J (light greylist, reflection) +06-02 16:38:25.003 D/StrictMode( 9156): StrictMode policy violation: android.os.strictmode.NonSdkApiUsedViolation: Landroid/os/Trace;->TRACE_TAG_APP:J +06-02 16:38:25.003 D/StrictMode( 9156): at android.os.StrictMode.lambda$static$1(StrictMode.java:428) +06-02 16:38:25.003 D/StrictMode( 9156): at android.os.-$$Lambda$StrictMode$lu9ekkHJ2HMz0jd3F8K8MnhenxQ.accept(Unknown Source:2) +06-02 16:38:25.003 D/StrictMode( 9156): at java.lang.Class.getPublicFieldRecursive(Native Method) +06-02 16:38:25.003 D/StrictMode( 9156): at java.lang.Class.getField(Class.java:1599) +06-02 16:38:25.003 D/StrictMode( 9156): at androidx.core.os.TraceCompat.<clinit>(TraceCompat.java:48) +06-02 16:38:25.003 D/StrictMode( 9156): at androidx.core.os.TraceCompat.beginSection(TraceCompat.java:100) +06-02 16:38:25.003 D/StrictMode( 9156): at androidx.recyclerview.widget.RecyclerView.onLayout(RecyclerView.java:4403) +06-02 16:38:25.003 D/StrictMode( 9156): at android.view.View.layout(View.java:20672) +06-02 16:38:25.003 D/StrictMode( 9156): at android.view.ViewGroup.layout(ViewGroup.java:6194) +06-02 16:38:25.003 D/StrictMode( 9156): at com.google.android.material.appbar.HeaderScrollingViewBehavior.layoutChild(HeaderScrollingViewBehavior.java:148) +06-02 16:38:25.003 D/StrictMode( 9156): at com.google.android.material.appbar.ViewOffsetBehavior.onLayoutChild(ViewOffsetBehavior.java:43) +06-02 16:38:25.003 D/StrictMode( 9156): at com.google.android.material.appbar.AppBarLayout$ScrollingViewBehavior.onLayoutChild(AppBarLayout.java:1892) +06-02 16:38:25.003 D/StrictMode( 9156): at androidx.coordinatorlayout.widget.CoordinatorLayout.onLayout(CoordinatorLayout.java:918) +06-02 16:38:25.003 D/StrictMode( 9156): at android.view.View.layout(View.java:20672) +06-02 16:38:25.003 D/StrictMode( 9156): at android.view.ViewGroup.layout(ViewGroup.java:6194) +06-02 16:38:25.003 D/StrictMode( 9156): at android.widget.FrameLayout.layoutChildren(FrameLayout.java:323) +06-02 16:38:25.003 D/StrictMode( 9156): at android.widget.FrameLayout.onLayout(FrameLayout.java:261) +06-02 16:38:25.003 D/StrictMode( 9156): at android.view.View.layout(View.java:20672) +06-02 16:38:25.003 D/StrictMode( 9156): at android.view.ViewGroup.layout(ViewGroup.java:6194) +06-02 16:38:25.003 D/StrictMode( 9156): at android.widget.LinearLayout.setChildFrame(LinearLayout.java:1812) +06-02 16:38:25.003 D/StrictMode( 9156): at android.widget.LinearLayout.layoutVertical(LinearLayout.java:1656) +06-02 16:38:25.003 D/StrictMode( 9156): at android.widget.LinearLayout.onLayout(LinearLayout.java:1565) +06-02 16:38:25.003 D/StrictMode( 9156): at android.view.View.layout(View.java:20672) +06-02 16:38:25.003 D/StrictMode( 9156): at android.view.ViewGroup.layout(ViewGroup.java:6194) +06-02 16:38:25.003 D/StrictMode( 9156): at android.widget.FrameLayout.layoutChildren(FrameLayout.java:323) +06-02 16:38:25.003 D/StrictMode( 9156): at android.widget.FrameLayout.onLayout(FrameLayout.java:261) +06-02 16:38:25.003 D/StrictMode( 9156): at android.view.View.layout(View.java:20672) +06-02 16:38:25.003 D/StrictMode( 9156): at android.view.ViewGroup.layout(ViewGroup.java:6194) +06-02 16:38:25.003 D/StrictMode( 9156): at android.widget.LinearLayout.setChildFrame(LinearLayout.java:1812) +06-02 16:38:25.003 D/StrictMode( 9156): at android.widget.LinearLayout.layoutVertical(LinearLayout.java:1656) +06-02 16:38:25.003 D/StrictMode( 9156): at android.widget.LinearLayout.onLayout(LinearLayout.java:1565) +06-02 16:38:25.003 D/StrictMode( 9156): at android.view.View.layout(View.java:20672) +06-02 16:38:25.003 D/StrictMode( 9156): at android.view.ViewGroup.layout(ViewGroup.java:6194) +06-02 16:38:25.003 D/StrictMode( 9156): at android.widget.FrameLayout.layoutChildren(FrameLayout.java:323) +06-02 16:38:25.003 D/StrictMode( 9156): at android.widget.FrameLayout.onLayout(FrameLayout.java:261) +06-02 16:38:25.003 D/StrictMode( 9156): at android.view.View.layout(View.java:20672) +06-02 16:38:25.003 D/StrictMode( 9156): at android.view.ViewGroup.layout(ViewGroup.java:6194) +06-02 16:38:25.003 D/StrictMode( 9156): at android.widget.LinearLayout.setChildFrame(LinearLayout.java:1812) +06-02 16:38:25.003 D/StrictMode( 9156): at android.widget.LinearLayout.layoutVertical(LinearLayout.java:1656) +06-02 16:38:25.003 D/StrictMode( 9156): at android.widget.LinearLayout.onLayout(LinearLayout.java:1565) +06-02 16:38:25.003 D/StrictMode( 9156): at android.view.View.layout(View.java:20672) +06-02 16:38:25.003 D/StrictMode( 9156): at android.view.ViewGroup.layout(ViewGroup.java:6194) +06-02 16:38:25.003 D/StrictMode( 9156): at android.widget.FrameLayout.layoutChildren(FrameLayout.java:323) +06-02 16:38:25.003 D/StrictMode( 9156): at android.widget.FrameLayout.onLayout(FrameLayout.java:261) +06-02 16:38:25.003 D/StrictMode( 9156): at com.android.internal.policy.DecorView.onLayout(DecorView.java:753) +06-02 16:38:25.003 D/StrictMode( 9156): at android.view.View.layout(View.java:20672) +06-02 16:38:25.003 D/StrictMode( 9156): at android.view.ViewGroup.layout(ViewGroup.java:6194) +06-02 16:38:25.003 D/StrictMode( 9156): at android.view.ViewRootImpl.performLayout(ViewRootImpl.java:2792) +06-02 16:38:25.003 D/StrictMode( 9156): at android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:2319) +06-02 16:38:25.003 D/StrictMode( 9156): at android.view.ViewRootImpl.doTraversal(ViewRootImpl.java:1460) +06-02 16:38:25.003 D/StrictMode( 9156): at android.view.ViewRootImpl$TraversalRunnable.run(ViewRootImpl.java:7183) +06-02 16:38:25.003 D/StrictMode( 9156): at android.view.Choreographer$CallbackRecord.run(Choreographer.java:949) +06-02 16:38:25.003 D/StrictMode( 9156): at android.view.Choreographer.doCallbacks(Choreographer.java:761) +06-02 16:38:25.003 D/StrictMode( 9156): at android.view.Choreographer.doFrame(Choreographer.java:696) +06-02 16:38:25.003 D/StrictMode( 9156): at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:935) +06-02 16:38:25.003 D/StrictMode( 9156): at android.os.Handler.handleCallback(Handler.java:873) +06-02 16:38:25.003 D/StrictMode( 9156): at android.os.Handler.dispatchMessage(Handler.java:99) +06-02 16:38:25.003 D/StrictMode( 9156): at android.os.Looper.loop(Looper.java:193) +06-02 16:38:25.003 D/StrictMode( 9156): at android.app.ActivityThread.main(ActivityThread.java:6669) +06-02 16:38:25.003 D/StrictMode( 9156): at java.lang.reflect.Method.invoke(Native Method) +06-02 16:38:25.003 D/StrictMode( 9156): at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:493) +06-02 16:38:25.003 D/StrictMode( 9156): at com.and +06-02 16:38:25.003 W/lla.fenix.debu( 9156): Accessing hidden method Landroid/os/Trace;->isTagEnabled(J)Z (light greylist, reflection) +06-02 16:38:25.006 D/StrictMode( 9156): StrictMode policy violation: android.os.strictmode.NonSdkApiUsedViolation: Landroid/os/Trace;->isTagEnabled(J)Z +06-02 16:38:25.006 D/StrictMode( 9156): at android.os.StrictMode.lambda$static$1(StrictMode.java:428) +06-02 16:38:25.006 D/StrictMode( 9156): at android.os.-$$Lambda$StrictMode$lu9ekkHJ2HMz0jd3F8K8MnhenxQ.accept(Unknown Source:2) +06-02 16:38:25.006 D/StrictMode( 9156): at java.lang.Class.getDeclaredMethodInternal(Native Method) +06-02 16:38:25.006 D/StrictMode( 9156): at java.lang.Class.getPublicMethodRecursive(Class.java:2075) +06-02 16:38:25.006 D/StrictMode( 9156): at java.lang.Class.getMethod(Class.java:2063) +06-02 16:38:25.006 D/StrictMode( 9156): at java.lang.Class.getMethod(Class.java:1690) +06-02 16:38:25.006 D/StrictMode( 9156): at androidx.core.os.TraceCompat.<clinit>(TraceCompat.java:51) +06-02 16:38:25.006 D/StrictMode( 9156): at androidx.core.os.TraceCompat.beginSection(TraceCompat.java:100) +06-02 16:38:25.006 D/StrictMode( 9156): at androidx.recyclerview.widget.RecyclerView.onLayout(RecyclerView.java:4403) +06-02 16:38:25.006 D/StrictMode( 9156): at android.view.View.layout(View.java:20672) +06-02 16:38:25.006 D/StrictMode( 9156): at android.view.ViewGroup.layout(ViewGroup.java:6194) +06-02 16:38:25.006 D/StrictMode( 9156): at com.google.android.material.appbar.HeaderScrollingViewBehavior.layoutChild(HeaderScrollingViewBehavior.java:148) +06-02 16:38:25.006 D/StrictMode( 9156): at com.google.android.material.appbar.ViewOffsetBehavior.onLayoutChild(ViewOffsetBehavior.java:43) +06-02 16:38:25.006 D/StrictMode( 9156): at com.google.android.material.appbar.AppBarLayout$ScrollingViewBehavior.onLayoutChild(AppBarLayout.java:1892) +06-02 16:38:25.006 D/StrictMode( 9156): at androidx.coordinatorlayout.widget.CoordinatorLayout.onLayout(CoordinatorLayout.java:918) +06-02 16:38:25.006 D/StrictMode( 9156): at android.view.View.layout(View.java:20672) +06-02 16:38:25.006 D/StrictMode( 9156): at android.view.ViewGroup.layout(ViewGroup.java:6194) +06-02 16:38:25.006 D/StrictMode( 9156): at android.widget.FrameLayout.layoutChildren(FrameLayout.java:323) +06-02 16:38:25.006 D/StrictMode( 9156): at android.widget.FrameLayout.onLayout(FrameLayout.java:261) +06-02 16:38:25.006 D/StrictMode( 9156): at android.view.View.layout(View.java:20672) +06-02 16:38:25.006 D/StrictMode( 9156): at android.view.ViewGroup.layout(ViewGroup.java:6194) +06-02 16:38:25.006 D/StrictMode( 9156): at android.widget.LinearLayout.setChildFrame(LinearLayout.java:1812) +06-02 16:38:25.006 D/StrictMode( 9156): at android.widget.LinearLayout.layoutVertical(LinearLayout.java:1656) +06-02 16:38:25.006 D/StrictMode( 9156): at android.widget.LinearLayout.onLayout(LinearLayout.java:1565) +06-02 16:38:25.006 D/StrictMode( 9156): at android.view.View.layout(View.java:20672) +06-02 16:38:25.006 D/StrictMode( 9156): at android.view.ViewGroup.layout(ViewGroup.java:6194) +06-02 16:38:25.006 D/StrictMode( 9156): at android.widget.FrameLayout.layoutChildren(FrameLayout.java:323) +06-02 16:38:25.006 D/StrictMode( 9156): at android.widget.FrameLayout.onLayout(FrameLayout.java:261) +06-02 16:38:25.006 D/StrictMode( 9156): at android.view.View.layout(View.java:20672) +06-02 16:38:25.006 D/StrictMode( 9156): at android.view.ViewGroup.layout(ViewGroup.java:6194) +06-02 16:38:25.006 D/StrictMode( 9156): at android.widget.LinearLayout.setChildFrame(LinearLayout.java:1812) +06-02 16:38:25.006 D/StrictMode( 9156): at android.widget.LinearLayout.layoutVertical(LinearLayout.java:1656) +06-02 16:38:25.006 D/StrictMode( 9156): at android.widget.LinearLayout.onLayout(LinearLayout.java:1565) +06-02 16:38:25.006 D/StrictMode( 9156): at android.view.View.layout(View.java:20672) +06-02 16:38:25.006 D/StrictMode( 9156): at android.view.ViewGroup.layout(ViewGroup.java:6194) +06-02 16:38:25.006 D/StrictMode( 9156): at android.widget.FrameLayout.layoutChildren(FrameLayout.java:323) +06-02 16:38:25.006 D/StrictMode( 9156): at android.widget.FrameLayout.onLayout(FrameLayout.java:261) +06-02 16:38:25.006 D/StrictMode( 9156): at android.view.View.layout(View.java:20672) +06-02 16:38:25.006 D/StrictMode( 9156): at android.view.ViewGroup.layout(ViewGroup.java:6194) +06-02 16:38:25.006 D/StrictMode( 9156): at android.widget.LinearLayout.setChildFrame(LinearLayout.java:1812) +06-02 16:38:25.006 D/StrictMode( 9156): at android.widget.LinearLayout.layoutVertical(LinearLayout.java:1656) +06-02 16:38:25.006 D/StrictMode( 9156): at android.widget.LinearLayout.onLayout(LinearLayout.java:1565) +06-02 16:38:25.006 D/StrictMode( 9156): at android.view.View.layout(View.java:20672) +06-02 16:38:25.006 D/StrictMode( 9156): at android.view.ViewGroup.layout(ViewGroup.java:6194) +06-02 16:38:25.006 D/StrictMode( 9156): at android.widget.FrameLayout.layoutChildren(FrameLayout.java:323) +06-02 16:38:25.006 D/StrictMode( 9156): at android.widget.FrameLayout.onLayout(FrameLayout.java:261) +06-02 16:38:25.006 D/StrictMode( 9156): at com.android.internal.policy.DecorView.onLayout(DecorView.java:753) +06-02 16:38:25.006 D/StrictMode( 9156): at android.view.View.layout(View.java:20672) +06-02 16:38:25.006 D/StrictMode( 9156): at android.view.ViewGroup.layout(ViewGroup.java:6194) +06-02 16:38:25.006 D/StrictMode( 9156): at android.view.ViewRootImpl.performLayout(ViewRootImpl.java:2792) +06-02 16:38:25.006 D/StrictMode( 9156): at android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:2319) +06-02 16:38:25.006 D/StrictMode( 9156): at android.view.ViewRootImpl.doTraversal(ViewRootImpl.java:1460) +06-02 16:38:25.006 D/StrictMode( 9156): at android.view.ViewRootImpl$TraversalRunnable.run(ViewRootImpl.java:7183) +06-02 16:38:25.006 D/StrictMode( 9156): at android.view.Choreographer$CallbackRecord.run(Choreographer.java:949) +06-02 16:38:25.006 D/StrictMode( 9156): at android.view.Choreographer.doCallbacks(Choreographer.java:761) +06-02 16:38:25.006 D/StrictMode( 9156): at android.view.Choreographer.doFrame(Choreographer.java:696) +06-02 16:38:25.006 D/StrictMode( 9156): at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:935) +06-02 16:38:25.006 D/StrictMode( 9156): at android.os.Handler.handleCallback(Handler.java:873) +06-02 16:38:25.006 D/StrictMode( 9156): at android.os.Handler.dispatchMessage(Handler.java:99) +06-02 16:38:25.006 D/StrictMode( 9156): at android.os.Looper.loop(Looper.java:193) +06-02 16:38:25.006 D/StrictMode( 9156): at android.app.ActivityThread.main(ActivityThread.java:6669) +06-02 16:38:25.006 D/StrictMode( 9156): at java.lang.reflect.Method.invoke +06-02 16:38:25.006 W/lla.fenix.debu( 9156): Accessing hidden method Landroid/os/Trace;->asyncTraceBegin(JLjava/lang/String;I)V (light greylist, reflection) +06-02 16:38:25.008 D/StrictMode( 9156): StrictMode policy violation: android.os.strictmode.NonSdkApiUsedViolation: Landroid/os/Trace;->asyncTraceBegin(JLjava/lang/String;I)V +06-02 16:38:25.008 D/StrictMode( 9156): at android.os.StrictMode.lambda$static$1(StrictMode.java:428) +06-02 16:38:25.008 D/StrictMode( 9156): at android.os.-$$Lambda$StrictMode$lu9ekkHJ2HMz0jd3F8K8MnhenxQ.accept(Unknown Source:2) +06-02 16:38:25.008 D/StrictMode( 9156): at java.lang.Class.getDeclaredMethodInternal(Native Method) +06-02 16:38:25.008 D/StrictMode( 9156): at java.lang.Class.getPublicMethodRecursive(Class.java:2075) +06-02 16:38:25.008 D/StrictMode( 9156): at java.lang.Class.getMethod(Class.java:2063) +06-02 16:38:25.008 D/StrictMode( 9156): at java.lang.Class.getMethod(Class.java:1690) +06-02 16:38:25.008 D/StrictMode( 9156): at androidx.core.os.TraceCompat.<clinit>(TraceCompat.java:52) +06-02 16:38:25.008 D/StrictMode( 9156): at androidx.core.os.TraceCompat.beginSection(TraceCompat.java:100) +06-02 16:38:25.008 D/StrictMode( 9156): at androidx.recyclerview.widget.RecyclerView.onLayout(RecyclerView.java:4403) +06-02 16:38:25.008 D/StrictMode( 9156): at android.view.View.layout(View.java:20672) +06-02 16:38:25.008 D/StrictMode( 9156): at android.view.ViewGroup.layout(ViewGroup.java:6194) +06-02 16:38:25.008 D/StrictMode( 9156): at com.google.android.material.appbar.HeaderScrollingViewBehavior.layoutChild(HeaderScrollingViewBehavior.java:148) +06-02 16:38:25.008 D/StrictMode( 9156): at com.google.android.material.appbar.ViewOffsetBehavior.onLayoutChild(ViewOffsetBehavior.java:43) +06-02 16:38:25.008 D/StrictMode( 9156): at com.google.android.material.appbar.AppBarLayout$ScrollingViewBehavior.onLayoutChild(AppBarLayout.java:1892) +06-02 16:38:25.008 D/StrictMode( 9156): at androidx.coordinatorlayout.widget.CoordinatorLayout.onLayout(CoordinatorLayout.java:918) +06-02 16:38:25.008 D/StrictMode( 9156): at android.view.View.layout(View.java:20672) +06-02 16:38:25.008 D/StrictMode( 9156): at android.view.ViewGroup.layout(ViewGroup.java:6194) +06-02 16:38:25.008 D/StrictMode( 9156): at android.widget.FrameLayout.layoutChildren(FrameLayout.java:323) +06-02 16:38:25.008 D/StrictMode( 9156): at android.widget.FrameLayout.onLayout(FrameLayout.java:261) +06-02 16:38:25.008 D/StrictMode( 9156): at android.view.View.layout(View.java:20672) +06-02 16:38:25.008 D/StrictMode( 9156): at android.view.ViewGroup.layout(ViewGroup.java:6194) +06-02 16:38:25.008 D/StrictMode( 9156): at android.widget.LinearLayout.setChildFrame(LinearLayout.java:1812) +06-02 16:38:25.008 D/StrictMode( 9156): at android.widget.LinearLayout.layoutVertical(LinearLayout.java:1656) +06-02 16:38:25.008 D/StrictMode( 9156): at android.widget.LinearLayout.onLayout(LinearLayout.java:1565) +06-02 16:38:25.008 D/StrictMode( 9156): at android.view.View.layout(View.java:20672) +06-02 16:38:25.008 D/StrictMode( 9156): at android.view.ViewGroup.layout(ViewGroup.java:6194) +06-02 16:38:25.008 D/StrictMode( 9156): at android.widget.FrameLayout.layoutChildren(FrameLayout.java:323) +06-02 16:38:25.008 D/StrictMode( 9156): at android.widget.FrameLayout.onLayout(FrameLayout.java:261) +06-02 16:38:25.008 D/StrictMode( 9156): at android.view.View.layout(View.java:20672) +06-02 16:38:25.008 D/StrictMode( 9156): at android.view.ViewGroup.layout(ViewGroup.java:6194) +06-02 16:38:25.008 D/StrictMode( 9156): at android.widget.LinearLayout.setChildFrame(LinearLayout.java:1812) +06-02 16:38:25.008 D/StrictMode( 9156): at android.widget.LinearLayout.layoutVertical(LinearLayout.java:1656) +06-02 16:38:25.008 D/StrictMode( 9156): at android.widget.LinearLayout.onLayout(LinearLayout.java:1565) +06-02 16:38:25.008 D/StrictMode( 9156): at android.view.View.layout(View.java:20672) +06-02 16:38:25.008 D/StrictMode( 9156): at android.view.ViewGroup.layout(ViewGroup.java:6194) +06-02 16:38:25.008 D/StrictMode( 9156): at android.widget.FrameLayout.layoutChildren(FrameLayout.java:323) +06-02 16:38:25.008 D/StrictMode( 9156): at android.widget.FrameLayout.onLayout(FrameLayout.java:261) +06-02 16:38:25.008 D/StrictMode( 9156): at android.view.View.layout(View.java:20672) +06-02 16:38:25.008 D/StrictMode( 9156): at android.view.ViewGroup.layout(ViewGroup.java:6194) +06-02 16:38:25.008 D/StrictMode( 9156): at android.widget.LinearLayout.setChildFrame(LinearLayout.java:1812) +06-02 16:38:25.008 D/StrictMode( 9156): at android.widget.LinearLayout.layoutVertical(LinearLayout.java:1656) +06-02 16:38:25.008 D/StrictMode( 9156): at android.widget.LinearLayout.onLayout(LinearLayout.java:1565) +06-02 16:38:25.008 D/StrictMode( 9156): at android.view.View.layout(View.java:20672) +06-02 16:38:25.008 D/StrictMode( 9156): at android.view.ViewGroup.layout(ViewGroup.java:6194) +06-02 16:38:25.008 D/StrictMode( 9156): at android.widget.FrameLayout.layoutChildren(FrameLayout.java:323) +06-02 16:38:25.008 D/StrictMode( 9156): at android.widget.FrameLayout.onLayout(FrameLayout.java:261) +06-02 16:38:25.008 D/StrictMode( 9156): at com.android.internal.policy.DecorView.onLayout(DecorView.java:753) +06-02 16:38:25.008 D/StrictMode( 9156): at android.view.View.layout(View.java:20672) +06-02 16:38:25.008 D/StrictMode( 9156): at android.view.ViewGroup.layout(ViewGroup.java:6194) +06-02 16:38:25.008 D/StrictMode( 9156): at android.view.ViewRootImpl.performLayout(ViewRootImpl.java:2792) +06-02 16:38:25.008 D/StrictMode( 9156): at android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:2319) +06-02 16:38:25.008 D/StrictMode( 9156): at android.view.ViewRootImpl.doTraversal(ViewRootImpl.java:1460) +06-02 16:38:25.008 D/StrictMode( 9156): at android.view.ViewRootImpl$TraversalRunnable.run(ViewRootImpl.java:7183) +06-02 16:38:25.008 D/StrictMode( 9156): at android.view.Choreographer$CallbackRecord.run(Choreographer.java:949) +06-02 16:38:25.008 D/StrictMode( 9156): at android.view.Choreographer.doCallbacks(Choreographer.java:761) +06-02 16:38:25.008 D/StrictMode( 9156): at android.view.Choreographer.doFrame(Choreographer.java:696) +06-02 16:38:25.008 D/StrictMode( 9156): at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:935) +06-02 16:38:25.008 D/StrictMode( 9156): at android.os.Handler.handleCallback(Handler.java:873) +06-02 16:38:25.008 D/StrictMode( 9156): at android.os.Handler.dispatchMessage(Handler.java:99) +06-02 16:38:25.008 D/StrictMode( 9156): at android.os.Looper.loop(Looper.java:193) +06-02 16:38:25.008 D/StrictMode( 9156): at android.app.ActivityThread.main(ActivityThread.java:6669) +06-02 16:38:25.008 D/StrictMode( 9156): at java.lang +06-02 16:38:25.008 W/lla.fenix.debu( 9156): Accessing hidden method Landroid/os/Trace;->asyncTraceEnd(JLjava/lang/String;I)V (light greylist, reflection) +06-02 16:38:25.013 I/Gecko ( 9156): -*- nsDNSServiceDiscovery.js : nsDNSServiceDiscovery +06-02 16:38:25.013 D/StrictMode( 9156): StrictMode policy violation: android.os.strictmode.NonSdkApiUsedViolation: Landroid/os/Trace;->asyncTraceEnd(JLjava/lang/String;I)V +06-02 16:38:25.013 D/StrictMode( 9156): at android.os.StrictMode.lambda$static$1(StrictMode.java:428) +06-02 16:38:25.013 D/StrictMode( 9156): at android.os.-$$Lambda$StrictMode$lu9ekkHJ2HMz0jd3F8K8MnhenxQ.accept(Unknown Source:2) +06-02 16:38:25.013 D/StrictMode( 9156): at java.lang.Class.getDeclaredMethodInternal(Native Method) +06-02 16:38:25.013 D/StrictMode( 9156): at java.lang.Class.getPublicMethodRecursive(Class.java:2075) +06-02 16:38:25.013 D/StrictMode( 9156): at java.lang.Class.getMethod(Class.java:2063) +06-02 16:38:25.013 D/StrictMode( 9156): at java.lang.Class.getMethod(Class.java:1690) +06-02 16:38:25.013 D/StrictMode( 9156): at androidx.core.os.TraceCompat.<clinit>(TraceCompat.java:54) +06-02 16:38:25.013 D/StrictMode( 9156): at androidx.core.os.TraceCompat.beginSection(TraceCompat.java:100) +06-02 16:38:25.013 D/StrictMode( 9156): at androidx.recyclerview.widget.RecyclerView.onLayout(RecyclerView.java:4403) +06-02 16:38:25.013 D/StrictMode( 9156): at android.view.View.layout(View.java:20672) +06-02 16:38:25.013 D/StrictMode( 9156): at android.view.ViewGroup.layout(ViewGroup.java:6194) +06-02 16:38:25.013 D/StrictMode( 9156): at com.google.android.material.appbar.HeaderScrollingViewBehavior.layoutChild(HeaderScrollingViewBehavior.java:148) +06-02 16:38:25.013 D/StrictMode( 9156): at com.google.android.material.appbar.ViewOffsetBehavior.onLayoutChild(ViewOffsetBehavior.java:43) +06-02 16:38:25.013 D/StrictMode( 9156): at com.google.android.material.appbar.AppBarLayout$ScrollingViewBehavior.onLayoutChild(AppBarLayout.java:1892) +06-02 16:38:25.013 D/StrictMode( 9156): at androidx.coordinatorlayout.widget.CoordinatorLayout.onLayout(CoordinatorLayout.java:918) +06-02 16:38:25.013 D/StrictMode( 9156): at android.view.View.layout(View.java:20672) +06-02 16:38:25.013 D/StrictMode( 9156): at android.view.ViewGroup.layout(ViewGroup.java:6194) +06-02 16:38:25.013 D/StrictMode( 9156): at android.widget.FrameLayout.layoutChildren(FrameLayout.java:323) +06-02 16:38:25.013 D/StrictMode( 9156): at android.widget.FrameLayout.onLayout(FrameLayout.java:261) +06-02 16:38:25.013 D/StrictMode( 9156): at android.view.View.layout(View.java:20672) +06-02 16:38:25.013 D/StrictMode( 9156): at android.view.ViewGroup.layout(ViewGroup.java:6194) +06-02 16:38:25.013 D/StrictMode( 9156): at android.widget.LinearLayout.setChildFrame(LinearLayout.java:1812) +06-02 16:38:25.013 D/StrictMode( 9156): at android.widget.LinearLayout.layoutVertical(LinearLayout.java:1656) +06-02 16:38:25.013 D/StrictMode( 9156): at android.widget.LinearLayout.onLayout(LinearLayout.java:1565) +06-02 16:38:25.013 D/StrictMode( 9156): at android.view.View.layout(View.java:20672) +06-02 16:38:25.013 D/StrictMode( 9156): at android.view.ViewGroup.layout(ViewGroup.java:6194) +06-02 16:38:25.013 D/StrictMode( 9156): at android.widget.FrameLayout.layoutChildren(FrameLayout.java:323) +06-02 16:38:25.013 D/StrictMode( 9156): at android.widget.FrameLayout.onLayout(FrameLayout.java:261) +06-02 16:38:25.013 D/StrictMode( 9156): at android.view.View.layout(View.java:20672) +06-02 16:38:25.013 D/StrictMode( 9156): at android.view.ViewGroup.layout(ViewGroup.java:6194) +06-02 16:38:25.013 D/StrictMode( 9156): at android.widget.LinearLayout.setChildFrame(LinearLayout.java:1812) +06-02 16:38:25.013 D/StrictMode( 9156): at android.widget.LinearLayout.layoutVertical(LinearLayout.java:1656) +06-02 16:38:25.013 D/StrictMode( 9156): at android.widget.LinearLayout.onLayout(LinearLayout.java:1565) +06-02 16:38:25.013 D/StrictMode( 9156): at android.view.View.layout(View.java:20672) +06-02 16:38:25.013 D/StrictMode( 9156): at android.view.ViewGroup.layout(ViewGroup.java:6194) +06-02 16:38:25.013 D/StrictMode( 9156): at android.widget.FrameLayout.layoutChildren(FrameLayout.java:323) +06-02 16:38:25.013 D/StrictMode( 9156): at android.widget.FrameLayout.onLayout(FrameLayout.java:261) +06-02 16:38:25.013 D/StrictMode( 9156): at android.view.View.layout(View.java:20672) +06-02 16:38:25.013 D/StrictMode( 9156): at android.view.ViewGroup.layout(ViewGroup.java:6194) +06-02 16:38:25.013 D/StrictMode( 9156): at android.widget.LinearLayout.setChildFrame(LinearLayout.java:1812) +06-02 16:38:25.013 D/StrictMode( 9156): at android.widget.LinearLayout.layoutVertical(LinearLayout.java:1656) +06-02 16:38:25.013 D/StrictMode( 9156): at android.widget.LinearLayout.onLayout(LinearLayout.java:1565) +06-02 16:38:25.013 D/StrictMode( 9156): at android.view.View.layout(View.java:20672) +06-02 16:38:25.013 D/StrictMode( 9156): at android.view.ViewGroup.layout(ViewGroup.java:6194) +06-02 16:38:25.013 D/StrictMode( 9156): at android.widget.FrameLayout.layoutChildren(FrameLayout.java:323) +06-02 16:38:25.013 D/StrictMode( 9156): at android.widget.FrameLayout.onLayout(FrameLayout.java:261) +06-02 16:38:25.013 D/StrictMode( 9156): at com.android.internal.policy.DecorView.onLayout(DecorView.java:753) +06-02 16:38:25.013 D/StrictMode( 9156): at android.view.View.layout(View.java:20672) +06-02 16:38:25.013 D/StrictMode( 9156): at android.view.ViewGroup.layout(ViewGroup.java:6194) +06-02 16:38:25.013 D/StrictMode( 9156): at android.view.ViewRootImpl.performLayout(ViewRootImpl.java:2792) +06-02 16:38:25.013 D/StrictMode( 9156): at android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:2319) +06-02 16:38:25.013 D/StrictMode( 9156): at android.view.ViewRootImpl.doTraversal(ViewRootImpl.java:1460) +06-02 16:38:25.013 D/StrictMode( 9156): at android.view.ViewRootImpl$TraversalRunnable.run(ViewRootImpl.java:7183) +06-02 16:38:25.013 D/StrictMode( 9156): at android.view.Choreographer$CallbackRecord.run(Choreographer.java:949) +06-02 16:38:25.013 D/StrictMode( 9156): at android.view.Choreographer.doCallbacks(Choreographer.java:761) +06-02 16:38:25.013 D/StrictMode( 9156): at android.view.Choreographer.doFrame(Choreographer.java:696) +06-02 16:38:25.013 D/StrictMode( 9156): at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:935) +06-02 16:38:25.013 D/StrictMode( 9156): at android.os.Handler.handleCallback(Handler.java:873) +06-02 16:38:25.013 D/StrictMode( 9156): at android.os.Handler.dispatchMessage(Handler.java:99) +06-02 16:38:25.013 D/StrictMode( 9156): at android.os.Looper.loop(Looper.java:193) +06-02 16:38:25.013 D/StrictMode( 9156): at android.app.ActivityThread.main(ActivityThread.java:6669) +06-02 16:38:25.013 D/StrictMode( 9156): at java.lang.r +06-02 16:38:25.013 W/lla.fenix.debu( 9156): Accessing hidden method Landroid/os/Trace;->traceCounter(JLjava/lang/String;I)V (light greylist, reflection) +06-02 16:38:25.016 D/StrictMode( 9156): StrictMode policy violation: android.os.strictmode.NonSdkApiUsedViolation: Landroid/os/Trace;->traceCounter(JLjava/lang/String;I)V +06-02 16:38:25.016 D/StrictMode( 9156): at android.os.StrictMode.lambda$static$1(StrictMode.java:428) +06-02 16:38:25.016 D/StrictMode( 9156): at android.os.-$$Lambda$StrictMode$lu9ekkHJ2HMz0jd3F8K8MnhenxQ.accept(Unknown Source:2) +06-02 16:38:25.016 D/StrictMode( 9156): at java.lang.Class.getDeclaredMethodInternal(Native Method) +06-02 16:38:25.016 D/StrictMode( 9156): at java.lang.Class.getPublicMethodRecursive(Class.java:2075) +06-02 16:38:25.016 D/StrictMode( 9156): at java.lang.Class.getMethod(Class.java:2063) +06-02 16:38:25.016 D/StrictMode( 9156): at java.lang.Class.getMethod(Class.java:1690) +06-02 16:38:25.016 D/StrictMode( 9156): at androidx.core.os.TraceCompat.<clinit>(TraceCompat.java:56) +06-02 16:38:25.016 D/StrictMode( 9156): at androidx.core.os.TraceCompat.beginSection(TraceCompat.java:100) +06-02 16:38:25.016 D/StrictMode( 9156): at androidx.recyclerview.widget.RecyclerView.onLayout(RecyclerView.java:4403) +06-02 16:38:25.016 D/StrictMode( 9156): at android.view.View.layout(View.java:20672) +06-02 16:38:25.016 D/StrictMode( 9156): at android.view.ViewGroup.layout(ViewGroup.java:6194) +06-02 16:38:25.016 D/StrictMode( 9156): at com.google.android.material.appbar.HeaderScrollingViewBehavior.layoutChild(HeaderScrollingViewBehavior.java:148) +06-02 16:38:25.016 D/StrictMode( 9156): at com.google.android.material.appbar.ViewOffsetBehavior.onLayoutChild(ViewOffsetBehavior.java:43) +06-02 16:38:25.016 D/StrictMode( 9156): at com.google.android.material.appbar.AppBarLayout$ScrollingViewBehavior.onLayoutChild(AppBarLayout.java:1892) +06-02 16:38:25.016 D/StrictMode( 9156): at androidx.coordinatorlayout.widget.CoordinatorLayout.onLayout(CoordinatorLayout.java:918) +06-02 16:38:25.016 D/StrictMode( 9156): at android.view.View.layout(View.java:20672) +06-02 16:38:25.016 D/StrictMode( 9156): at android.view.ViewGroup.layout(ViewGroup.java:6194) +06-02 16:38:25.016 D/StrictMode( 9156): at android.widget.FrameLayout.layoutChildren(FrameLayout.java:323) +06-02 16:38:25.016 D/StrictMode( 9156): at android.widget.FrameLayout.onLayout(FrameLayout.java:261) +06-02 16:38:25.016 D/StrictMode( 9156): at android.view.View.layout(View.java:20672) +06-02 16:38:25.016 D/StrictMode( 9156): at android.view.ViewGroup.layout(ViewGroup.java:6194) +06-02 16:38:25.016 D/StrictMode( 9156): at android.widget.LinearLayout.setChildFrame(LinearLayout.java:1812) +06-02 16:38:25.016 D/StrictMode( 9156): at android.widget.LinearLayout.layoutVertical(LinearLayout.java:1656) +06-02 16:38:25.016 D/StrictMode( 9156): at android.widget.LinearLayout.onLayout(LinearLayout.java:1565) +06-02 16:38:25.016 D/StrictMode( 9156): at android.view.View.layout(View.java:20672) +06-02 16:38:25.016 D/StrictMode( 9156): at android.view.ViewGroup.layout(ViewGroup.java:6194) +06-02 16:38:25.016 D/StrictMode( 9156): at android.widget.FrameLayout.layoutChildren(FrameLayout.java:323) +06-02 16:38:25.016 D/StrictMode( 9156): at android.widget.FrameLayout.onLayout(FrameLayout.java:261) +06-02 16:38:25.016 D/StrictMode( 9156): at android.view.View.layout(View.java:20672) +06-02 16:38:25.016 D/StrictMode( 9156): at android.view.ViewGroup.layout(ViewGroup.java:6194) +06-02 16:38:25.016 D/StrictMode( 9156): at android.widget.LinearLayout.setChildFrame(LinearLayout.java:1812) +06-02 16:38:25.016 D/StrictMode( 9156): at android.widget.LinearLayout.layoutVertical(LinearLayout.java:1656) +06-02 16:38:25.016 D/StrictMode( 9156): at android.widget.LinearLayout.onLayout(LinearLayout.java:1565) +06-02 16:38:25.016 D/StrictMode( 9156): at android.view.View.layout(View.java:20672) +06-02 16:38:25.016 D/StrictMode( 9156): at android.view.ViewGroup.layout(ViewGroup.java:6194) +06-02 16:38:25.016 D/StrictMode( 9156): at android.widget.FrameLayout.layoutChildren(FrameLayout.java:323) +06-02 16:38:25.016 D/StrictMode( 9156): at android.widget.FrameLayout.onLayout(FrameLayout.java:261) +06-02 16:38:25.016 D/StrictMode( 9156): at android.view.View.layout(View.java:20672) +06-02 16:38:25.016 D/StrictMode( 9156): at android.view.ViewGroup.layout(ViewGroup.java:6194) +06-02 16:38:25.016 D/StrictMode( 9156): at android.widget.LinearLayout.setChildFrame(LinearLayout.java:1812) +06-02 16:38:25.016 D/StrictMode( 9156): at android.widget.LinearLayout.layoutVertical(LinearLayout.java:1656) +06-02 16:38:25.016 D/StrictMode( 9156): at android.widget.LinearLayout.onLayout(LinearLayout.java:1565) +06-02 16:38:25.016 D/StrictMode( 9156): at android.view.View.layout(View.java:20672) +06-02 16:38:25.016 D/StrictMode( 9156): at android.view.ViewGroup.layout(ViewGroup.java:6194) +06-02 16:38:25.016 D/StrictMode( 9156): at android.widget.FrameLayout.layoutChildren(FrameLayout.java:323) +06-02 16:38:25.016 D/StrictMode( 9156): at android.widget.FrameLayout.onLayout(FrameLayout.java:261) +06-02 16:38:25.016 D/StrictMode( 9156): at com.android.internal.policy.DecorView.onLayout(DecorView.java:753) +06-02 16:38:25.016 D/StrictMode( 9156): at android.view.View.layout(View.java:20672) +06-02 16:38:25.016 D/StrictMode( 9156): at android.view.ViewGroup.layout(ViewGroup.java:6194) +06-02 16:38:25.016 D/StrictMode( 9156): at android.view.ViewRootImpl.performLayout(ViewRootImpl.java:2792) +06-02 16:38:25.016 D/StrictMode( 9156): at android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:2319) +06-02 16:38:25.016 D/StrictMode( 9156): at android.view.ViewRootImpl.doTraversal(ViewRootImpl.java:1460) +06-02 16:38:25.016 D/StrictMode( 9156): at android.view.ViewRootImpl$TraversalRunnable.run(ViewRootImpl.java:7183) +06-02 16:38:25.016 D/StrictMode( 9156): at android.view.Choreographer$CallbackRecord.run(Choreographer.java:949) +06-02 16:38:25.016 D/StrictMode( 9156): at android.view.Choreographer.doCallbacks(Choreographer.java:761) +06-02 16:38:25.016 D/StrictMode( 9156): at android.view.Choreographer.doFrame(Choreographer.java:696) +06-02 16:38:25.016 D/StrictMode( 9156): at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:935) +06-02 16:38:25.016 D/StrictMode( 9156): at android.os.Handler.handleCallback(Handler.java:873) +06-02 16:38:25.016 D/StrictMode( 9156): at android.os.Handler.dispatchMessage(Handler.java:99) +06-02 16:38:25.016 D/StrictMode( 9156): at android.os.Looper.loop(Looper.java:193) +06-02 16:38:25.016 D/StrictMode( 9156): at android.app.ActivityThread.main(ActivityThread.java:6669) +06-02 16:38:25.016 D/StrictMode( 9156): at java.lang.re +06-02 16:38:25.028 D/GeckoNetworkManager( 9156): Incoming event receivedUpdate for state OnWithListeners -> OnWithListeners +06-02 16:38:25.029 D/GeckoNetworkManager( 9156): New network state: UP, WIFI, WIFI +06-02 16:38:25.051 D/EGL_emulation( 9156): eglMakeCurrent: 0xe33868c0: ver 3 0 (tinfo 0xb35fe0f0) +06-02 16:38:25.069 D/GeckoViewStartup( 9156): onEvent GeckoView:SetLocale +06-02 16:38:25.070 D/GeckoViewStartup( 9156): onEvent GeckoView:ResetUserPrefs +06-02 16:38:25.080 I/ActivityManager( 1869): Displayed org.mozilla.fenix.debug/.App: +1s708ms +06-02 16:38:25.082 I/GoogleInputMethod( 1996): onFinishInput() : Dummy InputConnection bound +06-02 16:38:25.082 I/GoogleInputMethod( 1996): onStartInput() : Dummy InputConnection bound +06-02 16:38:25.082 D/glean/PingUploadWorker( 9156): Processing persisted pings at /data/user/0/org.mozilla.fenix.debug/glean_data/pending_pings +06-02 16:38:25.083 D/glean/PingUploadWorker( 9156): Processing ping: df517eba-b482-412e-a056-0d6679710e3c +06-02 16:38:25.088 E/adbd ( 4408): failed to connect to socket 'tcp:2829': Connection refused +06-02 16:38:25.091 D/GeckoViewRemoteDebugger( 9156): onInit +06-02 16:38:25.092 D/GeckoViewConsole( 9156): enabled = false +06-02 16:38:25.092 D/glean/ConceptFetchHttpUploader( 9156): Submitting ping to: https://incoming.telemetry.mozilla.org/submit/org-mozilla-fenix-debug/baseline/1/df517eba-b482-412e-a056-0d6679710e3c +06-02 16:38:25.134 D/GeckoViewStartup( 9156): onEvent GeckoView:SetLocale +06-02 16:38:25.135 D/GeckoViewStartup( 9156): onEvent GeckoView:SetDefaultPrefs +06-02 16:38:25.138 W/SurfaceFlinger( 1728): couldn't log to binary event log: overflow. +06-02 16:38:25.149 D/GeckoViewStartup( 9156): onEvent GeckoView:SetDefaultPrefs +06-02 16:38:25.153 D/StrictMode( 9156): StrictMode policy violation; ~duration=24 ms: android.os.strictmode.DiskReadViolation +06-02 16:38:25.153 D/StrictMode( 9156): at android.os.StrictMode$AndroidBlockGuardPolicy.onReadFromDisk(StrictMode.java:1504) +06-02 16:38:25.153 D/StrictMode( 9156): at java.io.UnixFileSystem.checkAccess(UnixFileSystem.java:251) +06-02 16:38:25.153 D/StrictMode( 9156): at java.io.File.exists(File.java:815) +06-02 16:38:25.153 D/StrictMode( 9156): at android.app.ContextImpl.ensurePrivateDirExists(ContextImpl.java:605) +06-02 16:38:25.153 D/StrictMode( 9156): at android.app.ContextImpl.ensurePrivateDirExists(ContextImpl.java:596) +06-02 16:38:25.153 D/StrictMode( 9156): at android.app.ContextImpl.getFilesDir(ContextImpl.java:641) +06-02 16:38:25.153 D/StrictMode( 9156): at android.content.ContextWrapper.getFilesDir(ContextWrapper.java:239) +06-02 16:38:25.153 D/StrictMode( 9156): at mozilla.components.feature.tab.collections.TabCollectionStorage.<init>(TabCollectionStorage.kt:29) +06-02 16:38:25.153 D/StrictMode( 9156): at org.mozilla.fenix.components.TabCollectionStorage$collectionStorage$2.invoke(TabCollectionStorage.kt:52) +06-02 16:38:25.153 D/StrictMode( 9156): at org.mozilla.fenix.components.TabCollectionStorage$collectionStorage$2.invoke(TabCollectionStorage.kt:23) +06-02 16:38:25.153 D/StrictMode( 9156): at kotlin.SynchronizedLazyImpl.getValue(LazyJVM.kt:74) +06-02 16:38:25.153 D/StrictMode( 9156): at org.mozilla.fenix.components.TabCollectionStorage.getCollectionStorage(Unknown Source:7) +06-02 16:38:25.153 D/StrictMode( 9156): at org.mozilla.fenix.components.TabCollectionStorage.getCollections(TabCollectionStorage.kt:70) +06-02 16:38:25.153 D/StrictMode( 9156): at org.mozilla.fenix.components.TabCollectionStorage.getCollections$default(TabCollectionStorage.kt:69) +06-02 16:38:25.153 D/StrictMode( 9156): at org.mozilla.fenix.home.HomeFragment.subscribeToTabCollections(HomeFragment.kt:750) +06-02 16:38:25.153 D/StrictMode( 9156): at org.mozilla.fenix.home.HomeFragment.onStart(HomeFragment.kt:404) +06-02 16:38:25.153 D/StrictMode( 9156): at androidx.fragment.app.Fragment.performStart(Fragment.java:2730) +06-02 16:38:25.153 D/StrictMode( 9156): at androidx.fragment.app.FragmentStateManager.start(FragmentStateManager.java:365) +06-02 16:38:25.153 D/StrictMode( 9156): at androidx.fragment.app.FragmentManager.moveToState(FragmentManager.java:1194) +06-02 16:38:25.153 D/StrictMode( 9156): at androidx.fragment.app.FragmentManager.moveToState(FragmentManager.java:1356) +06-02 16:38:25.153 D/StrictMode( 9156): at androidx.fragment.app.FragmentManager.moveFragmentToExpectedState(FragmentManager.java:1434) +06-02 16:38:25.153 D/StrictMode( 9156): at androidx.fragment.app.FragmentManager.moveToState(FragmentManager.java:1497) +06-02 16:38:25.153 D/StrictMode( 9156): at androidx.fragment.app.FragmentManager.completeExecute(FragmentManager.java:2125) +06-02 16:38:25.153 D/StrictMode( 9156): at androidx.fragment.app.FragmentManager$StartEnterTransitionListener.completeTransaction(FragmentManager.java:3022) +06-02 16:38:25.153 D/StrictMode( 9156): at androidx.fragment.app.FragmentManager.executePostponedTransaction(FragmentManager.java:1895) +06-02 16:38:25.153 D/StrictMode( 9156): at androidx.fragment.app.FragmentManager.ensureExecReady(FragmentManager.java:1803) +06-02 16:38:25.153 D/StrictMode( 9156): at androidx.fragment.app.FragmentManager.execPendingActions(FragmentManager.java:1843) +06-02 16:38:25.153 D/StrictMode( 9156): at androidx.fragment.app.FragmentManager$4.run(FragmentManager.java:413) +06-02 16:38:25.153 D/StrictMode( 9156): at android.os.Handler.handleCallback(Handler.java:873) +06-02 16:38:25.153 D/StrictMode( 9156): at android.os.Handler.dispatchMessage(Handler.java:99) +06-02 16:38:25.153 D/StrictMode( 9156): at android.os.Looper.loop(Looper.java:193) +06-02 16:38:25.153 D/StrictMode( 9156): at android.app.ActivityThread.main(ActivityThread.java:6669) +06-02 16:38:25.153 D/StrictMode( 9156): at java.lang.reflect.Method.invoke(Native Method) +06-02 16:38:25.153 D/StrictMode( 9156): at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:493) +06-02 16:38:25.153 D/StrictMode( 9156): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:858) +06-02 16:38:25.159 D/GeckoViewStartup( 9156): onEvent GeckoView:SetDefaultPrefs +06-02 16:38:25.184 I/chatty ( 9156): uid=10099(org.mozilla.fenix.debug) identical 1 line +06-02 16:38:25.187 D/GeckoViewStartup( 9156): onEvent GeckoView:SetDefaultPrefs +06-02 16:38:25.190 E/adbd ( 4408): failed to connect to socket 'tcp:2829': Connection refused +06-02 16:38:25.209 D/GeckoViewStartup( 9156): onEvent GeckoView:SetDefaultPrefs +06-02 16:38:25.230 W/ctxmgr ( 2473): [AclManager]No 2 for (accnt=account#-517948760#, com.google.android.gms(10008):IndoorOutdoorProducer, vrsn=13280000, 0, 3pPkg = null , 3pMdlId = null , pid = 2473). Was: 3 for 57, account#-517948760# +06-02 16:38:25.244 D/gralloc_ranchu( 1869): gralloc_unregister_buffer: exiting HostConnection (is buffer-handling thread) +06-02 16:38:25.245 D/ ( 1869): HostConnection::get() New Host Connection established 0xcb8a3340, tid 1930 +06-02 16:38:25.246 D/gralloc_ranchu( 1869): gralloc_unregister_buffer: exiting HostConnection (is buffer-handling thread) +06-02 16:38:25.247 W/SurfaceFlinger( 1728): Attempting to set client state on removed layer: Splash Screen org.mozilla.fenix.debug#0 +06-02 16:38:25.247 W/SurfaceFlinger( 1728): Attempting to destroy on removed layer: Splash Screen org.mozilla.fenix.debug#0 +06-02 16:38:25.250 I/PBSessionCacheImpl( 2402): Deleted sessionId[359508686711] from persistence. +06-02 16:38:25.253 W/SearchService( 2402): Abort, client detached. +06-02 16:38:25.259 D/gralloc_ranchu( 1897): gralloc_unregister_buffer: exiting HostConnection (is buffer-handling thread) +06-02 16:38:25.260 D/ ( 1897): HostConnection::get() New Host Connection established 0xed7c3080, tid 1897 +06-02 16:38:25.260 D/gralloc_ranchu( 1897): gralloc_unregister_buffer: exiting HostConnection (is buffer-handling thread) +06-02 16:38:25.265 D/ ( 1897): HostConnection::get() New Host Connection established 0xed7c3080, tid 1897 +06-02 16:38:25.293 E/adbd ( 4408): failed to connect to socket 'tcp:2829': Connection refused +06-02 16:38:25.302 D/GeckoViewStartup( 9156): onEvent GeckoView:SetDefaultPrefs +06-02 16:38:25.318 I/chatty ( 9156): uid=10099(org.mozilla.fenix.debug) identical 3 lines +06-02 16:38:25.319 D/GeckoViewStartup( 9156): onEvent GeckoView:SetDefaultPrefs +06-02 16:38:25.324 D/GeckoViewConsole( 9156): onEvent GeckoView:RegisterWebExtension {"allowContentMessaging":true,"id":"webcompat@mozilla.com","locationUri":"resource://android/assets/extensions/webcompat/"} +06-02 16:38:25.330 D/GeckoViewConsole( 9156): onEvent GeckoView:WebExtension:List null +06-02 16:38:25.331 D/GeckoViewConsole( 9156): onEvent GeckoView:RegisterWebExtension {"allowContentMessaging":true,"id":"mozacBrowserIcons","locationUri":"resource://android/assets/extensions/browser-icons/"} +06-02 16:38:25.332 D/GeckoViewConsole( 9156): onEvent GeckoView:RegisterWebExtension {"allowContentMessaging":true,"id":"mozacBrowserAds","locationUri":"resource://android/assets/extensions/ads/"} +06-02 16:38:25.333 D/GeckoViewConsole( 9156): onEvent GeckoView:RegisterWebExtension {"allowContentMessaging":true,"id":"BrowserCookiesExtension","locationUri":"resource://android/assets/extensions/cookies/"} +06-02 16:38:25.364 E/BatteryExternalStatsWorker( 1869): no controller energy info supplied for wifi +06-02 16:38:25.396 E/adbd ( 4408): failed to connect to socket 'tcp:2829': Connection refused +06-02 16:38:25.415 I/ActivityManager( 1869): Fully drawn org.mozilla.fenix.debug/.App: +2s48ms +06-02 16:38:25.456 I/DefaultSupportedAddonsChecker( 9156): Register check for new supported add-ons +06-02 16:38:25.478 I/SupportedAddonsWorker( 9156): Trying to check for new supported add-ons +06-02 16:38:25.501 E/adbd ( 4408): failed to connect to socket 'tcp:2829': Connection refused +06-02 16:38:25.554 D/App ( 9156): Installed browser-icons extension +06-02 16:38:25.596 D/ ( 9156): HostConnection::get() New Host Connection established 0xcb89ecc0, tid 9185 +06-02 16:38:25.597 E/EGL_emulation( 9156): tid 9185: eglBindAPI(1259): error 0x300c (EGL_BAD_PARAMETER) +06-02 16:38:25.599 D/EGL_emulation( 9156): eglCreateContext: 0xae25e060: maj 3 min 0 rcv 3 +06-02 16:38:25.602 D/EGL_emulation( 9156): eglMakeCurrent: 0xae25e060: ver 3 0 (tinfo 0xaf7eb740) +06-02 16:38:25.604 E/adbd ( 4408): failed to connect to socket 'tcp:2829': Connection refused +06-02 16:38:25.656 E/GeckoConsole( 9156): [JavaScript Error: "NetworkError when attempting to fetch resource."] +06-02 16:38:25.656 E/GeckoConsole( 9156): get@resource://services-settings/RemoteSettingsClient.jsm:350:12 +06-02 16:38:25.710 E/adbd ( 4408): failed to connect to socket 'tcp:2829': Connection refused +06-02 16:38:25.765 D/glean/ConceptFetchHttpUploader( 9156): Ping successfully sent (200) +06-02 16:38:25.766 D/glean/PingUploadWorker( 9156): df517eba-b482-412e-a056-0d6679710e3c was deleted: true +06-02 16:38:25.767 I/WM-WorkerWrapper( 9156): Worker result SUCCESS for Work [ id=0ef26001-ff6c-4e5f-aa78-4728cca0a169, tags={ mozilla.telemetry.glean.scheduler.PingUploadWorker, mozac_service_glean_ping_upload_worker } ] +06-02 16:38:25.786 W/GeckoConsole( 9156): [JavaScript Warning: "Security wrapper denied access to property "ONE_QUARTER" on privileged Javascript object. Support for exposing privileged objects to untrusted content via __exposedProps__ has been removed - use WebIDL bindings or Components.utils.cloneInto instead. Note that only the first denied property access from a given global object will be reported." {file: "moz-extension://0b97d1ec-4efa-4cee-bc30-34776dc45bb8/data/picture_in_picture_overrides.js" line: 26}] +06-02 16:38:25.805 D/BrowserIcons( 9156): Loaded icon (source = DOWNLOAD): https://www.wikipedia.org/ +06-02 16:38:25.811 D/BrowserIcons( 9156): Loaded icon (source = DOWNLOAD): https://www.youtube.com/ +06-02 16:38:25.814 E/adbd ( 4408): failed to connect to socket 'tcp:2829': Connection refused +06-02 16:38:25.856 D/mozac-webcompat( 9156): Installed WebCompat webextension: webcompat@mozilla.com +06-02 16:38:25.918 E/adbd ( 4408): failed to connect to socket 'tcp:2829': Connection refused +06-02 16:38:25.935 I/Gecko ( 9156): 1591130305935 Marionette INFO Listening on port 2829 +06-02 16:38:25.949 E/GeckoConsole( 9156): [JavaScript Error: "can't access property "startupData", state is undefined" {file: "resource://gre/modules/addons/XPIProvider.jsm" line: 3079}] +06-02 16:38:25.949 E/GeckoConsole( 9156): setStartupData@resource://gre/modules/addons/XPIProvider.jsm:3079:5 +06-02 16:38:25.949 E/GeckoConsole( 9156): saveStartupData@resource://gre/modules/Extension.jsm:2035:17 +06-02 16:38:25.949 E/GeckoConsole( 9156): _writePersistentListeners@resource://gre/modules/ExtensionCommon.jsm:2271:15 +06-02 16:38:25.949 E/GeckoConsole( 9156): savePersistentListener@resource://gre/modules/ExtensionCommon.jsm:2362:18 +06-02 16:38:25.949 E/GeckoConsole( 9156): addListener@resource://gre/modules/ExtensionCommon.jsm:2495:20 +06-02 16:38:25.949 E/GeckoConsole( 9156): addListener@resource://gre/modules/ExtensionCommon.jsm:2550:38 +06-02 16:38:25.949 E/GeckoConsole( 9156): recvAddListener@resource://gre/modules/ExtensionParent.jsm:1079:13 +06-02 16:38:25.977 I/chatty ( 9156): uid=10099(org.mozilla.fenix.debug) identical 24 lines +06-02 16:38:26.006 E/GeckoConsole( 9156): [JavaScript Error: "can't access property "startupData", state is undefined" {file: "resource://gre/modules/addons/XPIProvider.jsm" line: 3079}] +06-02 16:38:26.006 E/GeckoConsole( 9156): setStartupData@resource://gre/modules/addons/XPIProvider.jsm:3079:5 +06-02 16:38:26.006 E/GeckoConsole( 9156): saveStartupData@resource://gre/modules/Extension.jsm:2035:17 +06-02 16:38:26.006 E/GeckoConsole( 9156): _writePersistentListeners@resource://gre/modules/ExtensionCommon.jsm:2271:15 +06-02 16:38:26.006 E/GeckoConsole( 9156): savePersistentListener@resource://gre/modules/ExtensionCommon.jsm:2362:18 +06-02 16:38:26.006 E/GeckoConsole( 9156): addListener@resource://gre/modules/ExtensionCommon.jsm:2495:20 +06-02 16:38:26.006 E/GeckoConsole( 9156): addListener@resource://gre/modules/ExtensionCommon.jsm:2550:38 +06-02 16:38:26.006 E/GeckoConsole( 9156): recvAddListener@resource://gre/modules/ExtensionParent.jsm:1079:13 +06-02 16:38:26.812 I/WM-WorkerWrapper( 9156): Worker result SUCCESS for Work [ id=460bd936-fd2a-47c2-be1a-4fee8bde7995, tags={ mozilla.components.feature.addons.migration.DefaultSupportedAddonsChecker.periodicWork, mozilla.components.feature.addons.migration.SupportedAddonsWorker } ] +06-02 16:38:28.256 I/EventLogSendingHelper( 2402): Sending log events. +06-02 16:38:30.021 I/FenixApplication( 9156): Kicking-off account manager... +06-02 16:38:30.022 I/FenixApplication( 9156): Running post-visual completeness tasks... +06-02 16:38:30.022 I/FenixApplication( 9156): Storage initialization... +06-02 16:38:30.024 I/PlacesHistoryStorage( 9156): Warming up places storage... +06-02 16:38:30.027 D/RustNativeSupport( 9156): findMegazordLibraryName(places, 0.59.0 +06-02 16:38:30.027 D/RustNativeSupport( 9156): lib in use: none +06-02 16:38:30.027 D/RustNativeSupport( 9156): lib configured: megazord +06-02 16:38:30.027 D/RustNativeSupport( 9156): lib version configured: 0.59.0 +06-02 16:38:30.027 D/RustNativeSupport( 9156): settled on megazord +06-02 16:38:30.028 I/FirefoxAccountStateMachine( 9156): Enabling/updating sync with a new SyncConfig: SyncConfig(supportedEngines=[mozilla.components.service.fxa.SyncEngine$History@623799a, mozilla.components.service.fxa.SyncEngine$Bookmarks@343e2cb, mozilla.components.service.fxa.SyncEngine$Passwords@7039aa8], syncPeriodInMinutes=240) +06-02 16:38:30.029 D/places_ffi( 9156): places_api_new +06-02 16:38:30.029 I/BgSyncManager( 9156): Periodic syncing enabled at a 240 interval +06-02 16:38:30.030 I/FirefoxAccountStateMachine( 9156): Sync is enabled +06-02 16:38:30.032 I/FenixApplication( 9156): 'Kicking-off account manager' took 10 ms +06-02 16:38:30.033 I/FirefoxAccountStateMachine( 9156): Processing event Init for state Start. Next state is Start +06-02 16:38:30.060 I/keystore( 1734): del USRPKEY_org.mozilla.fenix.debug 10099 +06-02 16:38:30.061 I/keystore( 1734): del USRCERT_org.mozilla.fenix.debug 10099 +06-02 16:38:30.061 I/keystore( 1734): del CACERT_org.mozilla.fenix.debug 10099 +06-02 16:38:30.085 D/places::db::schema( 9156): Creating schema +06-02 16:38:30.085 I/FirefoxAccountStateMachine( 9156): Ran 'Init' side-effects for state Start, got successive event AccountNotFound +06-02 16:38:30.085 I/FirefoxAccountStateMachine( 9156): Processing event AccountNotFound for state Start. Next state is NotAuthenticated +06-02 16:38:30.089 D/RustNativeSupport( 9156): findMegazordLibraryName(fxaclient, 0.59.0 +06-02 16:38:30.089 D/RustNativeSupport( 9156): lib in use: none +06-02 16:38:30.089 D/RustNativeSupport( 9156): lib configured: megazord +06-02 16:38:30.089 D/RustNativeSupport( 9156): lib version configured: 0.59.0 +06-02 16:38:30.089 D/RustNativeSupport( 9156): settled on megazord +06-02 16:38:30.090 D/fxaclient_ffi( 9156): fxa_new +06-02 16:38:30.092 W/FirefoxAccountStateMachine( 9156): Got invalid event Init for state NotAuthenticated. +06-02 16:38:30.112 D/sql_support::conn_ext( 9156): Transaction commited after 27.875555ms +06-02 16:38:30.112 D/places_ffi( 9156): places_connection_new +06-02 16:38:30.116 D/places_ffi( 9156): places_connection_new +06-02 16:38:30.117 I/PlacesHistoryStorage( 9156): 'Warming up places storage' took 92 ms +06-02 16:38:30.118 I/PlacesBookmarksStorage( 9156): Warming up places storage... +06-02 16:38:30.118 D/places_ffi( 9156): places_connection_new +06-02 16:38:30.152 I/PlacesBookmarksStorage( 9156): 'Warming up places storage' took 33 ms +06-02 16:38:30.175 I/keystore( 1734): 1 0 +06-02 16:38:30.182 I/SyncableLoginsStorage( 9156): Warming up storage... +06-02 16:38:30.190 D/RustNativeSupport( 9156): findMegazordLibraryName(logins, 0.59.0 +06-02 16:38:30.190 D/RustNativeSupport( 9156): lib in use: none +06-02 16:38:30.190 D/RustNativeSupport( 9156): lib configured: megazord +06-02 16:38:30.190 D/RustNativeSupport( 9156): lib version configured: 0.59.0 +06-02 16:38:30.190 D/RustNativeSupport( 9156): settled on megazord +06-02 16:38:30.192 D/logins_ffi( 9156): sync15_passwords_state_new +06-02 16:38:30.195 D/logins::schema( 9156): Creating schema +06-02 16:38:30.242 W/ctxmgr ( 2473): [AclManager]No 2 for (accnt=account#-517948760#, com.google.android.gms(10008):IndoorOutdoorProducer, vrsn=13280000, 0, 3pPkg = null , 3pMdlId = null , pid = 2473). Was: 3 for 57, account#-517948760# +06-02 16:38:30.288 I/SyncableLoginsStorage( 9156): 'Warming up storage' took 105 ms +06-02 16:38:30.288 I/FenixApplication( 9156): 'Storage initialization' took 265 ms +06-02 16:38:30.301 D/EGL_emulation( 2002): eglMakeCurrent: 0xe3385900: ver 3 0 (tinfo 0xe33839b0) +06-02 16:38:33.287 I/EventLogSendingHelper( 2402): Sending log events. +06-02 16:38:35.144 E/memtrack( 1869): Couldn't load memtrack module +06-02 16:38:35.144 W/android.os.Debug( 1869): failed to get memory consumption info: -1 +06-02 16:38:35.160 E/memtrack( 1869): Couldn't load memtrack module +06-02 16:38:35.160 W/android.os.Debug( 1869): failed to get memory consumption info: -1 +06-02 16:38:35.258 W/ctxmgr ( 2473): [AclManager]No 2 for (accnt=account#-517948760#, com.google.android.gms(10008):IndoorOutdoorProducer, vrsn=13280000, 0, 3pPkg = null , 3pMdlId = null , pid = 2473). Was: 3 for 57, account#-517948760# +06-02 16:38:40.266 W/ctxmgr ( 2473): [AclManager]No 2 for (accnt=account#-517948760#, com.google.android.gms(10008):IndoorOutdoorProducer, vrsn=13280000, 0, 3pPkg = null , 3pMdlId = null , pid = 2473). Was: 3 for 57, account#-517948760# +06-02 16:38:42.115 E/netmgr ( 1826): Failed to open QEMU pipe 'qemud:network': Invalid argument +06-02 16:38:42.116 E/netmgr ( 1826): WifiForwarder unable to open QEMU pipe: Invalid argument +06-02 16:38:42.976 I/ActivityManager( 1869): Force stopping org.mozilla.fenix.debug appid=10099 user=0: clear data +06-02 16:38:42.976 I/ActivityManager( 1869): Killing 9156:org.mozilla.fenix.debug/u0a99 (adj 0): stop org.mozilla.fenix.debug +06-02 16:38:42.978 W/libprocessgroup( 1869): kill(-9156, 9) failed: No such process +06-02 16:38:42.982 W/ActivityManager( 1869): Force removing ActivityRecord{39437d1 u0 org.mozilla.fenix.debug/.App t389}: app died, no saved state +06-02 16:38:42.984 I/ServiceChildProcess( 9201): Service has been unbound. Stopping. +06-02 16:38:42.996 I/ActivityManager( 1869): Killing 9201:org.mozilla.fenix.debug:tab0/u0a99 (adj 0): stop org.mozilla.fenix.debug +06-02 16:38:43.001 D/ZenLog ( 1869): config: removeAutomaticZenRules,ZenModeConfig[user=0,allowAlarms=true,allowMedia=true,allowSystem=false,allowReminders=false,allowEvents=false,allowCalls=true,allowRepeatCallers=true,allowMessages=false,allowCallsFrom=stars,allowMessagesFrom=contacts,suppressedVisualEffects=511,areChannelsBypassingDnd=false,automaticRules={EVENTS_DEFAULT_RULE=ZenRule[enabled=false,snoozing=false,name=Event,zenMode=ZEN_MODE_IMPORTANT_INTERRUPTIONS,conditionId=condition://android/event?userId=-10000&calendar=&reply=1,condition=Condition[id=condition://android/event?userId=-10000&calendar=&reply=1,summary=...,line1=...,line2=...,icon=0,state=STATE_FALSE,flags=2],component=ComponentInfo{android/com.android.server.notification.EventConditionProvider},id=EVENTS_DEFAULT_RULE,creationTime=1587308662810,enabler=null], EVERY_NIGHT_DEFAULT_RULE=ZenRule[enabled=false,snoozing=false,name=Sleeping,zenMode=ZEN_MODE_IMPORTANT_INTERRUPTIONS,conditionId=condition://android/schedule?days=1.2.3.4.5.6.7&start=22.0&end=7.0&exitAtAlarm=true,condition=Condition[id=condition://android/schedule?days=1.2.3.4.5.6.7&start=22.0&end=7.0&exitAtAlarm=true,summary=...,line1=...,line2=...,icon=0,state=STATE_FALSE,flags=2],component=ComponentInfo{android/com.android.server.notification.ScheduleConditionProvider},id=EVERY_NIGHT_DEFAULT_RULE,creationTime=1587308662810,enabler=null]},manualRule=null],Diff[] +06-02 16:38:43.001 I/ConditionProviders( 1869): Disallowing condition provider org.mozilla.fenix.debug +06-02 16:38:43.001 D/ZenLog ( 1869): set_zen_mode: off,removeAutomaticZenRules +06-02 16:38:43.002 E/memtrack( 1869): Couldn't load memtrack module +06-02 16:38:43.002 W/android.os.Debug( 1869): failed to get memory consumption info: -1 +06-02 16:38:43.006 I/ActivityManager( 1869): Force stopping org.mozilla.fenix.debug appid=10099 user=-1: clearApplicationUserData +06-02 16:38:43.009 D/gralloc_ranchu( 1897): gralloc_unregister_buffer: exiting HostConnection (is buffer-handling thread) +06-02 16:38:43.010 D/ ( 1897): HostConnection::get() New Host Connection established 0xed7c3080, tid 1897 +06-02 16:38:43.010 D/gralloc_ranchu( 1897): gralloc_unregister_buffer: exiting HostConnection (is buffer-handling thread) +06-02 16:38:43.010 D/ ( 1897): HostConnection::get() New Host Connection established 0xed7c3080, tid 1897 +06-02 16:38:43.010 D/gralloc_ranchu( 1897): gralloc_unregister_buffer: exiting HostConnection (is buffer-handling thread) +06-02 16:38:43.010 D/ ( 1897): HostConnection::get() New Host Connection established 0xed7c3080, tid 1897 +06-02 16:38:43.010 D/gralloc_ranchu( 1897): gralloc_unregister_buffer: exiting HostConnection (is buffer-handling thread) +06-02 16:38:43.011 D/ ( 1897): HostConnection::get() New Host Connection established 0xed7c3080, tid 1897 +06-02 16:38:43.011 D/gralloc_ranchu( 1897): gralloc_unregister_buffer: exiting HostConnection (is buffer-handling thread) +06-02 16:38:43.011 D/ ( 1897): HostConnection::get() New Host Connection established 0xed7c3080, tid 1897 +06-02 16:38:43.011 D/gralloc_ranchu( 1897): gralloc_unregister_buffer: exiting HostConnection (is buffer-handling thread) +06-02 16:38:43.016 D/ ( 1897): HostConnection::get() New Host Connection established 0xed7c3080, tid 1897 +06-02 16:38:43.023 W/libprocessgroup( 1869): kill(-9156, 9) failed: No such process +06-02 16:38:43.025 D/gralloc_ranchu( 1619): gralloc_alloc: Creating ashmem region of size 9334784 +06-02 16:38:43.041 D/gralloc_ranchu( 1619): gralloc_alloc: Creating ashmem region of size 9334784 +06-02 16:38:43.045 I/keystore( 1734): clear_uid 10099 +06-02 16:38:43.049 D/gralloc_ranchu( 1619): gralloc_alloc: Creating ashmem region of size 9334784 +06-02 16:38:43.057 D/SurfaceFlinger( 1728): duplicate layer name: changing com.google.android.apps.nexuslauncher/com.google.android.apps.nexuslauncher.NexusLauncherActivity to com.google.android.apps.nexuslauncher/com.google.android.apps.nexuslauncher.NexusLauncherActivity#1 +06-02 16:38:43.062 D/gralloc_ranchu( 1619): gralloc_alloc: Creating ashmem region of size 9334784 +06-02 16:38:43.069 D/ ( 1728): HostConnection::get() New Host Connection established 0xe9a181c0, tid 1752 +06-02 16:38:43.069 D/gralloc_ranchu( 1619): gralloc_alloc: Creating ashmem region of size 9334784 +06-02 16:38:43.070 W/libprocessgroup( 1869): kill(-9156, 9) failed: No such process +06-02 16:38:43.071 E/system_server( 1869): No package ID 7f found for ID 0x7f0801a6. +06-02 16:38:43.071 E/system_server( 1869): No package ID 7f found for ID 0x7f13011d. +06-02 16:38:43.071 E/system_server( 1869): No package ID 7f found for ID 0x7f13011d. +06-02 16:38:43.071 E/system_server( 1869): No package ID 7f found for ID 0x7f0801a4. +06-02 16:38:43.071 E/system_server( 1869): No package ID 7f found for ID 0x7f13011c. +06-02 16:38:43.071 E/system_server( 1869): No package ID 7f found for ID 0x7f13011c. +06-02 16:38:43.073 I/GeofencerStateMachine( 2473): removeGeofences: removeRequest=RemoveGeofencingRequest[REMOVE_ALL packageName=org.mozilla.fenix.debug] +06-02 16:38:43.079 D/gralloc_ranchu( 1619): gralloc_alloc: Creating ashmem region of size 9334784 +06-02 16:38:43.081 I/Zygote ( 1729): Process 9201 exited due to signal (9) +06-02 16:38:43.087 D/CarrierSvcBindHelper( 2121): No carrier app for: 0 +06-02 16:38:43.096 W/InputMethodManagerService( 1869): Got RemoteException sending setActive(false) notification to pid 9156 uid 10099 +06-02 16:38:43.101 D/EGL_emulation( 2488): eglMakeCurrent: 0xe3385ae0: ver 3 0 (tinfo 0xe33838f0) +06-02 16:38:43.101 I/GoogleInputMethod( 1996): onFinishInput() : Dummy InputConnection bound +06-02 16:38:43.102 I/GoogleInputMethod( 1996): onStartInput() : Dummy InputConnection bound +06-02 16:38:43.103 D/EGL_emulation( 2402): eglMakeCurrent: 0xe1911c80: ver 3 0 (tinfo 0xc8cbe260) +06-02 16:38:43.104 W/InputDispatcher( 1869): channel '99fbb04 org.mozilla.fenix.debug/org.mozilla.fenix.debug.App (server)' ~ Consumer closed input channel or an error occurred. events=0x9 +06-02 16:38:43.104 E/InputDispatcher( 1869): channel '99fbb04 org.mozilla.fenix.debug/org.mozilla.fenix.debug.App (server)' ~ Channel is unrecoverably broken and will be disposed! +06-02 16:38:43.110 D/ ( 1728): HostConnection::get() New Host Connection established 0xe7e991c0, tid 2107 +06-02 16:38:43.110 I/WindowManager( 1869): WIN DEATH: Window{99fbb04 u0 org.mozilla.fenix.debug/org.mozilla.fenix.debug.App} +06-02 16:38:43.110 W/InputDispatcher( 1869): Attempted to unregister already unregistered input channel '99fbb04 org.mozilla.fenix.debug/org.mozilla.fenix.debug.App (server)' +06-02 16:38:43.112 W/libprocessgroup( 1869): kill(-9156, 9) failed: No such process +06-02 16:38:43.112 D/gralloc_ranchu( 1728): gralloc_unregister_buffer: exiting HostConnection (is buffer-handling thread) +06-02 16:38:43.112 D/ ( 1728): HostConnection::get() New Host Connection established 0xe7e991c0, tid 2107 +06-02 16:38:43.113 D/gralloc_ranchu( 1728): gralloc_unregister_buffer: exiting HostConnection (is buffer-handling thread) +06-02 16:38:43.113 D/ ( 1728): HostConnection::get() New Host Connection established 0xe90c9100, tid 2107 +06-02 16:38:43.113 W/ActivityManager( 1869): setHasOverlayUi called on unknown pid: 9156 +06-02 16:38:43.113 D/gralloc_ranchu( 1728): gralloc_unregister_buffer: exiting HostConnection (is buffer-handling thread) +06-02 16:38:43.113 D/ ( 1728): HostConnection::get() New Host Connection established 0xe90c9100, tid 2107 +06-02 16:38:43.113 D/gralloc_ranchu( 1728): gralloc_unregister_buffer: exiting HostConnection (is buffer-handling thread) +06-02 16:38:43.118 W/SurfaceFlinger( 1728): Attempting to destroy on removed layer: AppWindowToken{97cb537 token=Token{bc3a236 ActivityRecord{39437d1 u0 org.mozilla.fenix.debug/.App t389}}}#0 +06-02 16:38:43.118 W/SurfaceFlinger( 1728): Attempting to destroy on removed layer: Task=389#0 +06-02 16:38:43.120 I/Zygote ( 1729): Process 9156 exited due to signal (9) +06-02 16:38:43.124 D/vold ( 1558): Remounting 10099 as mode read +06-02 16:38:43.132 D/EGL_emulation( 2002): eglMakeCurrent: 0xe3385900: ver 3 0 (tinfo 0xe33839b0) +06-02 16:38:43.144 I/LocationSettingsChecker( 2660): Removing dialog suppression flag for package org.mozilla.fenix.debug +06-02 16:38:43.145 W/SessionLifecycleManager( 2402): Handover failed. Creating new session controller. +06-02 16:38:43.148 D/EGL_emulation( 2002): eglMakeCurrent: 0xe3385900: ver 3 0 (tinfo 0xe33839b0) +06-02 16:38:43.149 W/libprocessgroup( 1869): kill(-9156, 9) failed: No such process +06-02 16:38:43.149 I/libprocessgroup( 1869): Successfully killed process cgroup uid 10099 pid 9156 in 170ms +06-02 16:38:43.152 D/EGL_emulation( 2002): eglMakeCurrent: 0xe3385900: ver 3 0 (tinfo 0xe33839b0) +06-02 16:38:43.157 I/ActivityManager( 1869): Force stopping org.mozilla.fenix.debug appid=10099 user=0: from pid 9326 +06-02 16:38:43.160 D/CarrierSvcBindHelper( 2121): No carrier app for: 0 +06-02 16:38:43.160 W/libprocessgroup( 1869): kill(-9201, 9) failed: No such process +06-02 16:38:43.160 I/libprocessgroup( 1869): Successfully killed process cgroup uid 10099 pid 9201 in 0ms +06-02 16:38:43.168 I/Icing ( 2660): doRemovePackageData org.mozilla.fenix.debug +06-02 16:38:43.169 D/EGL_emulation( 2002): eglMakeCurrent: 0xe3385900: ver 3 0 (tinfo 0xe33839b0) +06-02 16:38:43.177 D/EGL_emulation( 2002): eglMakeCurrent: 0xe3385900: ver 3 0 (tinfo 0xe33839b0) +06-02 16:38:43.179 I/ProvidersCache( 4535): Provider returned no roots. Possibly naughty: com.google.android.apps.docs.storage +06-02 16:38:43.187 D/EGL_emulation( 2002): eglMakeCurrent: 0xe3385900: ver 3 0 (tinfo 0xe33839b0) +06-02 16:38:43.195 D/vold ( 1558): Remounting 10099 as mode write +06-02 16:38:43.191 D/EGL_emulation( 2002): eglMakeCurrent: 0xe3385900: ver 3 0 (tinfo 0xe33839b0) +06-02 16:38:43.203 D/EGL_emulation( 2002): eglMakeCurrent: 0xe3385900: ver 3 0 (tinfo 0xe33839b0) +06-02 16:38:43.204 W/LocationOracle( 2402): No location history returned by ContextManager +06-02 16:38:43.207 D/EGL_emulation( 2002): eglMakeCurrent: 0xe3385900: ver 3 0 (tinfo 0xe33839b0) +06-02 16:38:43.228 V/SettingsProvider( 1869): Notifying for 0: content://settings/global/debug_app +06-02 16:38:43.239 I/chatty ( 2002): uid=10024(com.android.systemui) RenderThread identical 3 lines +06-02 16:38:43.243 D/EGL_emulation( 2002): eglMakeCurrent: 0xe3385900: ver 3 0 (tinfo 0xe33839b0) +06-02 16:38:43.257 W/ctxmgr ( 2473): [AclManager]No 3 for (accnt=account#-517948760#, com.google.android.gms(10008):UserVelocityProducer, vrsn=13280022, 0, 3pPkg = null , 3pMdlId = null , pid = 2473). Was: 3 for 1, account#-517948760# +06-02 16:38:43.269 D/EGL_emulation( 2002): eglMakeCurrent: 0xe3385900: ver 3 0 (tinfo 0xe33839b0) +06-02 16:38:43.274 I/MicroDetectionWorker( 2402): #startMicroDetector [speakerMode: 0] +06-02 16:38:43.275 I/AudioController( 2402): Using mInputStreamFactoryBuilder +06-02 16:38:43.275 I/AudioController( 2402): Created new AudioSource +06-02 16:38:43.275 I/MicroDetectionWorker( 2402): onReady +06-02 16:38:43.276 D/EGL_emulation( 2002): eglMakeCurrent: 0xe3385900: ver 3 0 (tinfo 0xe33839b0) +06-02 16:38:43.290 I/chatty ( 2002): uid=10024(com.android.systemui) RenderThread identical 2 lines +06-02 16:38:43.293 D/EGL_emulation( 2002): eglMakeCurrent: 0xe3385900: ver 3 0 (tinfo 0xe33839b0) +06-02 16:38:43.303 I/MicroRecognitionRunner( 2402): Starting detection. +06-02 16:38:43.307 I/MicrophoneInputStream( 2402): mic_starting SR : 16000 CC : 16 SO : 6 +06-02 16:38:43.308 E/ ( 1627): Request requires android.permission.RECORD_AUDIO +06-02 16:38:43.309 E/AudioPolicyIntefaceImpl( 1627): getInputForAttr permission denied: recording not allowed for uid 10039 pid 2402 +06-02 16:38:43.309 E/AudioFlinger( 1627): createRecord() checkRecordThread_l failed +06-02 16:38:43.309 E/IAudioFlinger( 2402): createRecord returned error -22 +06-02 16:38:43.309 E/AudioRecord( 2402): AudioFlinger could not create record track, status: -22 +06-02 16:38:43.309 D/EGL_emulation( 2002): eglMakeCurrent: 0xe3385900: ver 3 0 (tinfo 0xe33839b0) +06-02 16:38:43.309 E/AudioRecord-JNI( 2402): Error creating AudioRecord instance: initialization check failed with status -22. +06-02 16:38:43.311 E/android.media.AudioRecord( 2402): Error code -20 when initializing native AudioRecord object. +06-02 16:38:43.311 I/MicrophoneInputStream( 2402): mic_started SR : 16000 CC : 16 SO : 6 +06-02 16:38:43.312 E/ActivityThread( 2402): Failed to find provider info for com.google.android.apps.gsa.testing.ui.audio.recorded +06-02 16:38:43.312 W/SpeechLevelGenerator( 2402): Really low audio levels detected. The audio input may have issues. +06-02 16:38:43.312 I/MicroDetectionWorker( 2402): onReady +06-02 16:38:43.314 I/ActivityManager( 1869): Force stopping org.mozilla.fenix.debug appid=10099 user=-1: set debug app +06-02 16:38:43.315 V/SettingsProvider( 1869): Notifying for 0: content://settings/global/debug_app +06-02 16:38:43.316 I/MicrophoneInputStream( 2402): mic_close SR : 16000 CC : 16 SO : 6 +06-02 16:38:43.317 I/MicroRecognitionRunner( 2402): Detection finished +06-02 16:38:43.317 W/ErrorReporter( 2402): reportError [type: 211, code: 524300]: Error reading from input stream +06-02 16:38:43.319 W/ErrorProcessor( 2402): onFatalError, processing error from engine(4) +06-02 16:38:43.319 W/ErrorProcessor( 2402): com.google.android.apps.gsa.shared.speech.b.g: Error reading from input stream +06-02 16:38:43.319 W/ErrorProcessor( 2402): at com.google.android.apps.gsa.staticplugins.microdetection.d.k.a(SourceFile:91) +06-02 16:38:43.319 W/ErrorProcessor( 2402): at com.google.android.apps.gsa.staticplugins.microdetection.d.l.run(Unknown Source:14) +06-02 16:38:43.319 W/ErrorProcessor( 2402): at com.google.android.libraries.gsa.runner.a.a.b(SourceFile:32) +06-02 16:38:43.319 W/ErrorProcessor( 2402): at com.google.android.libraries.gsa.runner.a.c.call(Unknown Source:4) +06-02 16:38:43.319 W/ErrorProcessor( 2402): at java.util.concurrent.FutureTask.run(FutureTask.java:266) +06-02 16:38:43.319 W/ErrorProcessor( 2402): at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:458) +06-02 16:38:43.319 W/ErrorProcessor( 2402): at java.util.concurrent.FutureTask.run(FutureTask.java:266) +06-02 16:38:43.319 W/ErrorProcessor( 2402): at com.google.android.apps.gsa.shared.util.concurrent.b.g.run(Unknown Source:4) +06-02 16:38:43.319 W/ErrorProcessor( 2402): at com.google.android.apps.gsa.shared.util.concurrent.b.aw.run(SourceFile:4) +06-02 16:38:43.319 W/ErrorProcessor( 2402): at com.google.android.apps.gsa.shared.util.concurrent.b.aw.run(SourceFile:4) +06-02 16:38:43.319 W/ErrorProcessor( 2402): at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1167) +06-02 16:38:43.319 W/ErrorProcessor( 2402): at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:641) +06-02 16:38:43.319 W/ErrorProcessor( 2402): at java.lang.Thread.run(Thread.java:764) +06-02 16:38:43.319 W/ErrorProcessor( 2402): at com.google.android.apps.gsa.shared.util.concurrent.b.i.run(SourceFile:6) +06-02 16:38:43.319 W/ErrorProcessor( 2402): Caused by: com.google.android.apps.gsa.shared.exception.GsaIOException: Error code: 393238 | Buffer overflow, no available space. +06-02 16:38:43.319 W/ErrorProcessor( 2402): at com.google.android.apps.gsa.speech.audio.Tee.j(SourceFile:103) +06-02 16:38:43.319 W/ErrorProcessor( 2402): at com.google.android.apps.gsa.speech.audio.au.read(SourceFile:2) +06-02 16:38:43.319 W/ErrorProcessor( 2402): at java.io.InputStream.read(InputStream.java:101) +06-02 16:38:43.319 W/ErrorProcessor( 2402): at com.google.android.apps.gsa.speech.audio.ao.run(SourceFile:17) +06-02 16:38:43.319 W/ErrorProcessor( 2402): at com.google.android.apps.gsa.speech.audio.an.run(SourceFile:2) +06-02 16:38:43.319 W/ErrorProcessor( 2402): at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:458) +06-02 16:38:43.319 W/ErrorProcessor( 2402): ... 10 more +06-02 16:38:43.319 I/MicroRecognitionRunner( 2402): Stopping hotword detection. +06-02 16:38:43.320 I/AudioController( 2402): internalShutdown +06-02 16:38:43.328 I/MicroDetector( 2402): Keeping mic open: false +06-02 16:38:43.328 I/MicroDetectionWorker( 2402): #onError(false) +06-02 16:38:43.328 I/DeviceStateChecker( 2402): DeviceStateChecker cancelled +06-02 16:38:43.350 I/ActivityManager( 1869): START u0 {flg=0x10000000 cmp=org.mozilla.fenix.debug/.App (has extras)} from uid 0 +06-02 16:38:43.358 I/Places ( 2473): ?: PlacesBleScanner start() with priority 2 +06-02 16:38:43.364 I/Places ( 2473): ?: PlacesBleScanner start() with priority 2 +06-02 16:38:43.370 I/PlaceInferenceEngine( 2473): [anon] Changed inference mode: 1 +06-02 16:38:43.384 I/lla.fenix.debu( 9365): Not late-enabling -Xcheck:jni (already on) +06-02 16:38:43.385 I/ActivityManager( 1869): Start proc 9365:org.mozilla.fenix.debug/u0a99 for activity org.mozilla.fenix.debug/.App +06-02 16:38:43.388 D/gralloc_ranchu( 1619): gralloc_alloc: Creating ashmem region of size 9334784 +06-02 16:38:43.395 I/Places ( 2473): ?: PlacesBleScanner start() with priority 2 +06-02 16:38:43.400 D/ ( 1728): HostConnection::get() New Host Connection established 0xe90dda40, tid 2107 +06-02 16:38:43.401 D/ ( 1869): HostConnection::get() New Host Connection established 0xc1b060c0, tid 1930 +06-02 16:38:43.418 W/lla.fenix.debu( 9365): Unexpected CPU variant for X86 using defaults: x86 +06-02 16:38:43.429 I/Places ( 2473): ?: PlacesBleScanner start() with priority 2 +06-02 16:38:43.430 I/PlaceInferenceEngine( 2473): [anon] Changed inference mode: 1 +06-02 16:38:43.457 I/Places ( 2473): Converted 0 out of 1 WiFi scans +06-02 16:38:43.467 I/PlaceInferenceEngine( 2473): No beacon scan available - ignoring candidates. +06-02 16:38:43.472 W/ActivityThread( 9365): Application org.mozilla.fenix.debug can be debugged on port 8100... +06-02 16:38:43.478 I/lla.fenix.debu( 9365): The ClassLoaderContext is a special shared library. +06-02 16:38:43.488 W/ctxmgr ( 2473): [AclManager]No 2 for (accnt=account#-517948760#, com.google.android.gms(10008):PlacesProducer, vrsn=13280000, 0, 3pPkg = null , 3pMdlId = null , pid = 2473). Was: 3 for 18, account#-517948760# +06-02 16:38:43.492 D/EGL_emulation( 2488): eglMakeCurrent: 0xe3385ae0: ver 3 0 (tinfo 0xe33838f0) +06-02 16:38:43.492 D/EGL_emulation( 2402): eglMakeCurrent: 0xe1911c80: ver 3 0 (tinfo 0xc8cbe260) +06-02 16:38:43.494 D/gralloc_ranchu( 1728): gralloc_unregister_buffer: exiting HostConnection (is buffer-handling thread) +06-02 16:38:43.495 D/ ( 1728): HostConnection::get() New Host Connection established 0xe90dda40, tid 2107 +06-02 16:38:43.495 D/gralloc_ranchu( 1728): gralloc_unregister_buffer: exiting HostConnection (is buffer-handling thread) +06-02 16:38:43.495 D/ ( 1728): HostConnection::get() New Host Connection established 0xe90dda40, tid 2107 +06-02 16:38:43.496 D/gralloc_ranchu( 1728): gralloc_unregister_buffer: exiting HostConnection (is buffer-handling thread) +06-02 16:38:43.496 D/ ( 1728): HostConnection::get() New Host Connection established 0xe90dda40, tid 2107 +06-02 16:38:43.496 D/gralloc_ranchu( 1728): gralloc_unregister_buffer: exiting HostConnection (is buffer-handling thread) +06-02 16:38:43.497 D/gralloc_ranchu( 1728): gralloc_unregister_buffer: exiting HostConnection (is buffer-handling thread) +06-02 16:38:43.499 D/ ( 1728): HostConnection::get() New Host Connection established 0xe50f1400, tid 1952 +06-02 16:38:43.499 D/gralloc_ranchu( 1728): gralloc_unregister_buffer: exiting HostConnection (is buffer-handling thread) +06-02 16:38:43.499 D/ ( 1728): HostConnection::get() New Host Connection established 0xe50f1400, tid 1952 +06-02 16:38:43.499 D/gralloc_ranchu( 1728): gralloc_unregister_buffer: exiting HostConnection (is buffer-handling thread) +06-02 16:38:43.499 D/ ( 1728): HostConnection::get() New Host Connection established 0xe50f1400, tid 1952 +06-02 16:38:43.499 D/gralloc_ranchu( 1728): gralloc_unregister_buffer: exiting HostConnection (is buffer-handling thread) +06-02 16:38:43.504 D/gralloc_ranchu( 1619): gralloc_alloc: Creating ashmem region of size 9334784 +06-02 16:38:43.508 D/gralloc_ranchu( 1897): gralloc_unregister_buffer: exiting HostConnection (is buffer-handling thread) +06-02 16:38:43.509 D/ ( 1897): HostConnection::get() New Host Connection established 0xed7c3080, tid 1897 +06-02 16:38:43.509 D/gralloc_ranchu( 1897): gralloc_unregister_buffer: exiting HostConnection (is buffer-handling thread) +06-02 16:38:43.510 D/ ( 1897): HostConnection::get() New Host Connection established 0xed7c3080, tid 1897 +06-02 16:38:43.510 D/gralloc_ranchu( 1897): gralloc_unregister_buffer: exiting HostConnection (is buffer-handling thread) +06-02 16:38:43.510 D/ ( 1897): HostConnection::get() New Host Connection established 0xed7c3080, tid 1897 +06-02 16:38:43.511 D/gralloc_ranchu( 1897): gralloc_unregister_buffer: exiting HostConnection (is buffer-handling thread) +06-02 16:38:43.513 D/EGL_emulation( 2002): eglMakeCurrent: 0xe3385900: ver 3 0 (tinfo 0xe33839b0) +06-02 16:38:43.515 D/ ( 1728): HostConnection::get() New Host Connection established 0xe50f1280, tid 1952 +06-02 16:38:43.517 D/ ( 1897): HostConnection::get() New Host Connection established 0xed7c3080, tid 1897 +06-02 16:38:43.523 D/EGL_emulation( 2002): eglMakeCurrent: 0xe3385900: ver 3 0 (tinfo 0xe33839b0) +06-02 16:38:43.634 I/chatty ( 2002): uid=10024(com.android.systemui) RenderThread identical 13 lines +06-02 16:38:43.636 D/EGL_emulation( 2002): eglMakeCurrent: 0xe3385900: ver 3 0 (tinfo 0xe33839b0) +06-02 16:38:44.078 D/FirebaseApp( 9365): Default FirebaseApp failed to initialize because no default options were found. This usually means that com.google.gms:google-services was not applied to your gradle project. +06-02 16:38:44.078 I/FirebaseInitProvider( 9365): FirebaseApp initialization unsuccessful +06-02 16:38:44.149 D/FenixApplication( 9365): Initializing Glean (uploadEnabled=true, isFennec=false) +06-02 16:38:44.163 D/RustNativeSupport( 9365): findMegazordLibraryName(viaduct, 0.59.0 +06-02 16:38:44.163 D/RustNativeSupport( 9365): lib in use: none +06-02 16:38:44.164 D/RustNativeSupport( 9365): lib configured: megazord +06-02 16:38:44.164 D/RustNativeSupport( 9365): lib version configured: 0.59.0 +06-02 16:38:44.164 D/RustNativeSupport( 9365): settled on megazord +06-02 16:38:44.222 D/libglean_ffi( 9365): glean_ffi: Android logging should be hooked up! +06-02 16:38:44.224 I/glean/Glean( 9365): Registering pings for mozilla.telemetry.glean.GleanMetrics.Pings +06-02 16:38:44.225 I/libglean_ffi( 9365): glean_core: Creating new Glean +06-02 16:38:44.225 D/libglean_ffi( 9365): glean_core::database: Database path: "/data/user/0/org.mozilla.fenix.debug/glean_data/db" +06-02 16:38:44.226 I/libglean_ffi( 9365): glean_core::database: Database initialized +06-02 16:38:44.226 D/RustNativeSupport( 9365): findMegazordLibraryName(rustlog, 0.59.0 +06-02 16:38:44.226 D/RustNativeSupport( 9365): lib in use: none +06-02 16:38:44.226 D/RustNativeSupport( 9365): lib configured: megazord +06-02 16:38:44.226 D/RustNativeSupport( 9365): lib version configured: 0.59.0 +06-02 16:38:44.226 D/RustNativeSupport( 9365): settled on megazord +06-02 16:38:44.228 I/rc_log_ffi::ios( 9365): rc_log adapter initialized! +06-02 16:38:44.245 I/GeckoRuntime( 9365): Adding debug configuration from: /data/local/tmp/org.mozilla.fenix.debug-geckoview-config.yaml +06-02 16:38:44.245 D/GeckoDebugConfig( 9365): Adding environment variables from debug config: {MOZ_CRASHREPORTER=1, MOZ_CRASHREPORTER_NO_REPORT=1, MOZ_CRASHREPORTER_SHUTDOWN=1} +06-02 16:38:44.246 D/GeckoDebugConfig( 9365): Adding arguments from debug config: [-marionette, -profile, /mnt/sdcard/org.mozilla.fenix.debug-geckodriver-profile] +06-02 16:38:44.246 I/libglean_ffi( 9365): glean_ffi: Glean initialized +06-02 16:38:44.247 D/GeckoThread( 9365): State changed to LAUNCHED +06-02 16:38:44.247 I/GeckoThread( 9365): preparing to run Gecko +06-02 16:38:44.249 D/GeckoThread( 9365): env var: MOZ_CRASHREPORTER=1 +06-02 16:38:44.249 D/GeckoThread( 9365): env var: MOZ_CRASHREPORTER_NO_REPORT=1 +06-02 16:38:44.249 D/GeckoThread( 9365): env var: MOZ_CRASHREPORTER_SHUTDOWN=1 +06-02 16:38:44.259 D/GeckoRuntime( 9365): Lifecycle: onCreate +06-02 16:38:44.267 D/GeckoThread( 9365): State changed to MOZGLUE_READY +06-02 16:38:44.288 W/Settings( 9365): Setting animator_duration_scale has moved from android.provider.Settings.System to android.provider.Settings.Global, returning read-only global URI. +06-02 16:38:44.292 E/GeckoLibLoad( 9365): Load sqlite start +06-02 16:38:44.299 I/glean/MetricsPingSched( 9365): The application just updated. Send metrics ping now. +06-02 16:38:44.303 E/GeckoLibLoad( 9365): Load sqlite done +06-02 16:38:44.303 E/GeckoLibLoad( 9365): Load nss start +06-02 16:38:44.303 E/GeckoLibLoad( 9365): Load nss done +06-02 16:38:44.320 I/glean/MetricsPingSched( 9365): Collecting the 'metrics' ping, now = Tue Jun 02 16:38:44 EDT 2020, startup = true, reason = upgrade +06-02 16:38:44.345 D/LeakCanary( 9365): Updated AppWatcher.config: Config(no changes) +06-02 16:38:44.357 E/GeckoLibLoad( 9365): Loaded libs in 53.254794ms total, 20ms(80ms) user, 20ms(30ms) system, 0(0) faults +06-02 16:38:44.357 D/GeckoThread( 9365): State changed to LIBS_READY +06-02 16:38:44.357 I/libglean_ffi( 9365): glean_core::ping: Collecting metrics +06-02 16:38:44.357 I/libglean_ffi( 9365): glean_core::ping: Storage for metrics empty. Bailing out. +06-02 16:38:44.357 I/libglean_ffi( 9365): glean_core: No content for ping 'metrics', therefore no ping queued. +06-02 16:38:44.360 D/glean/MetricsPingSched( 9365): Scheduling the 'metrics' ping in 40875709ms +06-02 16:38:44.361 W/GeckoThread( 9365): zerdatime 4688492 - runGecko +06-02 16:38:44.363 D/GeckoProfile( 9365): Loading profile at: null name: default +06-02 16:38:44.364 D/GeckoProfile( 9365): Created new profile dir. +06-02 16:38:44.365 I/GeckoProfile( 9365): Enqueuing profile init. +06-02 16:38:44.368 D/GeckoProfile( 9365): Found profile dir: /data/user/0/org.mozilla.fenix.debug/files/mozilla/68sf7sou.default +06-02 16:38:44.368 D/GeckoProfile( 9365): Attempting to write new client ID properties +06-02 16:38:44.369 D/GeckoProfile( 9365): Creating profile dir: /data/user/0/org.mozilla.fenix.debug/files/mozilla/68sf7sou.default +06-02 16:38:44.370 D/LeakCanary( 9365): Updated LeakCanary.config: Config(no changes) +06-02 16:38:44.373 D/App ( 9365): DebugMetricController: start +06-02 16:38:44.373 D/App ( 9365): DebugMetricController: start +06-02 16:38:44.374 W/PushConfig( 9365): No firebase configuration found; cannot support push service. +06-02 16:38:44.383 I/Gecko:DumpUtils( 9365): Fifo watcher disabled via pref. +06-02 16:38:44.388 D/StrictMode( 9365): StrictMode policy violation; ~duration=164 ms: android.os.strictmode.DiskReadViolation +06-02 16:38:44.388 D/StrictMode( 9365): at android.os.StrictMode$AndroidBlockGuardPolicy.onReadFromDisk(StrictMode.java:1504) +06-02 16:38:44.388 D/StrictMode( 9365): at java.io.FileInputStream.<init>(FileInputStream.java:163) +06-02 16:38:44.388 D/StrictMode( 9365): at org.mozilla.gecko.util.DebugConfig.fromFile(DebugConfig.java:49) +06-02 16:38:44.388 D/StrictMode( 9365): at org.mozilla.geckoview.GeckoRuntime.init(GeckoRuntime.java:363) +06-02 16:38:44.388 D/StrictMode( 9365): at org.mozilla.geckoview.GeckoRuntime.create(GeckoRuntime.java:574) +06-02 16:38:44.388 D/StrictMode( 9365): at GeckoProvider.createRuntime(GeckoProvider.kt:58) +06-02 16:38:44.388 D/StrictMode( 9365): at GeckoProvider.getOrCreateRuntime(GeckoProvider.kt:28) +06-02 16:38:44.388 D/StrictMode( 9365): at org.mozilla.fenix.components.Core$engine$2.invoke(Core.kt:79) +06-02 16:38:44.388 D/StrictMode( 9365): at org.mozilla.fenix.components.Core$engine$2.invoke(Core.kt:57) +06-02 16:38:44.388 D/StrictMode( 9365): at kotlin.SynchronizedLazyImpl.getValue(LazyJVM.kt:74) +06-02 16:38:44.388 D/StrictMode( 9365): at org.mozilla.fenix.components.Core.getEngine(Unknown Source:7) +06-02 16:38:44.388 D/StrictMode( 9365): at org.mozilla.fenix.FenixApplication.setupInMainProcessOnly(FenixApplication.kt:128) +06-02 16:38:44.388 D/StrictMode( 9365): at org.mozilla.fenix.FenixApplication.onCreate(FenixApplication.kt:90) +06-02 16:38:44.388 D/StrictMode( 9365): at android.app.Instrumentation.callApplicationOnCreate(Instrumentation.java:1154) +06-02 16:38:44.388 D/StrictMode( 9365): at android.app.ActivityThread.handleBindApplication(ActivityThread.java:5871) +06-02 16:38:44.388 D/StrictMode( 9365): at android.app.ActivityThread.access$1100(ActivityThread.java:199) +06-02 16:38:44.388 D/StrictMode( 9365): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1650) +06-02 16:38:44.388 D/StrictMode( 9365): at android.os.Handler.dispatchMessage(Handler.java:106) +06-02 16:38:44.388 D/StrictMode( 9365): at android.os.Looper.loop(Looper.java:193) +06-02 16:38:44.388 D/StrictMode( 9365): at android.app.ActivityThread.main(ActivityThread.java:6669) +06-02 16:38:44.388 D/StrictMode( 9365): at java.lang.reflect.Method.invoke(Native Method) +06-02 16:38:44.388 D/StrictMode( 9365): at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:493) +06-02 16:38:44.388 D/StrictMode( 9365): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:858) +06-02 16:38:44.390 D/StrictMode( 9365): StrictMode policy violation; ~duration=159 ms: android.os.strictmode.DiskReadViolation +06-02 16:38:44.390 D/StrictMode( 9365): at android.os.StrictMode$AndroidBlockGuardPolicy.onReadFromDisk(StrictMode.java:1504) +06-02 16:38:44.390 D/StrictMode( 9365): at libcore.io.BlockGuardOs.read(BlockGuardOs.java:253) +06-02 16:38:44.390 D/StrictMode( 9365): at libcore.io.IoBridge.read(IoBridge.java:501) +06-02 16:38:44.390 D/StrictMode( 9365): at java.io.FileInputStream.read(FileInputStream.java:307) +06-02 16:38:44.390 D/StrictMode( 9365): at java.io.FilterInputStream.read(FilterInputStream.java:133) +06-02 16:38:44.390 D/StrictMode( 9365): at java.io.PushbackInputStream.read(PushbackInputStream.java:186) +06-02 16:38:44.390 D/StrictMode( 9365): at org.yaml.snakeyaml.reader.UnicodeReader.init(UnicodeReader.java:92) +06-02 16:38:44.390 D/StrictMode( 9365): at org.yaml.snakeyaml.reader.UnicodeReader.read(UnicodeReader.java:124) +06-02 16:38:44.390 D/StrictMode( 9365): at org.yaml.snakeyaml.reader.StreamReader.update(StreamReader.java:183) +06-02 16:38:44.390 D/StrictMode( 9365): at org.yaml.snakeyaml.reader.StreamReader.ensureEnoughData(StreamReader.java:176) +06-02 16:38:44.390 D/StrictMode( 9365): at org.yaml.snakeyaml.reader.StreamReader.ensureEnoughData(StreamReader.java:171) +06-02 16:38:44.390 D/StrictMode( 9365): at org.yaml.snakeyaml.reader.StreamReader.peek(StreamReader.java:126) +06-02 16:38:44.390 D/StrictMode( 9365): at org.yaml.snakeyaml.scanner.ScannerImpl.scanToNextToken(ScannerImpl.java:1177) +06-02 16:38:44.390 D/StrictMode( 9365): at org.yaml.snakeyaml.scanner.ScannerImpl.fetchMoreTokens(ScannerImpl.java:287) +06-02 16:38:44.390 D/StrictMode( 9365): at org.yaml.snakeyaml.scanner.ScannerImpl.checkToken(ScannerImpl.java:227) +06-02 16:38:44.390 D/StrictMode( 9365): at org.yaml.snakeyaml.parser.ParserImpl$ParseImplicitDocumentStart.produce(ParserImpl.java:195) +06-02 16:38:44.390 D/StrictMode( 9365): at org.yaml.snakeyaml.parser.ParserImpl.peekEvent(ParserImpl.java:158) +06-02 16:38:44.390 D/StrictMode( 9365): at org.yaml.snakeyaml.parser.ParserImpl.checkEvent(ParserImpl.java:148) +06-02 16:38:44.390 D/StrictMode( 9365): at org.yaml.snakeyaml.composer.Composer.getSingleNode(Composer.java:107) +06-02 16:38:44.390 D/StrictMode( 9365): at org.yaml.snakeyaml.constructor.BaseConstructor.getSingleData(BaseConstructor.java:141) +06-02 16:38:44.390 D/StrictMode( 9365): at org.yaml.snakeyaml.Yaml.loadFromReader(Yaml.java:525) +06-02 16:38:44.390 D/StrictMode( 9365): at org.yaml.snakeyaml.Yaml.load(Yaml.java:453) +06-02 16:38:44.390 D/StrictMode( 9365): at org.mozilla.gecko.util.DebugConfig.fromFile(DebugConfig.java:51) +06-02 16:38:44.390 D/StrictMode( 9365): at org.mozilla.geckoview.GeckoRuntime.init(GeckoRuntime.java:363) +06-02 16:38:44.390 D/StrictMode( 9365): at org.mozilla.geckoview.GeckoRuntime.create(GeckoRuntime.java:574) +06-02 16:38:44.390 D/StrictMode( 9365): at GeckoProvider.createRuntime(GeckoProvider.kt:58) +06-02 16:38:44.390 D/StrictMode( 9365): at GeckoProvider.getOrCreateRuntime(GeckoProvider.kt:28) +06-02 16:38:44.390 D/StrictMode( 9365): at org.mozilla.fenix.components.Core$engine$2.invoke(Core.kt:79) +06-02 16:38:44.390 D/StrictMode( 9365): at org.mozilla.fenix.components.Core$engine$2.invoke(Core.kt:57) +06-02 16:38:44.390 D/StrictMode( 9365): at kotlin.SynchronizedLazyImpl.getValue(LazyJVM.kt:74) +06-02 16:38:44.390 D/StrictMode( 9365): at org.mozilla.fenix.components.Core.getEngine(Unknown Source:7) +06-02 16:38:44.390 D/StrictMode( 9365): at org.mozilla.fenix.FenixApplication.setupInMainProcessOnly(FenixApplication.kt:128) +06-02 16:38:44.390 D/StrictMode( 9365): at org.mozilla.fenix.FenixApplication.onCreate(FenixApplication.kt:90) +06-02 16:38:44.390 D/StrictMode( 9365): at android.app.Instrumentation.callApplicationOnCreate(Instrumentation.java:1154) +06-02 16:38:44.390 D/StrictMode( 9365): at android.app.ActivityThread.handleBindApplication(ActivityThread.java:5871) +06-02 16:38:44.390 D/StrictMode( 9365): at android.app.ActivityThread.access$1100(ActivityThread.java:199) +06-02 16:38:44.390 D/StrictMode( 9365): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1650) +06-02 16:38:44.390 D/StrictMode( 9365): at android.os.Handler.dispatchMessage(Handler.java:106) +06-02 16:38:44.390 D/StrictMode( 9365): at android.os.Looper.loop(Looper.java:193) +06-02 16:38:44.390 D/StrictMode( 9365): at android.app.ActivityThread.main(ActivityThread.java:6669) +06-02 16:38:44.390 D/StrictMode( 9365): at java.lang.reflect.Method.invoke(Native Method) +06-02 16:38:44.390 D/StrictMode( 9365): at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:493) +06-02 16:38:44.390 D/StrictMode( 9365): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:858) +06-02 16:38:44.392 D/StrictMode( 9365): StrictMode policy violation; ~duration=159 ms: android.os.strictmode.DiskReadViolation +06-02 16:38:44.392 D/StrictMode( 9365): at android.os.StrictMode$AndroidBlockGuardPolicy.onReadFromDisk(StrictMode.java:1504) +06-02 16:38:44.392 D/StrictMode( 9365): at libcore.io.BlockGuardOs.read(BlockGuardOs.java:253) +06-02 16:38:44.392 D/StrictMode( 9365): at libcore.io.IoBridge.read(IoBridge.java:501) +06-02 16:38:44.392 D/StrictMode( 9365): at java.io.FileInputStream.read(FileInputStream.java:307) +06-02 16:38:44.392 D/StrictMode( 9365): at java.io.FilterInputStream.read(FilterInputStream.java:133) +06-02 16:38:44.392 D/StrictMode( 9365): at java.io.PushbackInputStream.read(PushbackInputStream.java:186) +06-02 16:38:44.392 D/StrictMode( 9365): at sun.nio.cs.StreamDecoder.readBytes(StreamDecoder.java:288) +06-02 16:38:44.392 D/StrictMode( 9365): at sun.nio.cs.StreamDecoder.implRead(StreamDecoder.java:351) +06-02 16:38:44.392 D/StrictMode( 9365): at sun.nio.cs.StreamDecoder.read(StreamDecoder.java:180) +06-02 16:38:44.392 D/StrictMode( 9365): at java.io.InputStreamReader.read(InputStreamReader.java:184) +06-02 16:38:44.392 D/StrictMode( 9365): at org.yaml.snakeyaml.reader.UnicodeReader.read(UnicodeReader.java:125) +06-02 16:38:44.392 D/StrictMode( 9365): at org.yaml.snakeyaml.reader.StreamReader.update(StreamReader.java:183) +06-02 16:38:44.392 D/StrictMode( 9365): at org.yaml.snakeyaml.reader.StreamReader.ensureEnoughData(StreamReader.java:176) +06-02 16:38:44.392 D/StrictMode( 9365): at org.yaml.snakeyaml.reader.StreamReader.ensureEnoughData(StreamReader.java:171) +06-02 16:38:44.392 D/StrictMode( 9365): at org.yaml.snakeyaml.reader.StreamReader.peek(StreamReader.java:126) +06-02 16:38:44.392 D/StrictMode( 9365): at org.yaml.snakeyaml.scanner.ScannerImpl.scanToNextToken(ScannerImpl.java:1177) +06-02 16:38:44.392 D/StrictMode( 9365): at org.yaml.snakeyaml.scanner.ScannerImpl.fetchMoreTokens(ScannerImpl.java:287) +06-02 16:38:44.392 D/StrictMode( 9365): at org.yaml.snakeyaml.scanner.ScannerImpl.checkToken(ScannerImpl.java:227) +06-02 16:38:44.392 D/StrictMode( 9365): at org.yaml.snakeyaml.parser.ParserImpl$ParseImplicitDocumentStart.produce(ParserImpl.java:195) +06-02 16:38:44.392 D/StrictMode( 9365): at org.yaml.snakeyaml.parser.ParserImpl.peekEvent(ParserImpl.java:158) +06-02 16:38:44.392 D/StrictMode( 9365): at org.yaml.snakeyaml.parser.ParserImpl.checkEvent(ParserImpl.java:148) +06-02 16:38:44.392 D/StrictMode( 9365): at org.yaml.snakeyaml.composer.Composer.getSingleNode(Composer.java:107) +06-02 16:38:44.392 D/StrictMode( 9365): at org.yaml.snakeyaml.constructor.BaseConstructor.getSingleData(BaseConstructor.java:141) +06-02 16:38:44.392 D/StrictMode( 9365): at org.yaml.snakeyaml.Yaml.loadFromReader(Yaml.java:525) +06-02 16:38:44.392 D/StrictMode( 9365): at org.yaml.snakeyaml.Yaml.load(Yaml.java:453) +06-02 16:38:44.392 D/StrictMode( 9365): at org.mozilla.gecko.util.DebugConfig.fromFile(DebugConfig.java:51) +06-02 16:38:44.392 D/StrictMode( 9365): at org.mozilla.geckoview.GeckoRuntime.init(GeckoRuntime.java:363) +06-02 16:38:44.392 D/StrictMode( 9365): at org.mozilla.geckoview.GeckoRuntime.create(GeckoRuntime.java:574) +06-02 16:38:44.392 D/StrictMode( 9365): at GeckoProvider.createRuntime(GeckoProvider.kt:58) +06-02 16:38:44.392 D/StrictMode( 9365): at GeckoProvider.getOrCreateRuntime(GeckoProvider.kt:28) +06-02 16:38:44.392 D/StrictMode( 9365): at org.mozilla.fenix.components.Core$engine$2.invoke(Core.kt:79) +06-02 16:38:44.392 D/StrictMode( 9365): at org.mozilla.fenix.components.Core$engine$2.invoke(Core.kt:57) +06-02 16:38:44.392 D/StrictMode( 9365): at kotlin.SynchronizedLazyImpl.getValue(LazyJVM.kt:74) +06-02 16:38:44.392 D/StrictMode( 9365): at org.mozilla.fenix.components.Core.getEngine(Unknown Source:7) +06-02 16:38:44.392 D/StrictMode( 9365): at org.mozilla.fenix.FenixApplication.setupInMainProcessOnly(FenixApplication.kt:128) +06-02 16:38:44.392 D/StrictMode( 9365): at org.mozilla.fenix.FenixApplication.onCreate(FenixApplication.kt:90) +06-02 16:38:44.392 D/StrictMode( 9365): at android.app.Instrumentation.callApplicationOnCreate(Instrumentation.java:1154) +06-02 16:38:44.392 D/StrictMode( 9365): at android.app.ActivityThread.handleBindApplication(ActivityThread.java:5871) +06-02 16:38:44.392 D/StrictMode( 9365): at android.app.ActivityThread.access$1100(ActivityThread.java:199) +06-02 16:38:44.392 D/StrictMode( 9365): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1650) +06-02 16:38:44.392 D/StrictMode( 9365): at android.os.Handler.dispatchMessage(Handler.java:106) +06-02 16:38:44.392 D/StrictMode( 9365): at android.os.Looper.loop(Looper.java:193) +06-02 16:38:44.392 D/StrictMode( 9365): at android.app.ActivityThread.main(ActivityThread.java:6669) +06-02 16:38:44.392 D/StrictMode( 9365): at java.lang.reflect.Method.invoke(Native Method) +06-02 16:38:44.392 D/StrictMode( 9365): at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:493) +06-02 16:38:44.392 D/StrictMode( 9365): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:858) +06-02 16:38:44.396 D/StrictMode( 9365): StrictMode policy violation; ~duration=146 ms: android.os.strictmode.DiskReadViolation +06-02 16:38:44.396 D/StrictMode( 9365): at android.os.StrictMode$AndroidBlockGuardPolicy.onReadFromDisk(StrictMode.java:1504) +06-02 16:38:44.396 D/StrictMode( 9365): at libcore.io.BlockGuardOs.read(BlockGuardOs.java:253) +06-02 16:38:44.396 D/StrictMode( 9365): at libcore.io.IoBridge.read(IoBridge.java:501) +06-02 16:38:44.396 D/StrictMode( 9365): at java.io.FileInputStream.read(FileInputStream.java:307) +06-02 16:38:44.396 D/StrictMode( 9365): at java.io.FilterInputStream.read(FilterInputStream.java:133) +06-02 16:38:44.396 D/StrictMode( 9365): at java.io.PushbackInputStream.read(PushbackInputStream.java:186) +06-02 16:38:44.396 D/StrictMode( 9365): at sun.nio.cs.StreamDecoder.readBytes(StreamDecoder.java:288) +06-02 16:38:44.396 D/StrictMode( 9365): at sun.nio.cs.StreamDecoder.implRead(StreamDecoder.java:351) +06-02 16:38:44.396 D/StrictMode( 9365): at sun.nio.cs.StreamDecoder.read(StreamDecoder.java:180) +06-02 16:38:44.396 D/StrictMode( 9365): at java.io.InputStreamReader.read(InputStreamReader.java:184) +06-02 16:38:44.396 D/StrictMode( 9365): at org.yaml.snakeyaml.reader.UnicodeReader.read(UnicodeReader.java:125) +06-02 16:38:44.396 D/StrictMode( 9365): at org.yaml.snakeyaml.reader.StreamReader.update(StreamReader.java:183) +06-02 16:38:44.396 D/StrictMode( 9365): at org.yaml.snakeyaml.reader.StreamReader.ensureEnoughData(StreamReader.java:176) +06-02 16:38:44.396 D/StrictMode( 9365): at org.yaml.snakeyaml.reader.StreamReader.peek(StreamReader.java:136) +06-02 16:38:44.396 D/StrictMode( 9365): at org.yaml.snakeyaml.scanner.ScannerImpl.scanPlain(ScannerImpl.java:1999) +06-02 16:38:44.396 D/StrictMode( 9365): at org.yaml.snakeyaml.scanner.ScannerImpl.fetchPlain(ScannerImpl.java:1044) +06-02 16:38:44.396 D/StrictMode( 9365): at org.yaml.snakeyaml.scanner.ScannerImpl.fetchMoreTokens(ScannerImpl.java:399) +06-02 16:38:44.396 D/StrictMode( 9365): at org.yaml.snakeyaml.scanner.ScannerImpl.checkToken(ScannerImpl.java:227) +06-02 16:38:44.396 D/StrictMode( 9365): at org.yaml.snakeyaml.parser.ParserImpl$ParseBlockSequenceEntry.produce(ParserImpl.java:504) +06-02 16:38:44.396 D/StrictMode( 9365): at org.yaml.snakeyaml.parser.ParserImpl.peekEvent(ParserImpl.java:158) +06-02 16:38:44.396 D/StrictMode( 9365): at org.yaml.snakeyaml.parser.ParserImpl.checkEvent(ParserImpl.java:148) +06-02 16:38:44.396 D/StrictMode( 9365): at org.yaml.snakeyaml.composer.Composer.composeSequenceNode(Composer.java:188) +06-02 16:38:44.396 D/StrictMode( 9365): at org.yaml.snakeyaml.composer.Composer.composeNode(Composer.java:142) +06-02 16:38:44.396 D/StrictMode( 9365): at org.yaml.snakeyaml.composer.Composer.composeValueNode(Composer.java:236) +06-02 16:38:44.396 D/StrictMode( 9365): at org.yaml.snakeyaml.composer.Composer.composeMappingChildren(Composer.java:227) +06-02 16:38:44.396 D/StrictMode( 9365): at org.yaml.snakeyaml.composer.Composer.composeMappingNode(Composer.java:215) +06-02 16:38:44.396 D/StrictMode( 9365): at org.yaml.snakeyaml.composer.Composer.composeNode(Composer.java:144) +06-02 16:38:44.396 D/StrictMode( 9365): at org.yaml.snakeyaml.composer.Composer.getNode(Composer.java:85) +06-02 16:38:44.396 D/StrictMode( 9365): at org.yaml.snakeyaml.composer.Composer.getSingleNode(Composer.java:108) +06-02 16:38:44.396 D/StrictMode( 9365): at org.yaml.snakeyaml.constructor.BaseConstructor.getSingleData(BaseConstructor.java:141) +06-02 16:38:44.396 D/StrictMode( 9365): at org.yaml.snakeyaml.Yaml.loadFromReader(Yaml.java:525) +06-02 16:38:44.396 D/StrictMode( 9365): at org.yaml.snakeyaml.Yaml.load(Yaml.java:453) +06-02 16:38:44.396 D/StrictMode( 9365): at org.mozilla.gecko.util.DebugConfig.fromFile(DebugConfig.java:51) +06-02 16:38:44.396 D/StrictMode( 9365): at org.mozilla.geckoview.GeckoRuntime.init(GeckoRuntime.java:363) +06-02 16:38:44.396 D/StrictMode( 9365): at org.mozilla.geckoview.GeckoRuntime.create(GeckoRuntime.java:574) +06-02 16:38:44.396 D/StrictMode( 9365): at GeckoProvider.createRuntime(GeckoProvider.kt:58) +06-02 16:38:44.396 D/StrictMode( 9365): at GeckoProvider.getOrCreateRuntime(GeckoProvider.kt:28) +06-02 16:38:44.396 D/StrictMode( 9365): at org.mozilla.fenix.components.Core$engine$2.invoke(Core.kt:79) +06-02 16:38:44.396 D/StrictMode( 9365): at org.mozilla.fenix.components.Core$engine$2.invoke(Core.kt:57) +06-02 16:38:44.396 D/StrictMode( 9365): at kotlin.SynchronizedLazyImpl.getValue(LazyJVM.kt:74) +06-02 16:38:44.396 D/StrictMode( 9365): at org.mozilla.fenix.components.Core.getEngine(Unknown Source:7) +06-02 16:38:44.396 D/StrictMode( 9365): at org.mozilla.fenix.FenixApplication.setupInMainProcessOnly(FenixApplication.kt:128) +06-02 16:38:44.396 D/StrictMode( 9365): at org.mozilla.fenix.FenixApplication.onCreate(FenixApplication.kt:90) +06-02 16:38:44.396 D/StrictMode( 9365): at android.app.Instrumentation.callApplicationOnCreate(Instrumentation.java:1154) +06-02 16:38:44.396 D/StrictMode( 9365): at android.app.ActivityThread.handleBindApplication(ActivityThread.java:5871) +06-02 16:38:44.396 D/StrictMode( 9365): at android.app.ActivityThread.access$1100(ActivityThread.java:199) +06-02 16:38:44.396 D/StrictMode( 9365): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1650) +06-02 16:38:44.396 D/StrictMode( 9365): at android.os.Handler.dispatchMessage(Handler.java:106) +06-02 16:38:44.396 D/StrictMode( 9365): at android.os.Looper.loop(Looper.java:193) +06-02 16:38:44.396 D/StrictMode( 9365): at android.app.ActivityThread.main(ActivityThread.java:6669) +06-02 16:38:44.396 D/StrictMode( 9365): at java.lang.reflect.Method.invoke(Native Method) +06-02 16:38:44.396 D/StrictMode( 9365): at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:493) +06-02 16:38:44.396 D/StrictMode( 9365): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:858) +06-02 16:38:44.399 D/StrictMode( 9365): StrictMode policy violation; ~duration=120 ms: android.os.strictmode.DiskReadViolation +06-02 16:38:44.399 D/StrictMode( 9365): at android.os.StrictMode$AndroidBlockGuardPolicy.onReadFromDisk(StrictMode.java:1504) +06-02 16:38:44.399 D/StrictMode( 9365): at java.io.UnixFileSystem.checkAccess(UnixFileSystem.java:251) +06-02 16:38:44.399 D/StrictMode( 9365): at java.io.File.exists(File.java:815) +06-02 16:38:44.399 D/StrictMode( 9365): at android.app.ContextImpl.ensurePrivateDirExists(ContextImpl.java:605) +06-02 16:38:44.399 D/StrictMode( 9365): at android.app.ContextImpl.ensurePrivateDirExists(ContextImpl.java:596) +06-02 16:38:44.399 D/StrictMode( 9365): at android.app.ContextImpl.getPreferencesDir(ContextImpl.java:552) +06-02 16:38:44.399 D/StrictMode( 9365): at android.app.ContextImpl.getSharedPreferencesPath(ContextImpl.java:747) +06-02 16:38:44.399 D/StrictMode( 9365): at android.app.ContextImpl.getSharedPreferences(ContextImpl.java:400) +06-02 16:38:44.399 D/StrictMode( 9365): at android.content.ContextWrapper.getSharedPreferences(ContextWrapper.java:174) +06-02 16:38:44.399 D/StrictMode( 9365): at mozilla.components.browser.engine.gecko.GeckoEngine.<init>(GeckoEngine.kt:68) +06-02 16:38:44.399 D/StrictMode( 9365): at mozilla.components.browser.engine.gecko.GeckoEngine.<init>(GeckoEngine.kt:63) +06-02 16:38:44.399 D/StrictMode( 9365): at org.mozilla.fenix.components.Core$engine$2.invoke(Core.kt:76) +06-02 16:38:44.399 D/StrictMode( 9365): at org.mozilla.fenix.components.Core$engine$2.invoke(Core.kt:57) +06-02 16:38:44.399 D/StrictMode( 9365): at kotlin.SynchronizedLazyImpl.getValue(LazyJVM.kt:74) +06-02 16:38:44.399 D/StrictMode( 9365): at org.mozilla.fenix.components.Core.getEngine(Unknown Source:7) +06-02 16:38:44.399 D/StrictMode( 9365): at org.mozilla.fenix.FenixApplication.setupInMainProcessOnly(FenixApplication.kt:128) +06-02 16:38:44.399 D/StrictMode( 9365): at org.mozilla.fenix.FenixApplication.onCreate(FenixApplication.kt:90) +06-02 16:38:44.399 D/StrictMode( 9365): at android.app.Instrumentation.callApplicationOnCreate(Instrumentation.java:1154) +06-02 16:38:44.399 D/StrictMode( 9365): at android.app.ActivityThread.handleBindApplication(ActivityThread.java:5871) +06-02 16:38:44.399 D/StrictMode( 9365): at android.app.ActivityThread.access$1100(ActivityThread.java:199) +06-02 16:38:44.399 D/StrictMode( 9365): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1650) +06-02 16:38:44.399 D/StrictMode( 9365): at android.os.Handler.dispatchMessage(Handler.java:106) +06-02 16:38:44.399 D/StrictMode( 9365): at android.os.Looper.loop(Looper.java:193) +06-02 16:38:44.399 D/StrictMode( 9365): at android.app.ActivityThread.main(ActivityThread.java:6669) +06-02 16:38:44.399 D/StrictMode( 9365): at java.lang.reflect.Method.invoke(Native Method) +06-02 16:38:44.399 D/StrictMode( 9365): at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:493) +06-02 16:38:44.399 D/StrictMode( 9365): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:858) +06-02 16:38:44.402 D/StrictMode( 9365): StrictMode policy violation; ~duration=46 ms: android.os.strictmode.DiskReadViolation +06-02 16:38:44.402 D/StrictMode( 9365): at android.os.StrictMode$AndroidBlockGuardPolicy.onReadFromDisk(StrictMode.java:1504) +06-02 16:38:44.402 D/StrictMode( 9365): at java.io.UnixFileSystem.checkAccess(UnixFileSystem.java:251) +06-02 16:38:44.402 D/StrictMode( 9365): at java.io.File.exists(File.java:815) +06-02 16:38:44.402 D/StrictMode( 9365): at android.app.ContextImpl.ensurePrivateDirExists(ContextImpl.java:605) +06-02 16:38:44.402 D/StrictMode( 9365): at android.app.ContextImpl.ensurePrivateDirExists(ContextImpl.java:596) +06-02 16:38:44.402 D/StrictMode( 9365): at android.app.ContextImpl.getPreferencesDir(ContextImpl.java:552) +06-02 16:38:44.402 D/StrictMode( 9365): at android.app.ContextImpl.getSharedPreferencesPath(ContextImpl.java:747) +06-02 16:38:44.402 D/StrictMode( 9365): at android.app.ContextImpl.getSharedPreferences(ContextImpl.java:400) +06-02 16:38:44.402 D/StrictMode( 9365): at android.content.ContextWrapper.getSharedPreferences(ContextWrapper.java:174) +06-02 16:38:44.402 D/StrictMode( 9365): at androidx.preference.PreferenceManager.getDefaultSharedPreferences(PreferenceManager.java:119) +06-02 16:38:44.402 D/StrictMode( 9365): at org.mozilla.fenix.DebugFenixApplication.setupLeakCanary(DebugFenixApplication.kt:15) +06-02 16:38:44.402 D/StrictMode( 9365): at org.mozilla.fenix.FenixApplication.setupInMainProcessOnly(FenixApplication.kt:140) +06-02 16:38:44.402 D/StrictMode( 9365): at org.mozilla.fenix.FenixApplication.onCreate(FenixApplication.kt:90) +06-02 16:38:44.402 D/StrictMode( 9365): at android.app.Instrumentation.callApplicationOnCreate(Instrumentation.java:1154) +06-02 16:38:44.402 D/StrictMode( 9365): at android.app.ActivityThread.handleBindApplication(ActivityThread.java:5871) +06-02 16:38:44.402 D/StrictMode( 9365): at android.app.ActivityThread.access$1100(ActivityThread.java:199) +06-02 16:38:44.402 D/StrictMode( 9365): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1650) +06-02 16:38:44.402 D/StrictMode( 9365): at android.os.Handler.dispatchMessage(Handler.java:106) +06-02 16:38:44.402 D/StrictMode( 9365): at android.os.Looper.loop(Looper.java:193) +06-02 16:38:44.402 D/StrictMode( 9365): at android.app.ActivityThread.main(ActivityThread.java:6669) +06-02 16:38:44.402 D/StrictMode( 9365): at java.lang.reflect.Method.invoke(Native Method) +06-02 16:38:44.402 D/StrictMode( 9365): at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:493) +06-02 16:38:44.402 D/StrictMode( 9365): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:858) +06-02 16:38:44.404 D/StrictMode( 9365): StrictMode policy violation; ~duration=43 ms: android.os.strictmode.DiskReadViolation +06-02 16:38:44.404 D/StrictMode( 9365): at android.os.StrictMode$AndroidBlockGuardPolicy.onReadFromDisk(StrictMode.java:1504) +06-02 16:38:44.404 D/StrictMode( 9365): at android.app.SharedPreferencesImpl.awaitLoadedLocked(SharedPreferencesImpl.java:256) +06-02 16:38:44.404 D/StrictMode( 9365): at android.app.SharedPreferencesImpl.getBoolean(SharedPreferencesImpl.java:325) +06-02 16:38:44.404 D/StrictMode( 9365): at org.mozilla.fenix.DebugFenixApplication.setupLeakCanary(DebugFenixApplication.kt:16) +06-02 16:38:44.404 D/StrictMode( 9365): at org.mozilla.fenix.FenixApplication.setupInMainProcessOnly(FenixApplication.kt:140) +06-02 16:38:44.404 D/StrictMode( 9365): at org.mozilla.fenix.FenixApplication.onCreate(FenixApplication.kt:90) +06-02 16:38:44.404 D/StrictMode( 9365): at android.app.Instrumentation.callApplicationOnCreate(Instrumentation.java:1154) +06-02 16:38:44.404 D/StrictMode( 9365): at android.app.ActivityThread.handleBindApplication(ActivityThread.java:5871) +06-02 16:38:44.404 D/StrictMode( 9365): at android.app.ActivityThread.access$1100(ActivityThread.java:199) +06-02 16:38:44.404 D/StrictMode( 9365): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1650) +06-02 16:38:44.404 D/StrictMode( 9365): at android.os.Handler.dispatchMessage(Handler.java:106) +06-02 16:38:44.404 D/StrictMode( 9365): at android.os.Looper.loop(Looper.java:193) +06-02 16:38:44.404 D/StrictMode( 9365): at android.app.ActivityThread.main(ActivityThread.java:6669) +06-02 16:38:44.404 D/StrictMode( 9365): at java.lang.reflect.Method.invoke(Native Method) +06-02 16:38:44.404 D/StrictMode( 9365): at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:493) +06-02 16:38:44.404 D/StrictMode( 9365): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:858) +06-02 16:38:44.406 D/GeckoSysInfo( 9365): System memory: 1494MB. +06-02 16:38:44.406 W/lla.fenix.debu( 9365): Accessing hidden method Landroid/os/MessageQueue;->next()Landroid/os/Message; (light greylist, JNI) +06-02 16:38:44.406 D/StrictMode( 9365): StrictMode policy violation: android.os.strictmode.NonSdkApiUsedViolation: Landroid/os/MessageQueue;->next()Landroid/os/Message; +06-02 16:38:44.406 D/StrictMode( 9365): at android.os.StrictMode.lambda$static$1(StrictMode.java:428) +06-02 16:38:44.406 D/StrictMode( 9365): at android.os.-$$Lambda$StrictMode$lu9ekkHJ2HMz0jd3F8K8MnhenxQ.accept(Unknown Source:2) +06-02 16:38:44.406 D/StrictMode( 9365): at org.mozilla.gecko.mozglue.GeckoLoader.nativeRun(Native Method) +06-02 16:38:44.406 D/StrictMode( 9365): at org.mozilla.gecko.GeckoThread.run(GeckoThread.java:449) +06-02 16:38:44.406 W/lla.fenix.debu( 9365): Accessing hidden field Landroid/os/MessageQueue;->mMessages:Landroid/os/Message; (light greylist, JNI) +06-02 16:38:44.406 D/StrictMode( 9365): StrictMode policy violation: android.os.strictmode.NonSdkApiUsedViolation: Landroid/os/MessageQueue;->mMessages:Landroid/os/Message; +06-02 16:38:44.406 D/StrictMode( 9365): at android.os.StrictMode.lambda$static$1(StrictMode.java:428) +06-02 16:38:44.406 D/StrictMode( 9365): at android.os.-$$Lambda$StrictMode$lu9ekkHJ2HMz0jd3F8K8MnhenxQ.accept(Unknown Source:2) +06-02 16:38:44.406 D/StrictMode( 9365): at org.mozilla.gecko.mozglue.GeckoLoader.nativeRun(Native Method) +06-02 16:38:44.406 D/StrictMode( 9365): at org.mozilla.gecko.GeckoThread.run(GeckoThread.java:449) +06-02 16:38:44.408 W/lla.fenix.debu( 9365): Accessing hidden field Ljava/lang/Boolean;->value:Z (light greylist, JNI) +06-02 16:38:44.409 D/StrictMode( 9365): StrictMode policy violation: android.os.strictmode.NonSdkApiUsedViolation: Ljava/lang/Boolean;->value:Z +06-02 16:38:44.409 D/StrictMode( 9365): at android.os.StrictMode.lambda$static$1(StrictMode.java:428) +06-02 16:38:44.409 D/StrictMode( 9365): at android.os.-$$Lambda$StrictMode$lu9ekkHJ2HMz0jd3F8K8MnhenxQ.accept(Unknown Source:2) +06-02 16:38:44.409 D/StrictMode( 9365): at org.mozilla.gecko.mozglue.GeckoLoader.nativeRun(Native Method) +06-02 16:38:44.409 D/StrictMode( 9365): at org.mozilla.gecko.GeckoThread.run(GeckoThread.java:449) +06-02 16:38:44.409 W/lla.fenix.debu( 9365): Accessing hidden field Ljava/lang/Integer;->value:I (light greylist, JNI) +06-02 16:38:44.409 D/StrictMode( 9365): StrictMode policy violation: android.os.strictmode.NonSdkApiUsedViolation: Ljava/lang/Integer;->value:I +06-02 16:38:44.409 D/StrictMode( 9365): at android.os.StrictMode.lambda$static$1(StrictMode.java:428) +06-02 16:38:44.409 D/StrictMode( 9365): at android.os.-$$Lambda$StrictMode$lu9ekkHJ2HMz0jd3F8K8MnhenxQ.accept(Unknown Source:2) +06-02 16:38:44.409 D/StrictMode( 9365): at org.mozilla.gecko.mozglue.GeckoLoader.nativeRun(Native Method) +06-02 16:38:44.409 D/StrictMode( 9365): at org.mozilla.gecko.GeckoThread.run(GeckoThread.java:449) +06-02 16:38:44.409 W/lla.fenix.debu( 9365): Accessing hidden field Ljava/lang/Double;->value:D (light greylist, JNI) +06-02 16:38:44.410 D/StrictMode( 9365): StrictMode policy violation: android.os.strictmode.NonSdkApiUsedViolation: Ljava/lang/Double;->value:D +06-02 16:38:44.410 D/StrictMode( 9365): at android.os.StrictMode.lambda$static$1(StrictMode.java:428) +06-02 16:38:44.410 D/StrictMode( 9365): at android.os.-$$Lambda$StrictMode$lu9ekkHJ2HMz0jd3F8K8MnhenxQ.accept(Unknown Source:2) +06-02 16:38:44.410 D/StrictMode( 9365): at org.mozilla.gecko.mozglue.GeckoLoader.nativeRun(Native Method) +06-02 16:38:44.410 D/StrictMode( 9365): at org.mozilla.gecko.GeckoThread.run(GeckoThread.java:449) +06-02 16:38:44.410 D/GeckoThread( 9365): State changed to JNI_READY +06-02 16:38:44.456 D/ServiceAllocator( 9365): org.mozilla.gecko.process.GeckoChildProcessServices$tab0 updateBindings: BACKGROUND priority, 0 importance, 2 successful binds, 0 failed binds, 0 successful unbinds, 0 failed unbinds +06-02 16:38:44.465 I/enix.debug:tab( 9414): Not late-enabling -Xcheck:jni (already on) +06-02 16:38:44.465 I/ActivityManager( 1869): Start proc 9414:org.mozilla.fenix.debug:tab0/u0a99 for service org.mozilla.fenix.debug/org.mozilla.gecko.process.GeckoChildProcessServices$tab0 +06-02 16:38:44.493 W/lla.fenix.debu( 9365): Accessing hidden method Landroid/content/res/Resources$Theme;->rebase()V (dark greylist, reflection) +06-02 16:38:44.493 D/StrictMode( 9365): StrictMode policy violation: android.os.strictmode.NonSdkApiUsedViolation: Landroid/content/res/Resources$Theme;->rebase()V +06-02 16:38:44.493 D/StrictMode( 9365): at android.os.StrictMode.lambda$static$1(StrictMode.java:428) +06-02 16:38:44.493 D/StrictMode( 9365): at android.os.-$$Lambda$StrictMode$lu9ekkHJ2HMz0jd3F8K8MnhenxQ.accept(Unknown Source:2) +06-02 16:38:44.493 D/StrictMode( 9365): at java.lang.Class.getDeclaredMethodInternal(Native Method) +06-02 16:38:44.493 D/StrictMode( 9365): at java.lang.Class.getMethod(Class.java:2064) +06-02 16:38:44.493 D/StrictMode( 9365): at java.lang.Class.getDeclaredMethod(Class.java:2047) +06-02 16:38:44.493 D/StrictMode( 9365): at androidx.core.content.res.ResourcesCompat$ThemeCompat$ImplApi23.rebase(ResourcesCompat.java:501) +06-02 16:38:44.493 D/StrictMode( 9365): at androidx.core.content.res.ResourcesCompat$ThemeCompat.rebase(ResourcesCompat.java:477) +06-02 16:38:44.493 D/StrictMode( 9365): at androidx.appcompat.app.AppCompatDelegateImpl.attachBaseContext2(AppCompatDelegateImpl.java:465) +06-02 16:38:44.493 D/StrictMode( 9365): at androidx.appcompat.app.AppCompatActivity.attachBaseContext(AppCompatActivity.java:107) +06-02 16:38:44.493 D/StrictMode( 9365): at mozilla.components.support.locale.LocaleAwareAppCompatActivity.attachBaseContext(LocaleAwareAppCompatActivity.kt:19) +06-02 16:38:44.493 D/StrictMode( 9365): at android.app.Activity.attach(Activity.java:7051) +06-02 16:38:44.493 D/StrictMode( 9365): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2873) +06-02 16:38:44.493 D/StrictMode( 9365): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3048) +06-02 16:38:44.493 D/StrictMode( 9365): at android.app.servertransaction.LaunchActivityItem.execute(LaunchActivityItem.java:78) +06-02 16:38:44.493 D/StrictMode( 9365): at android.app.servertransaction.TransactionExecutor.executeCallbacks(TransactionExecutor.java:108) +06-02 16:38:44.493 D/StrictMode( 9365): at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:68) +06-02 16:38:44.493 D/StrictMode( 9365): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1808) +06-02 16:38:44.493 D/StrictMode( 9365): at android.os.Handler.dispatchMessage(Handler.java:106) +06-02 16:38:44.493 D/StrictMode( 9365): at android.os.Looper.loop(Looper.java:193) +06-02 16:38:44.493 D/StrictMode( 9365): at android.app.ActivityThread.main(ActivityThread.java:6669) +06-02 16:38:44.493 D/StrictMode( 9365): at java.lang.reflect.Method.invoke(Native Method) +06-02 16:38:44.493 D/StrictMode( 9365): at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:493) +06-02 16:38:44.493 D/StrictMode( 9365): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:858) +06-02 16:38:44.494 W/enix.debug:tab( 9414): Unexpected CPU variant for X86 using defaults: x86 +06-02 16:38:44.495 I/ResourcesCompat( 9365): Failed to retrieve rebase() method +06-02 16:38:44.495 I/ResourcesCompat( 9365): java.lang.NoSuchMethodException: rebase [] +06-02 16:38:44.495 I/ResourcesCompat( 9365): at java.lang.Class.getMethod(Class.java:2068) +06-02 16:38:44.495 I/ResourcesCompat( 9365): at java.lang.Class.getDeclaredMethod(Class.java:2047) +06-02 16:38:44.495 I/ResourcesCompat( 9365): at androidx.core.content.res.ResourcesCompat$ThemeCompat$ImplApi23.rebase(ResourcesCompat.java:501) +06-02 16:38:44.495 I/ResourcesCompat( 9365): at androidx.core.content.res.ResourcesCompat$ThemeCompat.rebase(ResourcesCompat.java:477) +06-02 16:38:44.495 I/ResourcesCompat( 9365): at androidx.appcompat.app.AppCompatDelegateImpl.attachBaseContext2(AppCompatDelegateImpl.java:465) +06-02 16:38:44.495 I/ResourcesCompat( 9365): at androidx.appcompat.app.AppCompatActivity.attachBaseContext(AppCompatActivity.java:107) +06-02 16:38:44.495 I/ResourcesCompat( 9365): at mozilla.components.support.locale.LocaleAwareAppCompatActivity.attachBaseContext(LocaleAwareAppCompatActivity.kt:19) +06-02 16:38:44.495 I/ResourcesCompat( 9365): at android.app.Activity.attach(Activity.java:7051) +06-02 16:38:44.495 I/ResourcesCompat( 9365): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2873) +06-02 16:38:44.495 I/ResourcesCompat( 9365): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3048) +06-02 16:38:44.495 I/ResourcesCompat( 9365): at android.app.servertransaction.LaunchActivityItem.execute(LaunchActivityItem.java:78) +06-02 16:38:44.495 I/ResourcesCompat( 9365): at android.app.servertransaction.TransactionExecutor.executeCallbacks(TransactionExecutor.java:108) +06-02 16:38:44.495 I/ResourcesCompat( 9365): at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:68) +06-02 16:38:44.495 I/ResourcesCompat( 9365): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1808) +06-02 16:38:44.495 I/ResourcesCompat( 9365): at android.os.Handler.dispatchMessage(Handler.java:106) +06-02 16:38:44.495 I/ResourcesCompat( 9365): at android.os.Looper.loop(Looper.java:193) +06-02 16:38:44.495 I/ResourcesCompat( 9365): at android.app.ActivityThread.main(ActivityThread.java:6669) +06-02 16:38:44.495 I/ResourcesCompat( 9365): at java.lang.reflect.Method.invoke(Native Method) +06-02 16:38:44.495 I/ResourcesCompat( 9365): at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:493) +06-02 16:38:44.495 I/ResourcesCompat( 9365): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:858) +06-02 16:38:44.515 W/lla.fenix.debu( 9365): Accessing hidden method Landroid/graphics/drawable/Drawable;->getOpticalInsets()Landroid/graphics/Insets; (light greylist, linking) +06-02 16:38:44.515 W/lla.fenix.debu( 9365): Accessing hidden field Landroid/graphics/Insets;->left:I (light greylist, linking) +06-02 16:38:44.515 W/lla.fenix.debu( 9365): Accessing hidden field Landroid/graphics/Insets;->right:I (light greylist, linking) +06-02 16:38:44.515 W/lla.fenix.debu( 9365): Accessing hidden field Landroid/graphics/Insets;->top:I (light greylist, linking) +06-02 16:38:44.515 W/lla.fenix.debu( 9365): Accessing hidden field Landroid/graphics/Insets;->bottom:I (light greylist, linking) +06-02 16:38:44.531 I/enix.debug:tab( 9414): The ClassLoaderContext is a special shared library. +06-02 16:38:44.554 D/GeckoViewStartup( 9365): observe: app-startup +06-02 16:38:44.560 W/lla.fenix.debu( 9365): Accessing hidden method Landroid/view/View;->getAccessibilityDelegate()Landroid/view/View$AccessibilityDelegate; (light greylist, linking) +06-02 16:38:44.561 D/GeckoViewConsole( 9365): enabled = true +06-02 16:38:44.564 W/lla.fenix.debu( 9365): Accessing hidden method Landroid/view/View;->computeFitSystemWindows(Landroid/graphics/Rect;Landroid/graphics/Rect;)Z (light greylist, reflection) +06-02 16:38:44.568 D/StrictMode( 9365): StrictMode policy violation: android.os.strictmode.NonSdkApiUsedViolation: Landroid/view/View;->computeFitSystemWindows(Landroid/graphics/Rect;Landroid/graphics/Rect;)Z +06-02 16:38:44.568 D/StrictMode( 9365): at android.os.StrictMode.lambda$static$1(StrictMode.java:428) +06-02 16:38:44.568 D/StrictMode( 9365): at android.os.-$$Lambda$StrictMode$lu9ekkHJ2HMz0jd3F8K8MnhenxQ.accept(Unknown Source:2) +06-02 16:38:44.568 D/StrictMode( 9365): at java.lang.Class.getDeclaredMethodInternal(Native Method) +06-02 16:38:44.568 D/StrictMode( 9365): at java.lang.Class.getMethod(Class.java:2064) +06-02 16:38:44.568 D/StrictMode( 9365): at java.lang.Class.getDeclaredMethod(Class.java:2047) +06-02 16:38:44.568 D/StrictMode( 9365): at androidx.appcompat.widget.ViewUtils.<clinit>(ViewUtils.java:44) +06-02 16:38:44.568 D/StrictMode( 9365): at androidx.appcompat.widget.ViewUtils.makeOptionalFitsSystemWindows(ViewUtils.java:80) +06-02 16:38:44.568 D/StrictMode( 9365): at androidx.appcompat.app.AppCompatDelegateImpl.createSubDecor(AppCompatDelegateImpl.java:970) +06-02 16:38:44.568 D/StrictMode( 9365): at androidx.appcompat.app.AppCompatDelegateImpl.ensureSubDecor(AppCompatDelegateImpl.java:803) +06-02 16:38:44.568 D/StrictMode( 9365): at androidx.appcompat.app.AppCompatDelegateImpl.setContentView(AppCompatDelegateImpl.java:692) +06-02 16:38:44.568 D/StrictMode( 9365): at androidx.appcompat.app.AppCompatActivity.setContentView(AppCompatActivity.java:170) +06-02 16:38:44.568 D/StrictMode( 9365): at org.mozilla.fenix.HomeActivity.onCreate(HomeActivity.kt:130) +06-02 16:38:44.568 D/StrictMode( 9365): at android.app.Activity.performCreate(Activity.java:7136) +06-02 16:38:44.568 D/StrictMode( 9365): at android.app.Activity.performCreate(Activity.java:7127) +06-02 16:38:44.568 D/StrictMode( 9365): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1271) +06-02 16:38:44.568 D/StrictMode( 9365): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2893) +06-02 16:38:44.568 D/StrictMode( 9365): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3048) +06-02 16:38:44.568 D/StrictMode( 9365): at android.app.servertransaction.LaunchActivityItem.execute(LaunchActivityItem.java:78) +06-02 16:38:44.568 D/StrictMode( 9365): at android.app.servertransaction.TransactionExecutor.executeCallbacks(TransactionExecutor.java:108) +06-02 16:38:44.568 D/StrictMode( 9365): at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:68) +06-02 16:38:44.568 D/StrictMode( 9365): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1808) +06-02 16:38:44.568 D/StrictMode( 9365): at android.os.Handler.dispatchMessage(Handler.java:106) +06-02 16:38:44.568 D/StrictMode( 9365): at android.os.Looper.loop(Looper.java:193) +06-02 16:38:44.568 D/StrictMode( 9365): at android.app.ActivityThread.main(ActivityThread.java:6669) +06-02 16:38:44.568 D/StrictMode( 9365): at java.lang.reflect.Method.invoke(Native Method) +06-02 16:38:44.568 D/StrictMode( 9365): at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:493) +06-02 16:38:44.568 D/StrictMode( 9365): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:858) +06-02 16:38:44.569 W/lla.fenix.debu( 9365): Accessing hidden method Landroid/view/ViewGroup;->makeOptionalFitsSystemWindows()V (light greylist, reflection) +06-02 16:38:44.573 E/storaged( 1741): getDiskStats failed with result NOT_SUPPORTED and size 0 +06-02 16:38:44.577 D/StrictMode( 9365): StrictMode policy violation: android.os.strictmode.NonSdkApiUsedViolation: Landroid/view/ViewGroup;->makeOptionalFitsSystemWindows()V +06-02 16:38:44.577 D/StrictMode( 9365): at android.os.StrictMode.lambda$static$1(StrictMode.java:428) +06-02 16:38:44.577 D/StrictMode( 9365): at android.os.-$$Lambda$StrictMode$lu9ekkHJ2HMz0jd3F8K8MnhenxQ.accept(Unknown Source:2) +06-02 16:38:44.577 D/StrictMode( 9365): at java.lang.Class.getDeclaredMethodInternal(Native Method) +06-02 16:38:44.577 D/StrictMode( 9365): at java.lang.Class.getPublicMethodRecursive(Class.java:2075) +06-02 16:38:44.577 D/StrictMode( 9365): at java.lang.Class.getMethod(Class.java:2063) +06-02 16:38:44.577 D/StrictMode( 9365): at java.lang.Class.getMethod(Class.java:1690) +06-02 16:38:44.577 D/StrictMode( 9365): at androidx.appcompat.widget.ViewUtils.makeOptionalFitsSystemWindows(ViewUtils.java:84) +06-02 16:38:44.577 D/StrictMode( 9365): at androidx.appcompat.app.AppCompatDelegateImpl.createSubDecor(AppCompatDelegateImpl.java:970) +06-02 16:38:44.577 D/StrictMode( 9365): at androidx.appcompat.app.AppCompatDelegateImpl.ensureSubDecor(AppCompatDelegateImpl.java:803) +06-02 16:38:44.577 D/StrictMode( 9365): at androidx.appcompat.app.AppCompatDelegateImpl.setContentView(AppCompatDelegateImpl.java:692) +06-02 16:38:44.577 D/StrictMode( 9365): at androidx.appcompat.app.AppCompatActivity.setContentView(AppCompatActivity.java:170) +06-02 16:38:44.577 D/StrictMode( 9365): at org.mozilla.fenix.HomeActivity.onCreate(HomeActivity.kt:130) +06-02 16:38:44.577 D/StrictMode( 9365): at android.app.Activity.performCreate(Activity.java:7136) +06-02 16:38:44.577 D/StrictMode( 9365): at android.app.Activity.performCreate(Activity.java:7127) +06-02 16:38:44.577 D/StrictMode( 9365): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1271) +06-02 16:38:44.577 D/StrictMode( 9365): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2893) +06-02 16:38:44.577 D/StrictMode( 9365): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3048) +06-02 16:38:44.577 D/StrictMode( 9365): at android.app.servertransaction.LaunchActivityItem.execute(LaunchActivityItem.java:78) +06-02 16:38:44.577 D/StrictMode( 9365): at android.app.servertransaction.TransactionExecutor.executeCallbacks(TransactionExecutor.java:108) +06-02 16:38:44.577 D/StrictMode( 9365): at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:68) +06-02 16:38:44.577 D/StrictMode( 9365): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1808) +06-02 16:38:44.577 D/StrictMode( 9365): at android.os.Handler.dispatchMessage(Handler.java:106) +06-02 16:38:44.577 D/StrictMode( 9365): at android.os.Looper.loop(Looper.java:193) +06-02 16:38:44.577 D/StrictMode( 9365): at android.app.ActivityThread.main(ActivityThread.java:6669) +06-02 16:38:44.577 D/StrictMode( 9365): at java.lang.reflect.Method.invoke(Native Method) +06-02 16:38:44.577 D/StrictMode( 9365): at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:493) +06-02 16:38:44.577 D/StrictMode( 9365): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:858) +06-02 16:38:44.635 I/AJC ( 9365): isPerformanceTest +06-02 16:38:44.636 I/AJC ( 9365): isPerformanceTest : isPhonePlugged: true +06-02 16:38:44.636 I/AJC ( 9365): isPerformanceTest : isAdbEnabled: true +06-02 16:38:44.640 D/App ( 9365): DebugMetricController: track event: org.mozilla.fenix.components.metrics.Event$DismissedOnboarding@da9a582 +06-02 16:38:44.642 I/GeckoConsole( 9365): No chrome package registered for chrome://browser/content/built_in_addons.json +06-02 16:38:44.766 W/lla.fenix.debu( 9365): Accessing hidden method Landroid/graphics/FontFamily;-><init>()V (light greylist, reflection) +06-02 16:38:44.772 D/StrictMode( 9365): StrictMode policy violation: android.os.strictmode.NonSdkApiUsedViolation: Landroid/graphics/FontFamily;-><init>()V +06-02 16:38:44.772 D/StrictMode( 9365): at android.os.StrictMode.lambda$static$1(StrictMode.java:428) +06-02 16:38:44.772 D/StrictMode( 9365): at android.os.-$$Lambda$StrictMode$lu9ekkHJ2HMz0jd3F8K8MnhenxQ.accept(Unknown Source:2) +06-02 16:38:44.772 D/StrictMode( 9365): at java.lang.Class.getDeclaredConstructorInternal(Native Method) +06-02 16:38:44.772 D/StrictMode( 9365): at java.lang.Class.getConstructor0(Class.java:2325) +06-02 16:38:44.772 D/StrictMode( 9365): at java.lang.Class.getConstructor(Class.java:1725) +06-02 16:38:44.772 D/StrictMode( 9365): at androidx.core.graphics.TypefaceCompatApi26Impl.obtainFontFamilyCtor(TypefaceCompatApi26Impl.java:321) +06-02 16:38:44.772 D/StrictMode( 9365): at androidx.core.graphics.TypefaceCompatApi26Impl.<init>(TypefaceCompatApi26Impl.java:84) +06-02 16:38:44.772 D/StrictMode( 9365): at androidx.core.graphics.TypefaceCompatApi28Impl.<init>(TypefaceCompatApi28Impl.java:36) +06-02 16:38:44.772 D/StrictMode( 9365): at androidx.core.graphics.TypefaceCompat.<clinit>(TypefaceCompat.java:51) +06-02 16:38:44.772 D/StrictMode( 9365): at androidx.core.graphics.TypefaceCompat.create(TypefaceCompat.java:194) +06-02 16:38:44.772 D/StrictMode( 9365): at androidx.appcompat.widget.AppCompatTextView.setTypeface(AppCompatTextView.java:708) +06-02 16:38:44.772 D/StrictMode( 9365): at android.widget.TextView.resolveStyleAndSetTypeface(TextView.java:2037) +06-02 16:38:44.772 D/StrictMode( 9365): at android.widget.TextView.setTypefaceFromAttrs(TextView.java:2008) +06-02 16:38:44.772 D/StrictMode( 9365): at android.widget.TextView.applyTextAppearance(TextView.java:3640) +06-02 16:38:44.772 D/StrictMode( 9365): at android.widget.TextView.<init>(TextView.java:1498) +06-02 16:38:44.772 D/StrictMode( 9365): at android.widget.TextView.<init>(TextView.java:869) +06-02 16:38:44.772 D/StrictMode( 9365): at androidx.appcompat.widget.AppCompatTextView.<init>(AppCompatTextView.java:100) +06-02 16:38:44.772 D/StrictMode( 9365): at androidx.appcompat.widget.AppCompatTextView.<init>(AppCompatTextView.java:95) +06-02 16:38:44.772 D/StrictMode( 9365): at androidx.appcompat.app.AppCompatViewInflater.createTextView(AppCompatViewInflater.java:194) +06-02 16:38:44.772 D/StrictMode( 9365): at androidx.appcompat.app.AppCompatViewInflater.createView(AppCompatViewInflater.java:115) +06-02 16:38:44.772 D/StrictMode( 9365): at androidx.appcompat.app.AppCompatDelegateImpl.createView(AppCompatDelegateImpl.java:1548) +06-02 16:38:44.772 D/StrictMode( 9365): at androidx.appcompat.app.AppCompatDelegateImpl.onCreateView(AppCompatDelegateImpl.java:1599) +06-02 16:38:44.772 D/StrictMode( 9365): at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:772) +06-02 16:38:44.772 D/StrictMode( 9365): at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:730) +06-02 16:38:44.772 D/StrictMode( 9365): at android.view.LayoutInflater.rInflate(LayoutInflater.java:863) +06-02 16:38:44.772 D/StrictMode( 9365): at android.view.LayoutInflater.rInflateChildren(LayoutInflater.java:824) +06-02 16:38:44.772 D/StrictMode( 9365): at android.view.LayoutInflater.rInflate(LayoutInflater.java:866) +06-02 16:38:44.772 D/StrictMode( 9365): at android.view.LayoutInflater.inflate(LayoutInflater.java:489) +06-02 16:38:44.772 D/StrictMode( 9365): at android.view.LayoutInflater.inflate(LayoutInflater.java:423) +06-02 16:38:44.772 D/StrictMode( 9365): at android.view.LayoutInflater.inflate(LayoutInflater.java:374) +06-02 16:38:44.772 D/StrictMode( 9365): at org.mozilla.fenix.components.toolbar.TabCounter.<init>(TabCounter.kt:30) +06-02 16:38:44.772 D/StrictMode( 9365): at org.mozilla.fenix.components.toolbar.TabCounter.<init>(TabCounter.kt:22) +06-02 16:38:44.772 D/StrictMode( 9365): at org.mozilla.fenix.components.toolbar.TabCounter.<init>(Unknown Source:6) +06-02 16:38:44.772 D/StrictMode( 9365): at java.lang.reflect.Constructor.newInstance0(Native Method) +06-02 16:38:44.772 D/StrictMode( 9365): at java.lang.reflect.Constructor.newInstance(Constructor.java:343) +06-02 16:38:44.772 D/StrictMode( 9365): at android.view.LayoutInflater.createView(LayoutInflater.java:647) +06-02 16:38:44.772 D/StrictMode( 9365): at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:790) +06-02 16:38:44.772 D/StrictMode( 9365): at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:730) +06-02 16:38:44.772 D/StrictMode( 9365): at android.view.LayoutInflater.rInflate(LayoutInflater.java:863) +06-02 16:38:44.772 D/StrictMode( 9365): at android.view.LayoutInflater.rInflateChildren(LayoutInflater.java:824) +06-02 16:38:44.772 D/StrictMode( 9365): at android.view.LayoutInflater.rInflate(LayoutInflater.java:866) +06-02 16:38:44.772 D/StrictMode( 9365): at android.view.LayoutInflater.rInflateChildren(LayoutInflater.java:824) +06-02 16:38:44.772 D/StrictMode( 9365): at android.view.LayoutInflater.inflate(LayoutInflater.java:515) +06-02 16:38:44.772 D/StrictMode( 9365): at android.view.LayoutInflater.inflate(LayoutInflater.java:423) +06-02 16:38:44.772 D/StrictMode( 9365): at org.mozilla.fenix.home.HomeFragment.onCreateView(HomeFragment.kt:183) +06-02 16:38:44.772 D/StrictMode( 9365): at androidx.fragment.app.Fragment.performCreateView(Fragment.java:2698) +06-02 16:38:44.772 D/StrictMode( 9365): at androidx.fragment.app.FragmentStateManager.createView(FragmentStateManager.java:320) +06-02 16:38:44.772 D/StrictMode( 9365): at androidx.fragment.app.FragmentManager.moveToState(FragmentManager.java:1187) +06-02 16:38:44.772 D/StrictMode( 9365): at androidx.fragment.app.FragmentManager.addAddedFragments(FragmentManager.java:2224) +06-02 16:38:44.772 D/StrictMode( 9365): at androidx.fragment.app.FragmentManager.executeOpsTogether(FragmentManager.java:1997) +06-02 16:38:44.772 D/StrictMode( 9365): at androidx.fragment.app.FragmentManager.removeRedundantOperationsAndExecute(FragmentManager.java:1953) +06-02 16:38:44.772 D/StrictMode( 9365): at androidx.fragment.app.FragmentManager.execPendingActions(FragmentManager.java:1849) +06-02 16:38:44.772 D/StrictMode( 9365): at +06-02 16:38:44.772 W/lla.fenix.debu( 9365): Accessing hidden method Landroid/graphics/FontFamily;->addFontFromAssetManager(Landroid/content/res/AssetManager;Ljava/lang/String;IZIII[Landroid/graphics/fonts/FontVariationAxis;)Z (light greylist, reflection) +06-02 16:38:44.774 D/StrictMode( 9365): StrictMode policy violation: android.os.strictmode.NonSdkApiUsedViolation: Landroid/graphics/FontFamily;->addFontFromAssetManager(Landroid/content/res/AssetManager;Ljava/lang/String;IZIII[Landroid/graphics/fonts/FontVariationAxis;)Z +06-02 16:38:44.774 D/StrictMode( 9365): at android.os.StrictMode.lambda$static$1(StrictMode.java:428) +06-02 16:38:44.774 D/StrictMode( 9365): at android.os.-$$Lambda$StrictMode$lu9ekkHJ2HMz0jd3F8K8MnhenxQ.accept(Unknown Source:2) +06-02 16:38:44.774 D/StrictMode( 9365): at java.lang.Class.getDeclaredMethodInternal(Native Method) +06-02 16:38:44.774 D/StrictMode( 9365): at java.lang.Class.getPublicMethodRecursive(Class.java:2075) +06-02 16:38:44.774 D/StrictMode( 9365): at java.lang.Class.getMethod(Class.java:2063) +06-02 16:38:44.774 D/StrictMode( 9365): at java.lang.Class.getMethod(Class.java:1690) +06-02 16:38:44.774 D/StrictMode( 9365): at androidx.core.graphics.TypefaceCompatApi26Impl.obtainAddFontFromAssetManagerMethod(TypefaceCompatApi26Impl.java:326) +06-02 16:38:44.774 D/StrictMode( 9365): at androidx.core.graphics.TypefaceCompatApi26Impl.<init>(TypefaceCompatApi26Impl.java:85) +06-02 16:38:44.774 D/StrictMode( 9365): at androidx.core.graphics.TypefaceCompatApi28Impl.<init>(TypefaceCompatApi28Impl.java:36) +06-02 16:38:44.774 D/StrictMode( 9365): at androidx.core.graphics.TypefaceCompat.<clinit>(TypefaceCompat.java:51) +06-02 16:38:44.774 D/StrictMode( 9365): at androidx.core.graphics.TypefaceCompat.create(TypefaceCompat.java:194) +06-02 16:38:44.774 D/StrictMode( 9365): at androidx.appcompat.widget.AppCompatTextView.setTypeface(AppCompatTextView.java:708) +06-02 16:38:44.774 D/StrictMode( 9365): at android.widget.TextView.resolveStyleAndSetTypeface(TextView.java:2037) +06-02 16:38:44.774 D/StrictMode( 9365): at android.widget.TextView.setTypefaceFromAttrs(TextView.java:2008) +06-02 16:38:44.774 D/StrictMode( 9365): at android.widget.TextView.applyTextAppearance(TextView.java:3640) +06-02 16:38:44.774 D/StrictMode( 9365): at android.widget.TextView.<init>(TextView.java:1498) +06-02 16:38:44.774 D/StrictMode( 9365): at android.widget.TextView.<init>(TextView.java:869) +06-02 16:38:44.774 D/StrictMode( 9365): at androidx.appcompat.widget.AppCompatTextView.<init>(AppCompatTextView.java:100) +06-02 16:38:44.774 D/StrictMode( 9365): at androidx.appcompat.widget.AppCompatTextView.<init>(AppCompatTextView.java:95) +06-02 16:38:44.774 D/StrictMode( 9365): at androidx.appcompat.app.AppCompatViewInflater.createTextView(AppCompatViewInflater.java:194) +06-02 16:38:44.774 D/StrictMode( 9365): at androidx.appcompat.app.AppCompatViewInflater.createView(AppCompatViewInflater.java:115) +06-02 16:38:44.774 D/StrictMode( 9365): at androidx.appcompat.app.AppCompatDelegateImpl.createView(AppCompatDelegateImpl.java:1548) +06-02 16:38:44.774 D/StrictMode( 9365): at androidx.appcompat.app.AppCompatDelegateImpl.onCreateView(AppCompatDelegateImpl.java:1599) +06-02 16:38:44.774 D/StrictMode( 9365): at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:772) +06-02 16:38:44.774 D/StrictMode( 9365): at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:730) +06-02 16:38:44.774 D/StrictMode( 9365): at android.view.LayoutInflater.rInflate(LayoutInflater.java:863) +06-02 16:38:44.774 D/StrictMode( 9365): at android.view.LayoutInflater.rInflateChildren(LayoutInflater.java:824) +06-02 16:38:44.774 D/StrictMode( 9365): at android.view.LayoutInflater.rInflate(LayoutInflater.java:866) +06-02 16:38:44.774 D/StrictMode( 9365): at android.view.LayoutInflater.inflate(LayoutInflater.java:489) +06-02 16:38:44.774 D/StrictMode( 9365): at android.view.LayoutInflater.inflate(LayoutInflater.java:423) +06-02 16:38:44.774 D/StrictMode( 9365): at android.view.LayoutInflater.inflate(LayoutInflater.java:374) +06-02 16:38:44.774 D/StrictMode( 9365): at org.mozilla.fenix.components.toolbar.TabCounter.<init>(TabCounter.kt:30) +06-02 16:38:44.774 D/StrictMode( 9365): at org.mozilla.fenix.components.toolbar.TabCounter.<init>(TabCounter.kt:22) +06-02 16:38:44.774 D/StrictMode( 9365): at org.mozilla.fenix.components.toolbar.TabCounter.<init>(Unknown Source:6) +06-02 16:38:44.774 D/StrictMode( 9365): at java.lang.reflect.Constructor.newInstance0(Native Method) +06-02 16:38:44.774 D/StrictMode( 9365): at java.lang.reflect.Constructor.newInstance(Constructor.java:343) +06-02 16:38:44.774 D/StrictMode( 9365): at android.view.LayoutInflater.createView(LayoutInflater.java:647) +06-02 16:38:44.774 D/StrictMode( 9365): at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:790) +06-02 16:38:44.774 D/StrictMode( 9365): at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:730) +06-02 16:38:44.774 D/StrictMode( 9365): at android.view.LayoutInflater.rInflate(LayoutInflater.java:863) +06-02 16:38:44.774 D/StrictMode( 9365): at android.view.LayoutInflater.rInflateChildren(LayoutInflater.java:824) +06-02 16:38:44.774 D/StrictMode( 9365): at android.view.LayoutInflater.rInflate(LayoutInflater.java:866) +06-02 16:38:44.774 D/StrictMode( 9365): at android.view.LayoutInflater.rInflateChildren(LayoutInflater.java:824) +06-02 16:38:44.774 D/StrictMode( 9365): at android.view.LayoutInflater.inflate(LayoutInflater.java:515) +06-02 16:38:44.774 D/StrictMode( 9365): at android.view.LayoutInflater.inflate(LayoutInflater.java:423) +06-02 16:38:44.774 D/StrictMode( 9365): at org.mozilla.fenix.home.HomeFragment.onCreateView(HomeFragment.kt:183) +06-02 16:38:44.774 D/StrictMode( 9365): at androidx.fragment.app.Fragment.performCreateView(Fragment.java:2698) +06-02 16:38:44.774 D/StrictMode( 9365): at androidx.fragment.app.FragmentStateManager.createView(FragmentStateManager.java:320) +06-02 16:38:44.774 D/StrictMode( 9365): at androidx.fragment.app.FragmentManager.moveToState(FragmentManager.java:1187) +06-02 16:38:44.774 D/StrictMode( 9365): at androidx.fragment.app.FragmentManager.addAddedFragments(FragmentManager.java:2224) +06-02 16:38:44.774 D/StrictMode( 9365): at androidx.fragment.app.FragmentManager.executeOpsTogether(FragmentManager.java:1997) +06-02 16:38:44.774 D/StrictMode( 9365): at androidx.fragme +06-02 16:38:44.774 W/lla.fenix.debu( 9365): Accessing hidden method Landroid/graphics/FontFamily;->addFontFromBuffer(Ljava/nio/ByteBuffer;I[Landroid/graphics/fonts/FontVariationAxis;II)Z (light greylist, reflection) +06-02 16:38:44.777 D/StrictMode( 9365): StrictMode policy violation: android.os.strictmode.NonSdkApiUsedViolation: Landroid/graphics/FontFamily;->addFontFromBuffer(Ljava/nio/ByteBuffer;I[Landroid/graphics/fonts/FontVariationAxis;II)Z +06-02 16:38:44.777 D/StrictMode( 9365): at android.os.StrictMode.lambda$static$1(StrictMode.java:428) +06-02 16:38:44.777 D/StrictMode( 9365): at android.os.-$$Lambda$StrictMode$lu9ekkHJ2HMz0jd3F8K8MnhenxQ.accept(Unknown Source:2) +06-02 16:38:44.777 D/StrictMode( 9365): at java.lang.Class.getDeclaredMethodInternal(Native Method) +06-02 16:38:44.777 D/StrictMode( 9365): at java.lang.Class.getPublicMethodRecursive(Class.java:2075) +06-02 16:38:44.777 D/StrictMode( 9365): at java.lang.Class.getMethod(Class.java:2063) +06-02 16:38:44.777 D/StrictMode( 9365): at java.lang.Class.getMethod(Class.java:1690) +06-02 16:38:44.777 D/StrictMode( 9365): at androidx.core.graphics.TypefaceCompatApi26Impl.obtainAddFontFromBufferMethod(TypefaceCompatApi26Impl.java:333) +06-02 16:38:44.777 D/StrictMode( 9365): at androidx.core.graphics.TypefaceCompatApi26Impl.<init>(TypefaceCompatApi26Impl.java:86) +06-02 16:38:44.777 D/StrictMode( 9365): at androidx.core.graphics.TypefaceCompatApi28Impl.<init>(TypefaceCompatApi28Impl.java:36) +06-02 16:38:44.777 D/StrictMode( 9365): at androidx.core.graphics.TypefaceCompat.<clinit>(TypefaceCompat.java:51) +06-02 16:38:44.777 D/StrictMode( 9365): at androidx.core.graphics.TypefaceCompat.create(TypefaceCompat.java:194) +06-02 16:38:44.777 D/StrictMode( 9365): at androidx.appcompat.widget.AppCompatTextView.setTypeface(AppCompatTextView.java:708) +06-02 16:38:44.777 D/StrictMode( 9365): at android.widget.TextView.resolveStyleAndSetTypeface(TextView.java:2037) +06-02 16:38:44.777 D/StrictMode( 9365): at android.widget.TextView.setTypefaceFromAttrs(TextView.java:2008) +06-02 16:38:44.777 D/StrictMode( 9365): at android.widget.TextView.applyTextAppearance(TextView.java:3640) +06-02 16:38:44.777 D/StrictMode( 9365): at android.widget.TextView.<init>(TextView.java:1498) +06-02 16:38:44.777 D/StrictMode( 9365): at android.widget.TextView.<init>(TextView.java:869) +06-02 16:38:44.777 D/StrictMode( 9365): at androidx.appcompat.widget.AppCompatTextView.<init>(AppCompatTextView.java:100) +06-02 16:38:44.777 D/StrictMode( 9365): at androidx.appcompat.widget.AppCompatTextView.<init>(AppCompatTextView.java:95) +06-02 16:38:44.777 D/StrictMode( 9365): at androidx.appcompat.app.AppCompatViewInflater.createTextView(AppCompatViewInflater.java:194) +06-02 16:38:44.777 D/StrictMode( 9365): at androidx.appcompat.app.AppCompatViewInflater.createView(AppCompatViewInflater.java:115) +06-02 16:38:44.777 D/StrictMode( 9365): at androidx.appcompat.app.AppCompatDelegateImpl.createView(AppCompatDelegateImpl.java:1548) +06-02 16:38:44.777 D/StrictMode( 9365): at androidx.appcompat.app.AppCompatDelegateImpl.onCreateView(AppCompatDelegateImpl.java:1599) +06-02 16:38:44.777 D/StrictMode( 9365): at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:772) +06-02 16:38:44.777 D/StrictMode( 9365): at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:730) +06-02 16:38:44.777 D/StrictMode( 9365): at android.view.LayoutInflater.rInflate(LayoutInflater.java:863) +06-02 16:38:44.777 D/StrictMode( 9365): at android.view.LayoutInflater.rInflateChildren(LayoutInflater.java:824) +06-02 16:38:44.777 D/StrictMode( 9365): at android.view.LayoutInflater.rInflate(LayoutInflater.java:866) +06-02 16:38:44.777 D/StrictMode( 9365): at android.view.LayoutInflater.inflate(LayoutInflater.java:489) +06-02 16:38:44.777 D/StrictMode( 9365): at android.view.LayoutInflater.inflate(LayoutInflater.java:423) +06-02 16:38:44.777 D/StrictMode( 9365): at android.view.LayoutInflater.inflate(LayoutInflater.java:374) +06-02 16:38:44.777 D/StrictMode( 9365): at org.mozilla.fenix.components.toolbar.TabCounter.<init>(TabCounter.kt:30) +06-02 16:38:44.777 D/StrictMode( 9365): at org.mozilla.fenix.components.toolbar.TabCounter.<init>(TabCounter.kt:22) +06-02 16:38:44.777 D/StrictMode( 9365): at org.mozilla.fenix.components.toolbar.TabCounter.<init>(Unknown Source:6) +06-02 16:38:44.777 D/StrictMode( 9365): at java.lang.reflect.Constructor.newInstance0(Native Method) +06-02 16:38:44.777 D/StrictMode( 9365): at java.lang.reflect.Constructor.newInstance(Constructor.java:343) +06-02 16:38:44.777 D/StrictMode( 9365): at android.view.LayoutInflater.createView(LayoutInflater.java:647) +06-02 16:38:44.777 D/StrictMode( 9365): at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:790) +06-02 16:38:44.777 D/StrictMode( 9365): at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:730) +06-02 16:38:44.777 D/StrictMode( 9365): at android.view.LayoutInflater.rInflate(LayoutInflater.java:863) +06-02 16:38:44.777 D/StrictMode( 9365): at android.view.LayoutInflater.rInflateChildren(LayoutInflater.java:824) +06-02 16:38:44.777 D/StrictMode( 9365): at android.view.LayoutInflater.rInflate(LayoutInflater.java:866) +06-02 16:38:44.777 D/StrictMode( 9365): at android.view.LayoutInflater.rInflateChildren(LayoutInflater.java:824) +06-02 16:38:44.777 D/StrictMode( 9365): at android.view.LayoutInflater.inflate(LayoutInflater.java:515) +06-02 16:38:44.777 D/StrictMode( 9365): at android.view.LayoutInflater.inflate(LayoutInflater.java:423) +06-02 16:38:44.777 D/StrictMode( 9365): at org.mozilla.fenix.home.HomeFragment.onCreateView(HomeFragment.kt:183) +06-02 16:38:44.777 D/StrictMode( 9365): at androidx.fragment.app.Fragment.performCreateView(Fragment.java:2698) +06-02 16:38:44.777 D/StrictMode( 9365): at androidx.fragment.app.FragmentStateManager.createView(FragmentStateManager.java:320) +06-02 16:38:44.777 D/StrictMode( 9365): at androidx.fragment.app.FragmentManager.moveToState(FragmentManager.java:1187) +06-02 16:38:44.777 D/StrictMode( 9365): at androidx.fragment.app.FragmentManager.addAddedFragments(FragmentManager.java:2224) +06-02 16:38:44.777 D/StrictMode( 9365): at androidx.fragment.app.FragmentManager.executeOpsTogether(FragmentManager.java:1997) +06-02 16:38:44.777 D/StrictMode( 9365): at androidx.fragment.app.FragmentManager.removeRedundantOperati +06-02 16:38:44.777 W/lla.fenix.debu( 9365): Accessing hidden method Landroid/graphics/FontFamily;->freeze()Z (light greylist, reflection) +06-02 16:38:44.780 D/StrictMode( 9365): StrictMode policy violation: android.os.strictmode.NonSdkApiUsedViolation: Landroid/graphics/FontFamily;->freeze()Z +06-02 16:38:44.780 D/StrictMode( 9365): at android.os.StrictMode.lambda$static$1(StrictMode.java:428) +06-02 16:38:44.780 D/StrictMode( 9365): at android.os.-$$Lambda$StrictMode$lu9ekkHJ2HMz0jd3F8K8MnhenxQ.accept(Unknown Source:2) +06-02 16:38:44.780 D/StrictMode( 9365): at java.lang.Class.getDeclaredMethodInternal(Native Method) +06-02 16:38:44.780 D/StrictMode( 9365): at java.lang.Class.getPublicMethodRecursive(Class.java:2075) +06-02 16:38:44.780 D/StrictMode( 9365): at java.lang.Class.getMethod(Class.java:2063) +06-02 16:38:44.780 D/StrictMode( 9365): at java.lang.Class.getMethod(Class.java:1690) +06-02 16:38:44.780 D/StrictMode( 9365): at androidx.core.graphics.TypefaceCompatApi26Impl.obtainFreezeMethod(TypefaceCompatApi26Impl.java:339) +06-02 16:38:44.780 D/StrictMode( 9365): at androidx.core.graphics.TypefaceCompatApi26Impl.<init>(TypefaceCompatApi26Impl.java:87) +06-02 16:38:44.780 D/StrictMode( 9365): at androidx.core.graphics.TypefaceCompatApi28Impl.<init>(TypefaceCompatApi28Impl.java:36) +06-02 16:38:44.780 D/StrictMode( 9365): at androidx.core.graphics.TypefaceCompat.<clinit>(TypefaceCompat.java:51) +06-02 16:38:44.780 D/StrictMode( 9365): at androidx.core.graphics.TypefaceCompat.create(TypefaceCompat.java:194) +06-02 16:38:44.780 D/StrictMode( 9365): at androidx.appcompat.widget.AppCompatTextView.setTypeface(AppCompatTextView.java:708) +06-02 16:38:44.780 D/StrictMode( 9365): at android.widget.TextView.resolveStyleAndSetTypeface(TextView.java:2037) +06-02 16:38:44.780 D/StrictMode( 9365): at android.widget.TextView.setTypefaceFromAttrs(TextView.java:2008) +06-02 16:38:44.780 D/StrictMode( 9365): at android.widget.TextView.applyTextAppearance(TextView.java:3640) +06-02 16:38:44.780 D/StrictMode( 9365): at android.widget.TextView.<init>(TextView.java:1498) +06-02 16:38:44.780 D/StrictMode( 9365): at android.widget.TextView.<init>(TextView.java:869) +06-02 16:38:44.780 D/StrictMode( 9365): at androidx.appcompat.widget.AppCompatTextView.<init>(AppCompatTextView.java:100) +06-02 16:38:44.780 D/StrictMode( 9365): at androidx.appcompat.widget.AppCompatTextView.<init>(AppCompatTextView.java:95) +06-02 16:38:44.780 D/StrictMode( 9365): at androidx.appcompat.app.AppCompatViewInflater.createTextView(AppCompatViewInflater.java:194) +06-02 16:38:44.780 D/StrictMode( 9365): at androidx.appcompat.app.AppCompatViewInflater.createView(AppCompatViewInflater.java:115) +06-02 16:38:44.780 D/StrictMode( 9365): at androidx.appcompat.app.AppCompatDelegateImpl.createView(AppCompatDelegateImpl.java:1548) +06-02 16:38:44.780 D/StrictMode( 9365): at androidx.appcompat.app.AppCompatDelegateImpl.onCreateView(AppCompatDelegateImpl.java:1599) +06-02 16:38:44.780 D/StrictMode( 9365): at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:772) +06-02 16:38:44.780 D/StrictMode( 9365): at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:730) +06-02 16:38:44.780 D/StrictMode( 9365): at android.view.LayoutInflater.rInflate(LayoutInflater.java:863) +06-02 16:38:44.780 D/StrictMode( 9365): at android.view.LayoutInflater.rInflateChildren(LayoutInflater.java:824) +06-02 16:38:44.780 D/StrictMode( 9365): at android.view.LayoutInflater.rInflate(LayoutInflater.java:866) +06-02 16:38:44.780 D/StrictMode( 9365): at android.view.LayoutInflater.inflate(LayoutInflater.java:489) +06-02 16:38:44.780 D/StrictMode( 9365): at android.view.LayoutInflater.inflate(LayoutInflater.java:423) +06-02 16:38:44.780 D/StrictMode( 9365): at android.view.LayoutInflater.inflate(LayoutInflater.java:374) +06-02 16:38:44.780 D/StrictMode( 9365): at org.mozilla.fenix.components.toolbar.TabCounter.<init>(TabCounter.kt:30) +06-02 16:38:44.780 D/StrictMode( 9365): at org.mozilla.fenix.components.toolbar.TabCounter.<init>(TabCounter.kt:22) +06-02 16:38:44.780 D/StrictMode( 9365): at org.mozilla.fenix.components.toolbar.TabCounter.<init>(Unknown Source:6) +06-02 16:38:44.780 D/StrictMode( 9365): at java.lang.reflect.Constructor.newInstance0(Native Method) +06-02 16:38:44.780 D/StrictMode( 9365): at java.lang.reflect.Constructor.newInstance(Constructor.java:343) +06-02 16:38:44.780 D/StrictMode( 9365): at android.view.LayoutInflater.createView(LayoutInflater.java:647) +06-02 16:38:44.780 D/StrictMode( 9365): at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:790) +06-02 16:38:44.780 D/StrictMode( 9365): at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:730) +06-02 16:38:44.780 D/StrictMode( 9365): at android.view.LayoutInflater.rInflate(LayoutInflater.java:863) +06-02 16:38:44.780 D/StrictMode( 9365): at android.view.LayoutInflater.rInflateChildren(LayoutInflater.java:824) +06-02 16:38:44.780 D/StrictMode( 9365): at android.view.LayoutInflater.rInflate(LayoutInflater.java:866) +06-02 16:38:44.780 D/StrictMode( 9365): at android.view.LayoutInflater.rInflateChildren(LayoutInflater.java:824) +06-02 16:38:44.780 D/StrictMode( 9365): at android.view.LayoutInflater.inflate(LayoutInflater.java:515) +06-02 16:38:44.780 D/StrictMode( 9365): at android.view.LayoutInflater.inflate(LayoutInflater.java:423) +06-02 16:38:44.780 D/StrictMode( 9365): at org.mozilla.fenix.home.HomeFragment.onCreateView(HomeFragment.kt:183) +06-02 16:38:44.780 D/StrictMode( 9365): at androidx.fragment.app.Fragment.performCreateView(Fragment.java:2698) +06-02 16:38:44.780 D/StrictMode( 9365): at androidx.fragment.app.FragmentStateManager.createView(FragmentStateManager.java:320) +06-02 16:38:44.780 D/StrictMode( 9365): at androidx.fragment.app.FragmentManager.moveToState(FragmentManager.java:1187) +06-02 16:38:44.780 D/StrictMode( 9365): at androidx.fragment.app.FragmentManager.addAddedFragments(FragmentManager.java:2224) +06-02 16:38:44.780 D/StrictMode( 9365): at androidx.fragment.app.FragmentManager.executeOpsTogether(FragmentManager.java:1997) +06-02 16:38:44.780 D/StrictMode( 9365): at androidx.fragment.app.FragmentManager.removeRedundantOperationsAndExecute(FragmentManager.java:1953) +06-02 16:38:44.780 D/StrictMode( 9365): at androidx.fragment.app.FragmentManager.execPe +06-02 16:38:44.780 W/lla.fenix.debu( 9365): Accessing hidden method Landroid/graphics/FontFamily;->abortCreation()V (light greylist, reflection) +06-02 16:38:44.781 D/StrictMode( 9365): StrictMode policy violation: android.os.strictmode.NonSdkApiUsedViolation: Landroid/graphics/FontFamily;->abortCreation()V +06-02 16:38:44.781 D/StrictMode( 9365): at android.os.StrictMode.lambda$static$1(StrictMode.java:428) +06-02 16:38:44.781 D/StrictMode( 9365): at android.os.-$$Lambda$StrictMode$lu9ekkHJ2HMz0jd3F8K8MnhenxQ.accept(Unknown Source:2) +06-02 16:38:44.781 D/StrictMode( 9365): at java.lang.Class.getDeclaredMethodInternal(Native Method) +06-02 16:38:44.781 D/StrictMode( 9365): at java.lang.Class.getPublicMethodRecursive(Class.java:2075) +06-02 16:38:44.781 D/StrictMode( 9365): at java.lang.Class.getMethod(Class.java:2063) +06-02 16:38:44.781 D/StrictMode( 9365): at java.lang.Class.getMethod(Class.java:1690) +06-02 16:38:44.781 D/StrictMode( 9365): at androidx.core.graphics.TypefaceCompatApi26Impl.obtainAbortCreationMethod(TypefaceCompatApi26Impl.java:343) +06-02 16:38:44.781 D/StrictMode( 9365): at androidx.core.graphics.TypefaceCompatApi26Impl.<init>(TypefaceCompatApi26Impl.java:88) +06-02 16:38:44.781 D/StrictMode( 9365): at androidx.core.graphics.TypefaceCompatApi28Impl.<init>(TypefaceCompatApi28Impl.java:36) +06-02 16:38:44.781 D/StrictMode( 9365): at androidx.core.graphics.TypefaceCompat.<clinit>(TypefaceCompat.java:51) +06-02 16:38:44.781 D/StrictMode( 9365): at androidx.core.graphics.TypefaceCompat.create(TypefaceCompat.java:194) +06-02 16:38:44.781 D/StrictMode( 9365): at androidx.appcompat.widget.AppCompatTextView.setTypeface(AppCompatTextView.java:708) +06-02 16:38:44.781 D/StrictMode( 9365): at android.widget.TextView.resolveStyleAndSetTypeface(TextView.java:2037) +06-02 16:38:44.781 D/StrictMode( 9365): at android.widget.TextView.setTypefaceFromAttrs(TextView.java:2008) +06-02 16:38:44.781 D/StrictMode( 9365): at android.widget.TextView.applyTextAppearance(TextView.java:3640) +06-02 16:38:44.781 D/StrictMode( 9365): at android.widget.TextView.<init>(TextView.java:1498) +06-02 16:38:44.781 D/StrictMode( 9365): at android.widget.TextView.<init>(TextView.java:869) +06-02 16:38:44.781 D/StrictMode( 9365): at androidx.appcompat.widget.AppCompatTextView.<init>(AppCompatTextView.java:100) +06-02 16:38:44.781 D/StrictMode( 9365): at androidx.appcompat.widget.AppCompatTextView.<init>(AppCompatTextView.java:95) +06-02 16:38:44.781 D/StrictMode( 9365): at androidx.appcompat.app.AppCompatViewInflater.createTextView(AppCompatViewInflater.java:194) +06-02 16:38:44.781 D/StrictMode( 9365): at androidx.appcompat.app.AppCompatViewInflater.createView(AppCompatViewInflater.java:115) +06-02 16:38:44.781 D/StrictMode( 9365): at androidx.appcompat.app.AppCompatDelegateImpl.createView(AppCompatDelegateImpl.java:1548) +06-02 16:38:44.781 D/StrictMode( 9365): at androidx.appcompat.app.AppCompatDelegateImpl.onCreateView(AppCompatDelegateImpl.java:1599) +06-02 16:38:44.781 D/StrictMode( 9365): at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:772) +06-02 16:38:44.781 D/StrictMode( 9365): at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:730) +06-02 16:38:44.781 D/StrictMode( 9365): at android.view.LayoutInflater.rInflate(LayoutInflater.java:863) +06-02 16:38:44.781 D/StrictMode( 9365): at android.view.LayoutInflater.rInflateChildren(LayoutInflater.java:824) +06-02 16:38:44.781 D/StrictMode( 9365): at android.view.LayoutInflater.rInflate(LayoutInflater.java:866) +06-02 16:38:44.781 D/StrictMode( 9365): at android.view.LayoutInflater.inflate(LayoutInflater.java:489) +06-02 16:38:44.781 D/StrictMode( 9365): at android.view.LayoutInflater.inflate(LayoutInflater.java:423) +06-02 16:38:44.781 D/StrictMode( 9365): at android.view.LayoutInflater.inflate(LayoutInflater.java:374) +06-02 16:38:44.781 D/StrictMode( 9365): at org.mozilla.fenix.components.toolbar.TabCounter.<init>(TabCounter.kt:30) +06-02 16:38:44.781 D/StrictMode( 9365): at org.mozilla.fenix.components.toolbar.TabCounter.<init>(TabCounter.kt:22) +06-02 16:38:44.781 D/StrictMode( 9365): at org.mozilla.fenix.components.toolbar.TabCounter.<init>(Unknown Source:6) +06-02 16:38:44.781 D/StrictMode( 9365): at java.lang.reflect.Constructor.newInstance0(Native Method) +06-02 16:38:44.781 D/StrictMode( 9365): at java.lang.reflect.Constructor.newInstance(Constructor.java:343) +06-02 16:38:44.781 D/StrictMode( 9365): at android.view.LayoutInflater.createView(LayoutInflater.java:647) +06-02 16:38:44.781 D/StrictMode( 9365): at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:790) +06-02 16:38:44.781 D/StrictMode( 9365): at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:730) +06-02 16:38:44.781 D/StrictMode( 9365): at android.view.LayoutInflater.rInflate(LayoutInflater.java:863) +06-02 16:38:44.781 D/StrictMode( 9365): at android.view.LayoutInflater.rInflateChildren(LayoutInflater.java:824) +06-02 16:38:44.781 D/StrictMode( 9365): at android.view.LayoutInflater.rInflate(LayoutInflater.java:866) +06-02 16:38:44.781 D/StrictMode( 9365): at android.view.LayoutInflater.rInflateChildren(LayoutInflater.java:824) +06-02 16:38:44.781 D/StrictMode( 9365): at android.view.LayoutInflater.inflate(LayoutInflater.java:515) +06-02 16:38:44.781 D/StrictMode( 9365): at android.view.LayoutInflater.inflate(LayoutInflater.java:423) +06-02 16:38:44.781 D/StrictMode( 9365): at org.mozilla.fenix.home.HomeFragment.onCreateView(HomeFragment.kt:183) +06-02 16:38:44.781 D/StrictMode( 9365): at androidx.fragment.app.Fragment.performCreateView(Fragment.java:2698) +06-02 16:38:44.781 D/StrictMode( 9365): at androidx.fragment.app.FragmentStateManager.createView(FragmentStateManager.java:320) +06-02 16:38:44.781 D/StrictMode( 9365): at androidx.fragment.app.FragmentManager.moveToState(FragmentManager.java:1187) +06-02 16:38:44.781 D/StrictMode( 9365): at androidx.fragment.app.FragmentManager.addAddedFragments(FragmentManager.java:2224) +06-02 16:38:44.781 D/StrictMode( 9365): at androidx.fragment.app.FragmentManager.executeOpsTogether(FragmentManager.java:1997) +06-02 16:38:44.781 D/StrictMode( 9365): at androidx.fragment.app.FragmentManager.removeRedundantOperationsAndExecute(FragmentManager.java:1953) +06-02 16:38:44.781 D/StrictMode( 9365): at androidx.fragment.app.Fragment +06-02 16:38:44.781 W/lla.fenix.debu( 9365): Accessing hidden method Landroid/graphics/Typeface;->createFromFamiliesWithDefault([Landroid/graphics/FontFamily;Ljava/lang/String;II)Landroid/graphics/Typeface; (light greylist, reflection) +06-02 16:38:44.788 D/StrictMode( 9365): StrictMode policy violation: android.os.strictmode.NonSdkApiUsedViolation: Landroid/graphics/Typeface;->createFromFamiliesWithDefault([Landroid/graphics/FontFamily;Ljava/lang/String;II)Landroid/graphics/Typeface; +06-02 16:38:44.788 D/StrictMode( 9365): at android.os.StrictMode.lambda$static$1(StrictMode.java:428) +06-02 16:38:44.788 D/StrictMode( 9365): at android.os.-$$Lambda$StrictMode$lu9ekkHJ2HMz0jd3F8K8MnhenxQ.accept(Unknown Source:2) +06-02 16:38:44.788 D/StrictMode( 9365): at java.lang.Class.getDeclaredMethodInternal(Native Method) +06-02 16:38:44.788 D/StrictMode( 9365): at java.lang.Class.getMethod(Class.java:2064) +06-02 16:38:44.788 D/StrictMode( 9365): at java.lang.Class.getDeclaredMethod(Class.java:2047) +06-02 16:38:44.788 D/StrictMode( 9365): at androidx.core.graphics.TypefaceCompatApi28Impl.obtainCreateFromFamiliesWithDefaultMethod(TypefaceCompatApi28Impl.java:62) +06-02 16:38:44.788 D/StrictMode( 9365): at androidx.core.graphics.TypefaceCompatApi26Impl.<init>(TypefaceCompatApi26Impl.java:89) +06-02 16:38:44.788 D/StrictMode( 9365): at androidx.core.graphics.TypefaceCompatApi28Impl.<init>(TypefaceCompatApi28Impl.java:36) +06-02 16:38:44.788 D/StrictMode( 9365): at androidx.core.graphics.TypefaceCompat.<clinit>(TypefaceCompat.java:51) +06-02 16:38:44.788 D/StrictMode( 9365): at androidx.core.graphics.TypefaceCompat.create(TypefaceCompat.java:194) +06-02 16:38:44.788 D/StrictMode( 9365): at androidx.appcompat.widget.AppCompatTextView.setTypeface(AppCompatTextView.java:708) +06-02 16:38:44.788 D/StrictMode( 9365): at android.widget.TextView.resolveStyleAndSetTypeface(TextView.java:2037) +06-02 16:38:44.788 D/StrictMode( 9365): at android.widget.TextView.setTypefaceFromAttrs(TextView.java:2008) +06-02 16:38:44.788 D/StrictMode( 9365): at android.widget.TextView.applyTextAppearance(TextView.java:3640) +06-02 16:38:44.788 D/StrictMode( 9365): at android.widget.TextView.<init>(TextView.java:1498) +06-02 16:38:44.788 D/StrictMode( 9365): at android.widget.TextView.<init>(TextView.java:869) +06-02 16:38:44.788 D/StrictMode( 9365): at androidx.appcompat.widget.AppCompatTextView.<init>(AppCompatTextView.java:100) +06-02 16:38:44.788 D/StrictMode( 9365): at androidx.appcompat.widget.AppCompatTextView.<init>(AppCompatTextView.java:95) +06-02 16:38:44.788 D/StrictMode( 9365): at androidx.appcompat.app.AppCompatViewInflater.createTextView(AppCompatViewInflater.java:194) +06-02 16:38:44.788 D/StrictMode( 9365): at androidx.appcompat.app.AppCompatViewInflater.createView(AppCompatViewInflater.java:115) +06-02 16:38:44.788 D/StrictMode( 9365): at androidx.appcompat.app.AppCompatDelegateImpl.createView(AppCompatDelegateImpl.java:1548) +06-02 16:38:44.788 D/StrictMode( 9365): at androidx.appcompat.app.AppCompatDelegateImpl.onCreateView(AppCompatDelegateImpl.java:1599) +06-02 16:38:44.788 D/StrictMode( 9365): at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:772) +06-02 16:38:44.788 D/StrictMode( 9365): at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:730) +06-02 16:38:44.788 D/StrictMode( 9365): at android.view.LayoutInflater.rInflate(LayoutInflater.java:863) +06-02 16:38:44.788 D/StrictMode( 9365): at android.view.LayoutInflater.rInflateChildren(LayoutInflater.java:824) +06-02 16:38:44.788 D/StrictMode( 9365): at android.view.LayoutInflater.rInflate(LayoutInflater.java:866) +06-02 16:38:44.788 D/StrictMode( 9365): at android.view.LayoutInflater.inflate(LayoutInflater.java:489) +06-02 16:38:44.788 D/StrictMode( 9365): at android.view.LayoutInflater.inflate(LayoutInflater.java:423) +06-02 16:38:44.788 D/StrictMode( 9365): at android.view.LayoutInflater.inflate(LayoutInflater.java:374) +06-02 16:38:44.788 D/StrictMode( 9365): at org.mozilla.fenix.components.toolbar.TabCounter.<init>(TabCounter.kt:30) +06-02 16:38:44.788 D/StrictMode( 9365): at org.mozilla.fenix.components.toolbar.TabCounter.<init>(TabCounter.kt:22) +06-02 16:38:44.788 D/StrictMode( 9365): at org.mozilla.fenix.components.toolbar.TabCounter.<init>(Unknown Source:6) +06-02 16:38:44.788 D/StrictMode( 9365): at java.lang.reflect.Constructor.newInstance0(Native Method) +06-02 16:38:44.788 D/StrictMode( 9365): at java.lang.reflect.Constructor.newInstance(Constructor.java:343) +06-02 16:38:44.788 D/StrictMode( 9365): at android.view.LayoutInflater.createView(LayoutInflater.java:647) +06-02 16:38:44.788 D/StrictMode( 9365): at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:790) +06-02 16:38:44.788 D/StrictMode( 9365): at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:730) +06-02 16:38:44.788 D/StrictMode( 9365): at android.view.LayoutInflater.rInflate(LayoutInflater.java:863) +06-02 16:38:44.788 D/StrictMode( 9365): at android.view.LayoutInflater.rInflateChildren(LayoutInflater.java:824) +06-02 16:38:44.788 D/StrictMode( 9365): at android.view.LayoutInflater.rInflate(LayoutInflater.java:866) +06-02 16:38:44.788 D/StrictMode( 9365): at android.view.LayoutInflater.rInflateChildren(LayoutInflater.java:824) +06-02 16:38:44.788 D/StrictMode( 9365): at android.view.LayoutInflater.inflate(LayoutInflater.java:515) +06-02 16:38:44.788 D/StrictMode( 9365): at android.view.LayoutInflater.inflate(LayoutInflater.java:423) +06-02 16:38:44.788 D/StrictMode( 9365): at org.mozilla.fenix.home.HomeFragment.onCreateView(HomeFragment.kt:183) +06-02 16:38:44.788 D/StrictMode( 9365): at androidx.fragment.app.Fragment.performCreateView(Fragment.java:2698) +06-02 16:38:44.788 D/StrictMode( 9365): at androidx.fragment.app.FragmentStateManager.createView(FragmentStateManager.java:320) +06-02 16:38:44.788 D/StrictMode( 9365): at androidx.fragment.app.FragmentManager.moveToState(FragmentManager.java:1187) +06-02 16:38:44.788 D/StrictMode( 9365): at androidx.fragment.app.FragmentManager.addAddedFragments(FragmentManager.java:2224) +06-02 16:38:44.788 D/StrictMode( 9365): at androidx.fragment.app.FragmentManager.executeOpsTogether(FragmentManager.java:1997) +06-02 16:38:44.788 D/StrictMode( 9365): at androidx.fragment.app.FragmentManager.removeRedundantOperationsAndExecute(FragmentMa +06-02 16:38:44.960 D/GeckoRuntime( 9365): Lifecycle: onStart +06-02 16:38:44.963 D/GeckoRuntime( 9365): Lifecycle: onResume +06-02 16:38:44.966 D/GeckoNetworkManager( 9365): Incoming event start for state OffNoListeners -> OnNoListeners +06-02 16:38:44.968 D/GeckoNetworkManager( 9365): New network state: UP, WIFI, WIFI +06-02 16:38:44.972 D/OpenGLRenderer( 9365): Skia GL Pipeline +06-02 16:38:44.987 E/SurfaceFlinger( 1728): ro.sf.lcd_density must be defined as a build property +06-02 16:38:44.998 D/StrictMode( 9365): StrictMode policy violation; ~duration=528 ms: android.os.strictmode.DiskReadViolation +06-02 16:38:44.998 D/StrictMode( 9365): at android.os.StrictMode$AndroidBlockGuardPolicy.onReadFromDisk(StrictMode.java:1504) +06-02 16:38:44.998 D/StrictMode( 9365): at java.io.UnixFileSystem.checkAccess(UnixFileSystem.java:251) +06-02 16:38:44.998 D/StrictMode( 9365): at java.io.File.exists(File.java:815) +06-02 16:38:44.998 D/StrictMode( 9365): at android.app.ContextImpl.getDataDir(ContextImpl.java:2253) +06-02 16:38:44.998 D/StrictMode( 9365): at android.app.ContextImpl.getPreferencesDir(ContextImpl.java:550) +06-02 16:38:44.998 D/StrictMode( 9365): at android.app.ContextImpl.getSharedPreferencesPath(ContextImpl.java:747) +06-02 16:38:44.998 D/StrictMode( 9365): at android.app.ContextImpl.getSharedPreferences(ContextImpl.java:400) +06-02 16:38:44.998 D/StrictMode( 9365): at mozilla.components.support.locale.LocaleManager$Storage.getSharedPreferences(LocaleManager.kt:123) +06-02 16:38:44.998 D/StrictMode( 9365): at mozilla.components.support.locale.LocaleManager$Storage.getLocale(LocaleManager.kt:99) +06-02 16:38:44.998 D/StrictMode( 9365): at mozilla.components.support.locale.LocaleManager.getCurrentLocale(LocaleManager.kt:42) +06-02 16:38:44.998 D/StrictMode( 9365): at mozilla.components.support.locale.LocaleManager.updateResources$support_locale_release(LocaleManager.kt:72) +06-02 16:38:44.998 D/StrictMode( 9365): at mozilla.components.support.locale.LocaleAwareAppCompatActivity.attachBaseContext(LocaleAwareAppCompatActivity.kt:18) +06-02 16:38:44.998 D/StrictMode( 9365): at android.app.Activity.attach(Activity.java:7051) +06-02 16:38:44.998 D/StrictMode( 9365): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2873) +06-02 16:38:44.998 D/StrictMode( 9365): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3048) +06-02 16:38:44.998 D/StrictMode( 9365): at android.app.servertransaction.LaunchActivityItem.execute(LaunchActivityItem.java:78) +06-02 16:38:44.998 D/StrictMode( 9365): at android.app.servertransaction.TransactionExecutor.executeCallbacks(TransactionExecutor.java:108) +06-02 16:38:44.998 D/StrictMode( 9365): at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:68) +06-02 16:38:44.998 D/StrictMode( 9365): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1808) +06-02 16:38:44.998 D/StrictMode( 9365): at android.os.Handler.dispatchMessage(Handler.java:106) +06-02 16:38:44.998 D/StrictMode( 9365): at android.os.Looper.loop(Looper.java:193) +06-02 16:38:44.998 D/StrictMode( 9365): at android.app.ActivityThread.main(ActivityThread.java:6669) +06-02 16:38:44.998 D/StrictMode( 9365): at java.lang.reflect.Method.invoke(Native Method) +06-02 16:38:44.998 D/StrictMode( 9365): at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:493) +06-02 16:38:44.998 D/StrictMode( 9365): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:858) +06-02 16:38:45.001 D/StrictMode( 9365): StrictMode policy violation; ~duration=528 ms: android.os.strictmode.DiskReadViolation +06-02 16:38:45.001 D/StrictMode( 9365): at android.os.StrictMode$AndroidBlockGuardPolicy.onReadFromDisk(StrictMode.java:1504) +06-02 16:38:45.001 D/StrictMode( 9365): at java.io.UnixFileSystem.checkAccess(UnixFileSystem.java:251) +06-02 16:38:45.001 D/StrictMode( 9365): at java.io.File.exists(File.java:815) +06-02 16:38:45.001 D/StrictMode( 9365): at android.app.ContextImpl.ensurePrivateDirExists(ContextImpl.java:605) +06-02 16:38:45.001 D/StrictMode( 9365): at android.app.ContextImpl.ensurePrivateDirExists(ContextImpl.java:596) +06-02 16:38:45.001 D/StrictMode( 9365): at android.app.ContextImpl.getPreferencesDir(ContextImpl.java:552) +06-02 16:38:45.001 D/StrictMode( 9365): at android.app.ContextImpl.getSharedPreferencesPath(ContextImpl.java:747) +06-02 16:38:45.001 D/StrictMode( 9365): at android.app.ContextImpl.getSharedPreferences(ContextImpl.java:400) +06-02 16:38:45.001 D/StrictMode( 9365): at mozilla.components.support.locale.LocaleManager$Storage.getSharedPreferences(LocaleManager.kt:123) +06-02 16:38:45.001 D/StrictMode( 9365): at mozilla.components.support.locale.LocaleManager$Storage.getLocale(LocaleManager.kt:99) +06-02 16:38:45.001 D/StrictMode( 9365): at mozilla.components.support.locale.LocaleManager.getCurrentLocale(LocaleManager.kt:42) +06-02 16:38:45.001 D/StrictMode( 9365): at mozilla.components.support.locale.LocaleManager.updateResources$support_locale_release(LocaleManager.kt:72) +06-02 16:38:45.001 D/StrictMode( 9365): at mozilla.components.support.locale.LocaleAwareAppCompatActivity.attachBaseContext(LocaleAwareAppCompatActivity.kt:18) +06-02 16:38:45.001 D/StrictMode( 9365): at android.app.Activity.attach(Activity.java:7051) +06-02 16:38:45.001 D/StrictMode( 9365): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2873) +06-02 16:38:45.001 D/StrictMode( 9365): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3048) +06-02 16:38:45.001 D/StrictMode( 9365): at android.app.servertransaction.LaunchActivityItem.execute(LaunchActivityItem.java:78) +06-02 16:38:45.001 D/StrictMode( 9365): at android.app.servertransaction.TransactionExecutor.executeCallbacks(TransactionExecutor.java:108) +06-02 16:38:45.001 D/StrictMode( 9365): at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:68) +06-02 16:38:45.001 D/StrictMode( 9365): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1808) +06-02 16:38:45.001 D/StrictMode( 9365): at android.os.Handler.dispatchMessage(Handler.java:106) +06-02 16:38:45.001 D/StrictMode( 9365): at android.os.Looper.loop(Looper.java:193) +06-02 16:38:45.001 D/StrictMode( 9365): at android.app.ActivityThread.main(ActivityThread.java:6669) +06-02 16:38:45.001 D/StrictMode( 9365): at java.lang.reflect.Method.invoke(Native Method) +06-02 16:38:45.001 D/StrictMode( 9365): at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:493) +06-02 16:38:45.001 D/StrictMode( 9365): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:858) +06-02 16:38:45.005 D/StrictMode( 9365): StrictMode policy violation; ~duration=360 ms: android.os.strictmode.DiskReadViolation +06-02 16:38:45.005 D/StrictMode( 9365): at android.os.StrictMode$AndroidBlockGuardPolicy.onReadFromDisk(StrictMode.java:1504) +06-02 16:38:45.005 D/StrictMode( 9365): at java.io.UnixFileSystem.checkAccess(UnixFileSystem.java:251) +06-02 16:38:45.005 D/StrictMode( 9365): at java.io.File.exists(File.java:815) +06-02 16:38:45.005 D/StrictMode( 9365): at android.app.ContextImpl.getDataDir(ContextImpl.java:2253) +06-02 16:38:45.005 D/StrictMode( 9365): at android.app.ContextImpl.getPreferencesDir(ContextImpl.java:550) +06-02 16:38:45.005 D/StrictMode( 9365): at android.app.ContextImpl.getSharedPreferencesPath(ContextImpl.java:747) +06-02 16:38:45.005 D/StrictMode( 9365): at android.app.ContextImpl.getSharedPreferences(ContextImpl.java:400) +06-02 16:38:45.005 D/StrictMode( 9365): at android.content.ContextWrapper.getSharedPreferences(ContextWrapper.java:174) +06-02 16:38:45.005 D/StrictMode( 9365): at android.content.ContextWrapper.getSharedPreferences(ContextWrapper.java:174) +06-02 16:38:45.005 D/StrictMode( 9365): at org.mozilla.fenix.onboarding.FenixOnboarding.<init>(FenixOnboarding.kt:15) +06-02 16:38:45.005 D/StrictMode( 9365): at org.mozilla.fenix.perf.Performance.disableOnboarding(Performance.kt:72) +06-02 16:38:45.005 D/StrictMode( 9365): at org.mozilla.fenix.perf.Performance.processIntentIfPerformanceTest(Performance.kt:32) +06-02 16:38:45.005 D/StrictMode( 9365): at org.mozilla.fenix.HomeActivity.onCreate(HomeActivity.kt:145) +06-02 16:38:45.005 D/StrictMode( 9365): at android.app.Activity.performCreate(Activity.java:7136) +06-02 16:38:45.005 D/StrictMode( 9365): at android.app.Activity.performCreate(Activity.java:7127) +06-02 16:38:45.005 D/StrictMode( 9365): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1271) +06-02 16:38:45.005 D/StrictMode( 9365): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2893) +06-02 16:38:45.005 D/StrictMode( 9365): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3048) +06-02 16:38:45.005 D/StrictMode( 9365): at android.app.servertransaction.LaunchActivityItem.execute(LaunchActivityItem.java:78) +06-02 16:38:45.005 D/StrictMode( 9365): at android.app.servertransaction.TransactionExecutor.executeCallbacks(TransactionExecutor.java:108) +06-02 16:38:45.005 D/StrictMode( 9365): at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:68) +06-02 16:38:45.005 D/StrictMode( 9365): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1808) +06-02 16:38:45.005 D/StrictMode( 9365): at android.os.Handler.dispatchMessage(Handler.java:106) +06-02 16:38:45.005 D/StrictMode( 9365): at android.os.Looper.loop(Looper.java:193) +06-02 16:38:45.005 D/StrictMode( 9365): at android.app.ActivityThread.main(ActivityThread.java:6669) +06-02 16:38:45.005 D/StrictMode( 9365): at java.lang.reflect.Method.invoke(Native Method) +06-02 16:38:45.005 D/StrictMode( 9365): at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:493) +06-02 16:38:45.005 D/StrictMode( 9365): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:858) +06-02 16:38:45.008 D/StrictMode( 9365): StrictMode policy violation; ~duration=360 ms: android.os.strictmode.DiskReadViolation +06-02 16:38:45.008 D/StrictMode( 9365): at android.os.StrictMode$AndroidBlockGuardPolicy.onReadFromDisk(StrictMode.java:1504) +06-02 16:38:45.008 D/StrictMode( 9365): at java.io.UnixFileSystem.checkAccess(UnixFileSystem.java:251) +06-02 16:38:45.008 D/StrictMode( 9365): at java.io.File.exists(File.java:815) +06-02 16:38:45.008 D/StrictMode( 9365): at android.app.ContextImpl.ensurePrivateDirExists(ContextImpl.java:605) +06-02 16:38:45.008 D/StrictMode( 9365): at android.app.ContextImpl.ensurePrivateDirExists(ContextImpl.java:596) +06-02 16:38:45.008 D/StrictMode( 9365): at android.app.ContextImpl.getPreferencesDir(ContextImpl.java:552) +06-02 16:38:45.008 D/StrictMode( 9365): at android.app.ContextImpl.getSharedPreferencesPath(ContextImpl.java:747) +06-02 16:38:45.008 D/StrictMode( 9365): at android.app.ContextImpl.getSharedPreferences(ContextImpl.java:400) +06-02 16:38:45.008 D/StrictMode( 9365): at android.content.ContextWrapper.getSharedPreferences(ContextWrapper.java:174) +06-02 16:38:45.008 D/StrictMode( 9365): at android.content.ContextWrapper.getSharedPreferences(ContextWrapper.java:174) +06-02 16:38:45.008 D/StrictMode( 9365): at org.mozilla.fenix.onboarding.FenixOnboarding.<init>(FenixOnboarding.kt:15) +06-02 16:38:45.008 D/StrictMode( 9365): at org.mozilla.fenix.perf.Performance.disableOnboarding(Performance.kt:72) +06-02 16:38:45.008 D/StrictMode( 9365): at org.mozilla.fenix.perf.Performance.processIntentIfPerformanceTest(Performance.kt:32) +06-02 16:38:45.008 D/StrictMode( 9365): at org.mozilla.fenix.HomeActivity.onCreate(HomeActivity.kt:145) +06-02 16:38:45.008 D/StrictMode( 9365): at android.app.Activity.performCreate(Activity.java:7136) +06-02 16:38:45.008 D/StrictMode( 9365): at android.app.Activity.performCreate(Activity.java:7127) +06-02 16:38:45.008 D/StrictMode( 9365): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1271) +06-02 16:38:45.008 D/StrictMode( 9365): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2893) +06-02 16:38:45.008 D/StrictMode( 9365): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3048) +06-02 16:38:45.008 D/StrictMode( 9365): at android.app.servertransaction.LaunchActivityItem.execute(LaunchActivityItem.java:78) +06-02 16:38:45.008 D/StrictMode( 9365): at android.app.servertransaction.TransactionExecutor.executeCallbacks(TransactionExecutor.java:108) +06-02 16:38:45.008 D/StrictMode( 9365): at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:68) +06-02 16:38:45.008 D/StrictMode( 9365): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1808) +06-02 16:38:45.008 D/StrictMode( 9365): at android.os.Handler.dispatchMessage(Handler.java:106) +06-02 16:38:45.008 D/StrictMode( 9365): at android.os.Looper.loop(Looper.java:193) +06-02 16:38:45.008 D/StrictMode( 9365): at android.app.ActivityThread.main(ActivityThread.java:6669) +06-02 16:38:45.008 D/StrictMode( 9365): at java.lang.reflect.Method.invoke(Native Method) +06-02 16:38:45.008 D/StrictMode( 9365): at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:493) +06-02 16:38:45.008 D/StrictMode( 9365): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:858) +06-02 16:38:45.009 D/StrictMode( 9365): StrictMode policy violation; ~duration=359 ms: android.os.strictmode.DiskReadViolation +06-02 16:38:45.009 D/StrictMode( 9365): at android.os.StrictMode$AndroidBlockGuardPolicy.onReadFromDisk(StrictMode.java:1504) +06-02 16:38:45.009 D/StrictMode( 9365): at android.app.SharedPreferencesImpl.awaitLoadedLocked(SharedPreferencesImpl.java:256) +06-02 16:38:45.009 D/StrictMode( 9365): at android.app.SharedPreferencesImpl.edit(SharedPreferencesImpl.java:349) +06-02 16:38:45.009 D/StrictMode( 9365): at org.mozilla.fenix.onboarding.FenixOnboarding.setOnboardedVersion(FenixOnboarding.kt:42) +06-02 16:38:45.009 D/StrictMode( 9365): at org.mozilla.fenix.onboarding.FenixOnboarding.finish(FenixOnboarding.kt:25) +06-02 16:38:45.009 D/StrictMode( 9365): at org.mozilla.fenix.perf.Performance.disableOnboarding(Performance.kt:72) +06-02 16:38:45.009 D/StrictMode( 9365): at org.mozilla.fenix.perf.Performance.processIntentIfPerformanceTest(Performance.kt:32) +06-02 16:38:45.009 D/StrictMode( 9365): at org.mozilla.fenix.HomeActivity.onCreate(HomeActivity.kt:145) +06-02 16:38:45.009 D/StrictMode( 9365): at android.app.Activity.performCreate(Activity.java:7136) +06-02 16:38:45.009 D/StrictMode( 9365): at android.app.Activity.performCreate(Activity.java:7127) +06-02 16:38:45.009 D/StrictMode( 9365): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1271) +06-02 16:38:45.009 D/StrictMode( 9365): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2893) +06-02 16:38:45.009 D/StrictMode( 9365): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3048) +06-02 16:38:45.009 D/StrictMode( 9365): at android.app.servertransaction.LaunchActivityItem.execute(LaunchActivityItem.java:78) +06-02 16:38:45.009 D/StrictMode( 9365): at android.app.servertransaction.TransactionExecutor.executeCallbacks(TransactionExecutor.java:108) +06-02 16:38:45.009 D/StrictMode( 9365): at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:68) +06-02 16:38:45.009 D/StrictMode( 9365): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1808) +06-02 16:38:45.009 D/StrictMode( 9365): at android.os.Handler.dispatchMessage(Handler.java:106) +06-02 16:38:45.009 D/StrictMode( 9365): at android.os.Looper.loop(Looper.java:193) +06-02 16:38:45.009 D/StrictMode( 9365): at android.app.ActivityThread.main(ActivityThread.java:6669) +06-02 16:38:45.009 D/StrictMode( 9365): at java.lang.reflect.Method.invoke(Native Method) +06-02 16:38:45.009 D/StrictMode( 9365): at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:493) +06-02 16:38:45.009 D/StrictMode( 9365): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:858) +06-02 16:38:45.017 D/StrictMode( 9365): StrictMode policy violation; ~duration=138 ms: android.os.strictmode.DiskReadViolation +06-02 16:38:45.017 D/StrictMode( 9365): at android.os.StrictMode$AndroidBlockGuardPolicy.onReadFromDisk(StrictMode.java:1504) +06-02 16:38:45.017 D/StrictMode( 9365): at java.io.UnixFileSystem.checkAccess(UnixFileSystem.java:251) +06-02 16:38:45.017 D/StrictMode( 9365): at java.io.File.exists(File.java:815) +06-02 16:38:45.017 D/StrictMode( 9365): at android.app.ContextImpl.ensurePrivateDirExists(ContextImpl.java:605) +06-02 16:38:45.017 D/StrictMode( 9365): at android.app.ContextImpl.ensurePrivateDirExists(ContextImpl.java:596) +06-02 16:38:45.017 D/StrictMode( 9365): at android.app.ContextImpl.getPreferencesDir(ContextImpl.java:552) +06-02 16:38:45.017 D/StrictMode( 9365): at android.app.ContextImpl.getSharedPreferencesPath(ContextImpl.java:747) +06-02 16:38:45.017 D/StrictMode( 9365): at android.app.ContextImpl.getSharedPreferences(ContextImpl.java:400) +06-02 16:38:45.017 D/StrictMode( 9365): at android.content.ContextWrapper.getSharedPreferences(ContextWrapper.java:174) +06-02 16:38:45.017 D/StrictMode( 9365): at mozilla.components.support.locale.LocaleManager$Storage.getSharedPreferences(LocaleManager.kt:123) +06-02 16:38:45.017 D/StrictMode( 9365): at mozilla.components.support.locale.LocaleManager$Storage.getLocale(LocaleManager.kt:99) +06-02 16:38:45.017 D/StrictMode( 9365): at mozilla.components.support.locale.LocaleManager.getCurrentLocale(LocaleManager.kt:42) +06-02 16:38:45.017 D/StrictMode( 9365): at org.mozilla.fenix.settings.advanced.LocaleManagerExtensionKt.getSelectedLocale(LocaleManagerExtension.kt:39) +06-02 16:38:45.017 D/StrictMode( 9365): at org.mozilla.fenix.settings.advanced.LocaleManagerExtensionKt.getSelectedLocale$default(LocaleManagerExtension.kt:37) +06-02 16:38:45.017 D/StrictMode( 9365): at org.mozilla.fenix.components.TopSiteStorage.addDefaultTopSites(TopSiteStorage.kt:57) +06-02 16:38:45.017 D/StrictMode( 9365): at org.mozilla.fenix.components.TopSiteStorage.<init>(TopSiteStorage.kt:30) +06-02 16:38:45.017 D/StrictMode( 9365): at org.mozilla.fenix.components.Core$topSiteStorage$2.invoke(Core.kt:216) +06-02 16:38:45.017 D/StrictMode( 9365): at org.mozilla.fenix.components.Core$topSiteStorage$2.invoke(Core.kt:57) +06-02 16:38:45.017 D/StrictMode( 9365): at kotlin.SynchronizedLazyImpl.getValue(LazyJVM.kt:74) +06-02 16:38:45.017 D/StrictMode( 9365): at org.mozilla.fenix.components.Core.getTopSiteStorage(Unknown Source:8) +06-02 16:38:45.017 D/StrictMode( 9365): at org.mozilla.fenix.home.HomeFragment$onCreateView$2.invoke(HomeFragment.kt:210) +06-02 16:38:45.017 D/StrictMode( 9365): at org.mozilla.fenix.home.HomeFragment$onCreateView$2.invoke(HomeFragment.kt:114) +06-02 16:38:45.017 D/StrictMode( 9365): at org.mozilla.fenix.components.StoreProviderFactory.create(StoreProvider.kt:42) +06-02 16:38:45.017 D/StrictMode( 9365): at androidx.lifecycle.ViewModelProvider.get(ViewModelProvider.java:187) +06-02 16:38:45.017 D/StrictMode( 9365): at androidx.lifecycle.ViewModelProvider.get(ViewModelProvider.java:150) +06-02 16:38:45.017 D/StrictMode( 9365): at org.mozilla.fenix.components.StoreProvider$Companion.get(StoreProvider.kt:46) +06-02 16:38:45.017 D/StrictMode( 9365): at org.mozilla.fenix.home.HomeFragment.onCreateView(HomeFragment.kt:203) +06-02 16:38:45.017 D/StrictMode( 9365): at androidx.fragment.app.Fragment.performCreateView(Fragment.java:2698) +06-02 16:38:45.017 D/StrictMode( 9365): at androidx.fragment.app.FragmentStateManager.createView(FragmentStateManager.java:320) +06-02 16:38:45.017 D/StrictMode( 9365): at androidx.fragment.app.FragmentManager.moveToState(FragmentManager.java:1187) +06-02 16:38:45.017 D/StrictMode( 9365): at androidx.fragment.app.FragmentManager.addAddedFragments(FragmentManager.java:2224) +06-02 16:38:45.017 D/StrictMode( 9365): at androidx.fragment.app.FragmentManager.executeOpsTogether(FragmentManager.java:1997) +06-02 16:38:45.017 D/StrictMode( 9365): at androidx.fragment.app.FragmentManager.removeRedundantOperationsAndExecute(FragmentManager.java:1953) +06-02 16:38:45.017 D/StrictMode( 9365): at androidx.fragment.app.FragmentManager.execPendingActions(FragmentManager.java:1849) +06-02 16:38:45.017 D/StrictMode( 9365): at androidx.fragment.app.FragmentManager.dispatchStateChange(FragmentManager.java:2629) +06-02 16:38:45.017 D/StrictMode( 9365): at androidx.fragment.app.FragmentManager.dispatchActivityCreated(FragmentManager.java:2577) +06-02 16:38:45.017 D/StrictMode( 9365): at androidx.fragment.app.Fragment.performActivityCreated(Fragment.java:2722) +06-02 16:38:45.017 D/StrictMode( 9365): at androidx.fragment.app.FragmentStateManager.activityCreated(FragmentStateManager.java:346) +06-02 16:38:45.017 D/StrictMode( 9365): at androidx.fragment.app.FragmentManager.moveToState(FragmentManager.java:1188) +06-02 16:38:45.017 D/StrictMode( 9365): at androidx.fragment.app.FragmentManager.moveToState(FragmentManager.java:1356) +06-02 16:38:45.017 D/StrictMode( 9365): at androidx.fragment.app.FragmentManager.moveFragmentToExpectedState(FragmentManager.java:1434) +06-02 16:38:45.017 D/StrictMode( 9365): at androidx.fragment.app.FragmentManager.moveToState(FragmentManager.java:1497) +06-02 16:38:45.017 D/StrictMode( 9365): at androidx.fragment.app.FragmentManager.dispatchStateChange(FragmentManager.java:2625) +06-02 16:38:45.017 D/StrictMode( 9365): at androidx.fragment.app.FragmentManager.dispatchActivityCreated(FragmentManager.java:2577) +06-02 16:38:45.017 D/StrictMode( 9365): at androidx.fragment.app.FragmentController.dispatchActivityCreated(FragmentController.java:247) +06-02 16:38:45.017 D/StrictMode( 9365): at androidx.fragment.app.FragmentActivity.onStart(FragmentActivity.java:541) +06-02 16:38:45.017 D/StrictMode( 9365): at androidx.appcompat.app.AppCompatActivity.onStart(AppCompatActivity.java:210) +06-02 16:38:45.017 D/StrictMode( 9365): at android.app.Instrumentation.callActivityOnStart(Instrumentation.java:1391) +06-02 16:38:45.017 D/StrictMode( 9365): +06-02 16:38:45.023 D/StrictMode( 9365): StrictMode policy violation; ~duration=66 ms: android.os.strictmode.DiskReadViolation +06-02 16:38:45.023 D/StrictMode( 9365): at android.os.StrictMode$AndroidBlockGuardPolicy.onReadFromDisk(StrictMode.java:1504) +06-02 16:38:45.023 D/StrictMode( 9365): at java.io.UnixFileSystem.checkAccess(UnixFileSystem.java:251) +06-02 16:38:45.023 D/StrictMode( 9365): at java.io.File.exists(File.java:815) +06-02 16:38:45.023 D/StrictMode( 9365): at android.app.ContextImpl.ensurePrivateDirExists(ContextImpl.java:605) +06-02 16:38:45.023 D/StrictMode( 9365): at android.app.ContextImpl.ensurePrivateDirExists(ContextImpl.java:596) +06-02 16:38:45.023 D/StrictMode( 9365): at android.app.ContextImpl.getPreferencesDir(ContextImpl.java:552) +06-02 16:38:45.023 D/StrictMode( 9365): at android.app.ContextImpl.getSharedPreferencesPath(ContextImpl.java:747) +06-02 16:38:45.023 D/StrictMode( 9365): at android.app.ContextImpl.getSharedPreferences(ContextImpl.java:400) +06-02 16:38:45.023 D/StrictMode( 9365): at android.content.ContextWrapper.getSharedPreferences(ContextWrapper.java:174) +06-02 16:38:45.023 D/StrictMode( 9365): at org.mozilla.fenix.components.AccountAbnormalities.<init>(AccountAbnormalities.kt:78) +06-02 16:38:45.023 D/StrictMode( 9365): at org.mozilla.fenix.components.AccountAbnormalities.<init>(AccountAbnormalities.kt:60) +06-02 16:38:45.023 D/StrictMode( 9365): at org.mozilla.fenix.components.BackgroundServices.<init>(BackgroundServices.kt:103) +06-02 16:38:45.023 D/StrictMode( 9365): at org.mozilla.fenix.components.Components$backgroundServices$2.invoke(Components.kt:34) +06-02 16:38:45.023 D/StrictMode( 9365): at org.mozilla.fenix.components.Components$backgroundServices$2.invoke(Components.kt:32) +06-02 16:38:45.023 D/StrictMode( 9365): at kotlin.SynchronizedLazyImpl.getValue(LazyJVM.kt:74) +06-02 16:38:45.023 D/StrictMode( 9365): at org.mozilla.fenix.components.Components.getBackgroundServices(Unknown Source:7) +06-02 16:38:45.023 D/StrictMode( 9365): at org.mozilla.fenix.home.HomeMenu$coreMenuItems$2.invoke(HomeMenu.kt:131) +06-02 16:38:45.023 D/StrictMode( 9365): at org.mozilla.fenix.home.HomeMenu$coreMenuItems$2.invoke(HomeMenu.kt:31) +06-02 16:38:45.023 D/StrictMode( 9365): at kotlin.SynchronizedLazyImpl.getValue(LazyJVM.kt:74) +06-02 16:38:45.023 D/StrictMode( 9365): at org.mozilla.fenix.home.HomeMenu.getCoreMenuItems(Unknown Source:7) +06-02 16:38:45.023 D/StrictMode( 9365): at org.mozilla.fenix.home.HomeMenu.<init>(HomeMenu.kt:170) +06-02 16:38:45.023 D/StrictMode( 9365): at org.mozilla.fenix.home.HomeFragment.createHomeMenu(HomeFragment.kt:668) +06-02 16:38:45.023 D/StrictMode( 9365): at org.mozilla.fenix.home.HomeFragment.onViewCreated(HomeFragment.kt:337) +06-02 16:38:45.023 D/StrictMode( 9365): at androidx.fragment.app.FragmentStateManager.createView(FragmentStateManager.java:332) +06-02 16:38:45.023 D/StrictMode( 9365): at androidx.fragment.app.FragmentManager.moveToState(FragmentManager.java:1187) +06-02 16:38:45.023 D/StrictMode( 9365): at androidx.fragment.app.FragmentManager.addAddedFragments(FragmentManager.java:2224) +06-02 16:38:45.023 D/StrictMode( 9365): at androidx.fragment.app.FragmentManager.executeOpsTogether(FragmentManager.java:1997) +06-02 16:38:45.023 D/StrictMode( 9365): at androidx.fragment.app.FragmentManager.removeRedundantOperationsAndExecute(FragmentManager.java:1953) +06-02 16:38:45.023 D/StrictMode( 9365): at androidx.fragment.app.FragmentManager.execPendingActions(FragmentManager.java:1849) +06-02 16:38:45.023 D/StrictMode( 9365): at androidx.fragment.app.FragmentManager.dispatchStateChange(FragmentManager.java:2629) +06-02 16:38:45.023 D/StrictMode( 9365): at androidx.fragment.app.FragmentManager.dispatchActivityCreated(FragmentManager.java:2577) +06-02 16:38:45.023 D/StrictMode( 9365): at androidx.fragment.app.Fragment.performActivityCreated(Fragment.java:2722) +06-02 16:38:45.023 D/StrictMode( 9365): at androidx.fragment.app.FragmentStateManager.activityCreated(FragmentStateManager.java:346) +06-02 16:38:45.023 D/StrictMode( 9365): at androidx.fragment.app.FragmentManager.moveToState(FragmentManager.java:1188) +06-02 16:38:45.023 D/StrictMode( 9365): at androidx.fragment.app.FragmentManager.moveToState(FragmentManager.java:1356) +06-02 16:38:45.023 D/StrictMode( 9365): at androidx.fragment.app.FragmentManager.moveFragmentToExpectedState(FragmentManager.java:1434) +06-02 16:38:45.023 D/StrictMode( 9365): at androidx.fragment.app.FragmentManager.moveToState(FragmentManager.java:1497) +06-02 16:38:45.023 D/StrictMode( 9365): at androidx.fragment.app.FragmentManager.dispatchStateChange(FragmentManager.java:2625) +06-02 16:38:45.023 D/StrictMode( 9365): at androidx.fragment.app.FragmentManager.dispatchActivityCreated(FragmentManager.java:2577) +06-02 16:38:45.023 D/StrictMode( 9365): at androidx.fragment.app.FragmentController.dispatchActivityCreated(FragmentController.java:247) +06-02 16:38:45.023 D/StrictMode( 9365): at androidx.fragment.app.FragmentActivity.onStart(FragmentActivity.java:541) +06-02 16:38:45.023 D/StrictMode( 9365): at androidx.appcompat.app.AppCompatActivity.onStart(AppCompatActivity.java:210) +06-02 16:38:45.023 D/StrictMode( 9365): at android.app.Instrumentation.callActivityOnStart(Instrumentation.java:1391) +06-02 16:38:45.023 D/StrictMode( 9365): at android.app.Activity.performStart(Activity.java:7157) +06-02 16:38:45.023 D/StrictMode( 9365): at android.app.ActivityThread.handleStartActivity(ActivityThread.java:2937) +06-02 16:38:45.023 D/StrictMode( 9365): at android.app.servertransaction.TransactionExecutor.performLifecycleSequence(TransactionExecutor.java:180) +06-02 16:38:45.023 D/StrictMode( 9365): at android.app.servertransaction.TransactionExecutor.cycleToPath(TransactionExecutor.java:165) +06-02 16:38:45.023 D/StrictMode( 9365): at android.app.servertransaction.TransactionExecutor.executeLifecycleState(TransactionExecutor.java:142) +06-02 16:38:45.023 D/StrictMode( 9365): at android.app.servertransaction.TransactionExecutor.execute(Transac +06-02 16:38:45.029 D/StrictMode( 9365): StrictMode policy violation; ~duration=48 ms: android.os.strictmode.DiskReadViolation +06-02 16:38:45.029 D/StrictMode( 9365): at android.os.StrictMode$AndroidBlockGuardPolicy.onReadFromDisk(StrictMode.java:1504) +06-02 16:38:45.029 D/StrictMode( 9365): at java.io.UnixFileSystem.checkAccess(UnixFileSystem.java:251) +06-02 16:38:45.029 D/StrictMode( 9365): at java.io.File.exists(File.java:815) +06-02 16:38:45.029 D/StrictMode( 9365): at android.app.ContextImpl.ensurePrivateDirExists(ContextImpl.java:605) +06-02 16:38:45.029 D/StrictMode( 9365): at android.app.ContextImpl.ensurePrivateDirExists(ContextImpl.java:596) +06-02 16:38:45.029 D/StrictMode( 9365): at android.app.ContextImpl.getPreferencesDir(ContextImpl.java:552) +06-02 16:38:45.029 D/StrictMode( 9365): at android.app.ContextImpl.getSharedPreferencesPath(ContextImpl.java:747) +06-02 16:38:45.029 D/StrictMode( 9365): at android.app.ContextImpl.getSharedPreferences(ContextImpl.java:400) +06-02 16:38:45.029 D/StrictMode( 9365): at android.content.ContextWrapper.getSharedPreferences(ContextWrapper.java:174) +06-02 16:38:45.029 D/StrictMode( 9365): at android.content.ContextWrapper.getSharedPreferences(ContextWrapper.java:174) +06-02 16:38:45.029 D/StrictMode( 9365): at android.preference.PreferenceManager.getDefaultSharedPreferences(PreferenceManager.java:526) +06-02 16:38:45.029 D/StrictMode( 9365): at org.mozilla.fenix.whatsnew.SharedPreferenceWhatsNewStorage.<init>(WhatsNewStorage.kt:35) +06-02 16:38:45.029 D/StrictMode( 9365): at org.mozilla.fenix.whatsnew.WhatsNew$Companion.shouldHighlightWhatsNew(WhatsNew.kt:71) +06-02 16:38:45.029 D/StrictMode( 9365): at org.mozilla.fenix.home.HomeMenu$coreMenuItems$2$whatsNewItem$1.invoke(HomeMenu.kt:92) +06-02 16:38:45.029 D/StrictMode( 9365): at org.mozilla.fenix.home.HomeMenu$coreMenuItems$2$whatsNewItem$1.invoke(HomeMenu.kt:31) +06-02 16:38:45.029 D/StrictMode( 9365): at mozilla.components.browser.menu.ext.BrowserMenuItemKt$getHighlight$3.invoke(BrowserMenuItem.kt:18) +06-02 16:38:45.029 D/StrictMode( 9365): at mozilla.components.browser.menu.ext.BrowserMenuItemKt$getHighlight$3.invoke(Unknown Source:2) +06-02 16:38:45.029 D/StrictMode( 9365): at kotlin.sequences.FilteringSequence$iterator$1.calcNext(Sequences.kt:133) +06-02 16:38:45.029 D/StrictMode( 9365): at kotlin.sequences.FilteringSequence$iterator$1.hasNext(Sequences.kt:156) +06-02 16:38:45.029 D/StrictMode( 9365): at kotlin.sequences.TransformingSequence$iterator$1.hasNext(Sequences.kt:176) +06-02 16:38:45.029 D/StrictMode( 9365): at kotlin.sequences.FilteringSequence$iterator$1.calcNext(Sequences.kt:131) +06-02 16:38:45.029 D/StrictMode( 9365): at kotlin.sequences.FilteringSequence$iterator$1.hasNext(Sequences.kt:156) +06-02 16:38:45.029 D/StrictMode( 9365): at mozilla.components.browser.menu.ext.BrowserMenuItemKt.getHighlight(BrowserMenuItem.kt:31) +06-02 16:38:45.029 D/StrictMode( 9365): at org.mozilla.fenix.home.HomeMenu$coreMenuItems$2.invoke(HomeMenu.kt:149) +06-02 16:38:45.029 D/StrictMode( 9365): at org.mozilla.fenix.home.HomeMenu$coreMenuItems$2.invoke(HomeMenu.kt:31) +06-02 16:38:45.029 D/StrictMode( 9365): at kotlin.SynchronizedLazyImpl.getValue(LazyJVM.kt:74) +06-02 16:38:45.029 D/StrictMode( 9365): at org.mozilla.fenix.home.HomeMenu.getCoreMenuItems(Unknown Source:7) +06-02 16:38:45.029 D/StrictMode( 9365): at org.mozilla.fenix.home.HomeMenu.<init>(HomeMenu.kt:170) +06-02 16:38:45.029 D/StrictMode( 9365): at org.mozilla.fenix.home.HomeFragment.createHomeMenu(HomeFragment.kt:668) +06-02 16:38:45.029 D/StrictMode( 9365): at org.mozilla.fenix.home.HomeFragment.onViewCreated(HomeFragment.kt:337) +06-02 16:38:45.029 D/StrictMode( 9365): at androidx.fragment.app.FragmentStateManager.createView(FragmentStateManager.java:332) +06-02 16:38:45.029 D/StrictMode( 9365): at androidx.fragment.app.FragmentManager.moveToState(FragmentManager.java:1187) +06-02 16:38:45.029 D/StrictMode( 9365): at androidx.fragment.app.FragmentManager.addAddedFragments(FragmentManager.java:2224) +06-02 16:38:45.029 D/StrictMode( 9365): at androidx.fragment.app.FragmentManager.executeOpsTogether(FragmentManager.java:1997) +06-02 16:38:45.029 D/StrictMode( 9365): at androidx.fragment.app.FragmentManager.removeRedundantOperationsAndExecute(FragmentManager.java:1953) +06-02 16:38:45.029 D/StrictMode( 9365): at androidx.fragment.app.FragmentManager.execPendingActions(FragmentManager.java:1849) +06-02 16:38:45.029 D/StrictMode( 9365): at androidx.fragment.app.FragmentManager.dispatchStateChange(FragmentManager.java:2629) +06-02 16:38:45.029 D/StrictMode( 9365): at androidx.fragment.app.FragmentManager.dispatchActivityCreated(FragmentManager.java:2577) +06-02 16:38:45.029 D/StrictMode( 9365): at androidx.fragment.app.Fragment.performActivityCreated(Fragment.java:2722) +06-02 16:38:45.029 D/StrictMode( 9365): at androidx.fragment.app.FragmentStateManager.activityCreated(FragmentStateManager.java:346) +06-02 16:38:45.029 D/StrictMode( 9365): at androidx.fragment.app.FragmentManager.moveToState(FragmentManager.java:1188) +06-02 16:38:45.029 D/StrictMode( 9365): at androidx.fragment.app.FragmentManager.moveToState(FragmentManager.java:1356) +06-02 16:38:45.029 D/StrictMode( 9365): at androidx.fragment.app.FragmentManager.moveFragmentToExpectedState(FragmentManager.java:1434) +06-02 16:38:45.029 D/StrictMode( 9365): at androidx.fragment.app.FragmentManager.moveToState(FragmentManager.java:1497) +06-02 16:38:45.029 D/StrictMode( 9365): at androidx.fragment.app.FragmentManager.dispatchStateChange(FragmentManager.java:2625) +06-02 16:38:45.029 D/StrictMode( 9365): at androidx.fragment.app.FragmentManager.dispatchActivityCreated(FragmentManager.java:2577) +06-02 16:38:45.029 D/StrictMode( 9365): at androidx.fragment.app.FragmentController.dispatchActivityCreated(FragmentController.java:247) +06-02 16:38:45.029 D/StrictMode( 9365): at androidx.fragment.app.FragmentActivity.onStart(FragmentActivity.java:541) +06-02 16:38:45.029 D/StrictMode( 9365): at androidx.appcompat.app.AppCompatAc +06-02 16:38:45.030 D/LeakCanary( 9365): LeakCanary is running and ready to detect leaks +06-02 16:38:45.055 I/libglean_ffi( 9365): glean_core::ping: Collecting baseline +06-02 16:38:45.066 D/libglean_ffi( 9365): glean_core::ping: Storing ping 'f2c83a47-027f-4c73-8ff2-9bc7dc060222' at '/data/user/0/org.mozilla.fenix.debug/glean_data/pending_pings/f2c83a47-027f-4c73-8ff2-9bc7dc060222' +06-02 16:38:45.066 I/libglean_ffi( 9365): glean_core: The ping 'baseline' was submitted and will be sent as soon as possible +06-02 16:38:45.068 D/GeckoNetworkManager( 9365): Incoming event enableNotifications for state OnNoListeners -> OnWithListeners +06-02 16:38:45.070 D/GeckoNetworkManager( 9365): New network state: UP, WIFI, WIFI +06-02 16:38:45.071 W/ActivityManager( 1869): Receiver with filter android.content.IntentFilter@d026f98 already registered for pid 9365, callerPackage is org.mozilla.fenix.debug +06-02 16:38:45.087 D/GeckoNetworkManager( 9365): Incoming event receivedUpdate for state OnWithListeners -> OnWithListeners +06-02 16:38:45.090 D/GeckoNetworkManager( 9365): New network state: UP, WIFI, WIFI +06-02 16:38:45.117 D/GeckoThread( 9365): State changed to PROFILE_READY +06-02 16:38:45.186 D/GeckoViewStartup( 9365): observe: profile-after-change +06-02 16:38:45.190 D/WIFI_UT ( 1869): got request NetworkRequest [ TRACK_DEFAULT id=35, [ Capabilities: INTERNET&NOT_RESTRICTED&TRUSTED Unwanted: Uid: 10099] ] with score 60 +06-02 16:38:45.190 D/WIFI ( 1869): got request NetworkRequest [ TRACK_DEFAULT id=35, [ Capabilities: INTERNET&NOT_RESTRICTED&TRUSTED Unwanted: Uid: 10099] ] with score 60 +06-02 16:38:45.190 D/PhoneSwitcherNetworkRequstListener( 2121): got request NetworkRequest [ TRACK_DEFAULT id=35, [ Capabilities: INTERNET&NOT_RESTRICTED&TRUSTED Unwanted: Uid: 10099] ] with score 60 +06-02 16:38:45.195 D/GeckoViewTelemetryController( 9365): setup - canRecordPrereleaseData true, canRecordReleaseData true +06-02 16:38:45.244 D/GeckoThread( 9365): State changed to RUNNING +06-02 16:38:45.246 D/gralloc_ranchu( 1619): gralloc_alloc: Creating ashmem region of size 9334784 +06-02 16:38:45.252 D/ ( 1728): HostConnection::get() New Host Connection established 0xe90ddf00, tid 1756 +06-02 16:38:45.253 D/gralloc_ranchu( 1619): gralloc_alloc: Creating ashmem region of size 9334784 +06-02 16:38:45.254 I/lla.fenix.debu( 9365): Background concurrent copying GC freed 21920(1766KB) AllocSpace objects, 40(1216KB) LOS objects, 49% free, 4MB/9MB, paused 1.515ms total 189.223ms +06-02 16:38:45.261 D/gralloc_ranchu( 1619): gralloc_alloc: Creating ashmem region of size 9334784 +06-02 16:38:45.263 I/Gecko ( 9365): -*- nsDNSServiceDiscovery.js : nsDNSServiceDiscovery +06-02 16:38:45.275 D/GeckoThread( 9414): State changed to LAUNCHED +06-02 16:38:45.277 I/GeckoThread( 9414): preparing to run Gecko +06-02 16:38:45.278 W/ctxmgr ( 2473): [AclManager]No 2 for (accnt=account#-517948760#, com.google.android.gms(10008):IndoorOutdoorProducer, vrsn=13280000, 0, 3pPkg = null , 3pMdlId = null , pid = 2473). Was: 3 for 57, account#-517948760# +06-02 16:38:45.280 D/ ( 9365): HostConnection::get() New Host Connection established 0xe51aef80, tid 9452 +06-02 16:38:45.283 I/ConfigStore( 9365): android::hardware::configstore::V1_0::ISurfaceFlingerConfigs::hasWideColorDisplay retrieved: 0 +06-02 16:38:45.284 I/ConfigStore( 9365): android::hardware::configstore::V1_0::ISurfaceFlingerConfigs::hasHDRDisplay retrieved: 0 +06-02 16:38:45.284 I/OpenGLRenderer( 9365): Initialized EGL, version 1.4 +06-02 16:38:45.284 D/OpenGLRenderer( 9365): Swap behavior 1 +06-02 16:38:45.284 W/OpenGLRenderer( 9365): Failed to choose config with EGL_SWAP_BEHAVIOR_PRESERVED, retrying without... +06-02 16:38:45.284 D/OpenGLRenderer( 9365): Swap behavior 0 +06-02 16:38:45.285 D/EGL_emulation( 9365): eglCreateContext: 0xe51a88e0: maj 3 min 0 rcv 3 +06-02 16:38:45.286 D/EGL_emulation( 9365): eglMakeCurrent: 0xe51a88e0: ver 3 0 (tinfo 0xe1995a60) +06-02 16:38:45.288 E/SurfaceFlinger( 1728): ro.sf.lcd_density must be defined as a build property +06-02 16:38:45.307 W/lla.fenix.debu( 9365): Accessing hidden field Landroid/os/Trace;->TRACE_TAG_APP:J (light greylist, reflection) +06-02 16:38:45.312 D/StrictMode( 9365): StrictMode policy violation: android.os.strictmode.NonSdkApiUsedViolation: Landroid/os/Trace;->TRACE_TAG_APP:J +06-02 16:38:45.312 D/StrictMode( 9365): at android.os.StrictMode.lambda$static$1(StrictMode.java:428) +06-02 16:38:45.312 D/StrictMode( 9365): at android.os.-$$Lambda$StrictMode$lu9ekkHJ2HMz0jd3F8K8MnhenxQ.accept(Unknown Source:2) +06-02 16:38:45.312 D/StrictMode( 9365): at java.lang.Class.getPublicFieldRecursive(Native Method) +06-02 16:38:45.312 D/StrictMode( 9365): at java.lang.Class.getField(Class.java:1599) +06-02 16:38:45.312 D/StrictMode( 9365): at androidx.core.os.TraceCompat.<clinit>(TraceCompat.java:48) +06-02 16:38:45.312 D/StrictMode( 9365): at androidx.core.os.TraceCompat.beginSection(TraceCompat.java:100) +06-02 16:38:45.312 D/StrictMode( 9365): at androidx.recyclerview.widget.RecyclerView.onLayout(RecyclerView.java:4403) +06-02 16:38:45.312 D/StrictMode( 9365): at android.view.View.layout(View.java:20672) +06-02 16:38:45.312 D/StrictMode( 9365): at android.view.ViewGroup.layout(ViewGroup.java:6194) +06-02 16:38:45.312 D/StrictMode( 9365): at com.google.android.material.appbar.HeaderScrollingViewBehavior.layoutChild(HeaderScrollingViewBehavior.java:148) +06-02 16:38:45.312 D/StrictMode( 9365): at com.google.android.material.appbar.ViewOffsetBehavior.onLayoutChild(ViewOffsetBehavior.java:43) +06-02 16:38:45.312 D/StrictMode( 9365): at com.google.android.material.appbar.AppBarLayout$ScrollingViewBehavior.onLayoutChild(AppBarLayout.java:1892) +06-02 16:38:45.312 D/StrictMode( 9365): at androidx.coordinatorlayout.widget.CoordinatorLayout.onLayout(CoordinatorLayout.java:918) +06-02 16:38:45.312 D/StrictMode( 9365): at android.view.View.layout(View.java:20672) +06-02 16:38:45.312 D/StrictMode( 9365): at android.view.ViewGroup.layout(ViewGroup.java:6194) +06-02 16:38:45.312 D/StrictMode( 9365): at android.widget.FrameLayout.layoutChildren(FrameLayout.java:323) +06-02 16:38:45.312 D/StrictMode( 9365): at android.widget.FrameLayout.onLayout(FrameLayout.java:261) +06-02 16:38:45.312 D/StrictMode( 9365): at android.view.View.layout(View.java:20672) +06-02 16:38:45.312 D/StrictMode( 9365): at android.view.ViewGroup.layout(ViewGroup.java:6194) +06-02 16:38:45.312 D/StrictMode( 9365): at android.widget.LinearLayout.setChildFrame(LinearLayout.java:1812) +06-02 16:38:45.312 D/StrictMode( 9365): at android.widget.LinearLayout.layoutVertical(LinearLayout.java:1656) +06-02 16:38:45.312 D/StrictMode( 9365): at android.widget.LinearLayout.onLayout(LinearLayout.java:1565) +06-02 16:38:45.312 D/StrictMode( 9365): at android.view.View.layout(View.java:20672) +06-02 16:38:45.312 D/StrictMode( 9365): at android.view.ViewGroup.layout(ViewGroup.java:6194) +06-02 16:38:45.312 D/StrictMode( 9365): at android.widget.FrameLayout.layoutChildren(FrameLayout.java:323) +06-02 16:38:45.312 D/StrictMode( 9365): at android.widget.FrameLayout.onLayout(FrameLayout.java:261) +06-02 16:38:45.312 D/StrictMode( 9365): at android.view.View.layout(View.java:20672) +06-02 16:38:45.312 D/StrictMode( 9365): at android.view.ViewGroup.layout(ViewGroup.java:6194) +06-02 16:38:45.312 D/StrictMode( 9365): at android.widget.LinearLayout.setChildFrame(LinearLayout.java:1812) +06-02 16:38:45.312 D/StrictMode( 9365): at android.widget.LinearLayout.layoutVertical(LinearLayout.java:1656) +06-02 16:38:45.312 D/StrictMode( 9365): at android.widget.LinearLayout.onLayout(LinearLayout.java:1565) +06-02 16:38:45.312 D/StrictMode( 9365): at android.view.View.layout(View.java:20672) +06-02 16:38:45.312 D/StrictMode( 9365): at android.view.ViewGroup.layout(ViewGroup.java:6194) +06-02 16:38:45.312 D/StrictMode( 9365): at android.widget.FrameLayout.layoutChildren(FrameLayout.java:323) +06-02 16:38:45.312 D/StrictMode( 9365): at android.widget.FrameLayout.onLayout(FrameLayout.java:261) +06-02 16:38:45.312 D/StrictMode( 9365): at android.view.View.layout(View.java:20672) +06-02 16:38:45.312 D/StrictMode( 9365): at android.view.ViewGroup.layout(ViewGroup.java:6194) +06-02 16:38:45.312 D/StrictMode( 9365): at android.widget.LinearLayout.setChildFrame(LinearLayout.java:1812) +06-02 16:38:45.312 D/StrictMode( 9365): at android.widget.LinearLayout.layoutVertical(LinearLayout.java:1656) +06-02 16:38:45.312 D/StrictMode( 9365): at android.widget.LinearLayout.onLayout(LinearLayout.java:1565) +06-02 16:38:45.312 D/StrictMode( 9365): at android.view.View.layout(View.java:20672) +06-02 16:38:45.312 D/StrictMode( 9365): at android.view.ViewGroup.layout(ViewGroup.java:6194) +06-02 16:38:45.312 D/StrictMode( 9365): at android.widget.FrameLayout.layoutChildren(FrameLayout.java:323) +06-02 16:38:45.312 D/StrictMode( 9365): at android.widget.FrameLayout.onLayout(FrameLayout.java:261) +06-02 16:38:45.312 D/StrictMode( 9365): at com.android.internal.policy.DecorView.onLayout(DecorView.java:753) +06-02 16:38:45.312 D/StrictMode( 9365): at android.view.View.layout(View.java:20672) +06-02 16:38:45.312 D/StrictMode( 9365): at android.view.ViewGroup.layout(ViewGroup.java:6194) +06-02 16:38:45.312 D/StrictMode( 9365): at android.view.ViewRootImpl.performLayout(ViewRootImpl.java:2792) +06-02 16:38:45.312 D/StrictMode( 9365): at android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:2319) +06-02 16:38:45.312 D/StrictMode( 9365): at android.view.ViewRootImpl.doTraversal(ViewRootImpl.java:1460) +06-02 16:38:45.312 D/StrictMode( 9365): at android.view.ViewRootImpl$TraversalRunnable.run(ViewRootImpl.java:7183) +06-02 16:38:45.312 D/StrictMode( 9365): at android.view.Choreographer$CallbackRecord.run(Choreographer.java:949) +06-02 16:38:45.312 D/StrictMode( 9365): at android.view.Choreographer.doCallbacks(Choreographer.java:761) +06-02 16:38:45.312 D/StrictMode( 9365): at android.view.Choreographer.doFrame(Choreographer.java:696) +06-02 16:38:45.312 D/StrictMode( 9365): at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:935) +06-02 16:38:45.312 D/StrictMode( 9365): at android.os.Handler.handleCallback(Handler.java:873) +06-02 16:38:45.312 D/StrictMode( 9365): at android.os.Handler.dispatchMessage(Handler.java:99) +06-02 16:38:45.312 D/StrictMode( 9365): at android.os.Looper.loop(Looper.java:193) +06-02 16:38:45.312 D/StrictMode( 9365): at android.app.ActivityThread.main(ActivityThread.java:6669) +06-02 16:38:45.312 D/StrictMode( 9365): at java.lang.reflect.Method.invoke(Native Method) +06-02 16:38:45.312 D/StrictMode( 9365): at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:493) +06-02 16:38:45.312 D/StrictMode( 9365): at com.and +06-02 16:38:45.312 W/lla.fenix.debu( 9365): Accessing hidden method Landroid/os/Trace;->isTagEnabled(J)Z (light greylist, reflection) +06-02 16:38:45.316 D/StrictMode( 9365): StrictMode policy violation: android.os.strictmode.NonSdkApiUsedViolation: Landroid/os/Trace;->isTagEnabled(J)Z +06-02 16:38:45.316 D/StrictMode( 9365): at android.os.StrictMode.lambda$static$1(StrictMode.java:428) +06-02 16:38:45.316 D/StrictMode( 9365): at android.os.-$$Lambda$StrictMode$lu9ekkHJ2HMz0jd3F8K8MnhenxQ.accept(Unknown Source:2) +06-02 16:38:45.316 D/StrictMode( 9365): at java.lang.Class.getDeclaredMethodInternal(Native Method) +06-02 16:38:45.316 D/StrictMode( 9365): at java.lang.Class.getPublicMethodRecursive(Class.java:2075) +06-02 16:38:45.316 D/StrictMode( 9365): at java.lang.Class.getMethod(Class.java:2063) +06-02 16:38:45.316 D/StrictMode( 9365): at java.lang.Class.getMethod(Class.java:1690) +06-02 16:38:45.316 D/StrictMode( 9365): at androidx.core.os.TraceCompat.<clinit>(TraceCompat.java:51) +06-02 16:38:45.316 D/StrictMode( 9365): at androidx.core.os.TraceCompat.beginSection(TraceCompat.java:100) +06-02 16:38:45.316 D/StrictMode( 9365): at androidx.recyclerview.widget.RecyclerView.onLayout(RecyclerView.java:4403) +06-02 16:38:45.316 D/StrictMode( 9365): at android.view.View.layout(View.java:20672) +06-02 16:38:45.316 D/StrictMode( 9365): at android.view.ViewGroup.layout(ViewGroup.java:6194) +06-02 16:38:45.316 D/StrictMode( 9365): at com.google.android.material.appbar.HeaderScrollingViewBehavior.layoutChild(HeaderScrollingViewBehavior.java:148) +06-02 16:38:45.316 D/StrictMode( 9365): at com.google.android.material.appbar.ViewOffsetBehavior.onLayoutChild(ViewOffsetBehavior.java:43) +06-02 16:38:45.316 D/StrictMode( 9365): at com.google.android.material.appbar.AppBarLayout$ScrollingViewBehavior.onLayoutChild(AppBarLayout.java:1892) +06-02 16:38:45.316 D/StrictMode( 9365): at androidx.coordinatorlayout.widget.CoordinatorLayout.onLayout(CoordinatorLayout.java:918) +06-02 16:38:45.316 D/StrictMode( 9365): at android.view.View.layout(View.java:20672) +06-02 16:38:45.316 D/StrictMode( 9365): at android.view.ViewGroup.layout(ViewGroup.java:6194) +06-02 16:38:45.316 D/StrictMode( 9365): at android.widget.FrameLayout.layoutChildren(FrameLayout.java:323) +06-02 16:38:45.316 D/StrictMode( 9365): at android.widget.FrameLayout.onLayout(FrameLayout.java:261) +06-02 16:38:45.316 D/StrictMode( 9365): at android.view.View.layout(View.java:20672) +06-02 16:38:45.316 D/StrictMode( 9365): at android.view.ViewGroup.layout(ViewGroup.java:6194) +06-02 16:38:45.316 D/StrictMode( 9365): at android.widget.LinearLayout.setChildFrame(LinearLayout.java:1812) +06-02 16:38:45.316 D/StrictMode( 9365): at android.widget.LinearLayout.layoutVertical(LinearLayout.java:1656) +06-02 16:38:45.316 D/StrictMode( 9365): at android.widget.LinearLayout.onLayout(LinearLayout.java:1565) +06-02 16:38:45.316 D/StrictMode( 9365): at android.view.View.layout(View.java:20672) +06-02 16:38:45.316 D/StrictMode( 9365): at android.view.ViewGroup.layout(ViewGroup.java:6194) +06-02 16:38:45.316 D/StrictMode( 9365): at android.widget.FrameLayout.layoutChildren(FrameLayout.java:323) +06-02 16:38:45.316 D/StrictMode( 9365): at android.widget.FrameLayout.onLayout(FrameLayout.java:261) +06-02 16:38:45.316 D/StrictMode( 9365): at android.view.View.layout(View.java:20672) +06-02 16:38:45.316 D/StrictMode( 9365): at android.view.ViewGroup.layout(ViewGroup.java:6194) +06-02 16:38:45.316 D/StrictMode( 9365): at android.widget.LinearLayout.setChildFrame(LinearLayout.java:1812) +06-02 16:38:45.316 D/StrictMode( 9365): at android.widget.LinearLayout.layoutVertical(LinearLayout.java:1656) +06-02 16:38:45.316 D/StrictMode( 9365): at android.widget.LinearLayout.onLayout(LinearLayout.java:1565) +06-02 16:38:45.316 D/StrictMode( 9365): at android.view.View.layout(View.java:20672) +06-02 16:38:45.316 D/StrictMode( 9365): at android.view.ViewGroup.layout(ViewGroup.java:6194) +06-02 16:38:45.316 D/StrictMode( 9365): at android.widget.FrameLayout.layoutChildren(FrameLayout.java:323) +06-02 16:38:45.316 D/StrictMode( 9365): at android.widget.FrameLayout.onLayout(FrameLayout.java:261) +06-02 16:38:45.316 D/StrictMode( 9365): at android.view.View.layout(View.java:20672) +06-02 16:38:45.316 D/StrictMode( 9365): at android.view.ViewGroup.layout(ViewGroup.java:6194) +06-02 16:38:45.316 D/StrictMode( 9365): at android.widget.LinearLayout.setChildFrame(LinearLayout.java:1812) +06-02 16:38:45.316 D/StrictMode( 9365): at android.widget.LinearLayout.layoutVertical(LinearLayout.java:1656) +06-02 16:38:45.316 D/StrictMode( 9365): at android.widget.LinearLayout.onLayout(LinearLayout.java:1565) +06-02 16:38:45.316 D/StrictMode( 9365): at android.view.View.layout(View.java:20672) +06-02 16:38:45.316 D/StrictMode( 9365): at android.view.ViewGroup.layout(ViewGroup.java:6194) +06-02 16:38:45.316 D/StrictMode( 9365): at android.widget.FrameLayout.layoutChildren(FrameLayout.java:323) +06-02 16:38:45.316 D/StrictMode( 9365): at android.widget.FrameLayout.onLayout(FrameLayout.java:261) +06-02 16:38:45.316 D/StrictMode( 9365): at com.android.internal.policy.DecorView.onLayout(DecorView.java:753) +06-02 16:38:45.316 D/StrictMode( 9365): at android.view.View.layout(View.java:20672) +06-02 16:38:45.316 D/StrictMode( 9365): at android.view.ViewGroup.layout(ViewGroup.java:6194) +06-02 16:38:45.316 D/StrictMode( 9365): at android.view.ViewRootImpl.performLayout(ViewRootImpl.java:2792) +06-02 16:38:45.316 D/StrictMode( 9365): at android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:2319) +06-02 16:38:45.316 D/StrictMode( 9365): at android.view.ViewRootImpl.doTraversal(ViewRootImpl.java:1460) +06-02 16:38:45.316 D/StrictMode( 9365): at android.view.ViewRootImpl$TraversalRunnable.run(ViewRootImpl.java:7183) +06-02 16:38:45.316 D/StrictMode( 9365): at android.view.Choreographer$CallbackRecord.run(Choreographer.java:949) +06-02 16:38:45.316 D/StrictMode( 9365): at android.view.Choreographer.doCallbacks(Choreographer.java:761) +06-02 16:38:45.316 D/StrictMode( 9365): at android.view.Choreographer.doFrame(Choreographer.java:696) +06-02 16:38:45.316 D/StrictMode( 9365): at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:935) +06-02 16:38:45.316 D/StrictMode( 9365): at android.os.Handler.handleCallback(Handler.java:873) +06-02 16:38:45.316 D/StrictMode( 9365): at android.os.Handler.dispatchMessage(Handler.java:99) +06-02 16:38:45.316 D/StrictMode( 9365): at android.os.Looper.loop(Looper.java:193) +06-02 16:38:45.316 D/StrictMode( 9365): at android.app.ActivityThread.main(ActivityThread.java:6669) +06-02 16:38:45.316 D/StrictMode( 9365): at java.lang.reflect.Method.invoke +06-02 16:38:45.316 W/lla.fenix.debu( 9365): Accessing hidden method Landroid/os/Trace;->asyncTraceBegin(JLjava/lang/String;I)V (light greylist, reflection) +06-02 16:38:45.323 D/StrictMode( 9365): StrictMode policy violation: android.os.strictmode.NonSdkApiUsedViolation: Landroid/os/Trace;->asyncTraceBegin(JLjava/lang/String;I)V +06-02 16:38:45.323 D/StrictMode( 9365): at android.os.StrictMode.lambda$static$1(StrictMode.java:428) +06-02 16:38:45.323 D/StrictMode( 9365): at android.os.-$$Lambda$StrictMode$lu9ekkHJ2HMz0jd3F8K8MnhenxQ.accept(Unknown Source:2) +06-02 16:38:45.323 D/StrictMode( 9365): at java.lang.Class.getDeclaredMethodInternal(Native Method) +06-02 16:38:45.323 D/StrictMode( 9365): at java.lang.Class.getPublicMethodRecursive(Class.java:2075) +06-02 16:38:45.323 D/StrictMode( 9365): at java.lang.Class.getMethod(Class.java:2063) +06-02 16:38:45.323 D/StrictMode( 9365): at java.lang.Class.getMethod(Class.java:1690) +06-02 16:38:45.323 D/StrictMode( 9365): at androidx.core.os.TraceCompat.<clinit>(TraceCompat.java:52) +06-02 16:38:45.323 D/StrictMode( 9365): at androidx.core.os.TraceCompat.beginSection(TraceCompat.java:100) +06-02 16:38:45.323 D/StrictMode( 9365): at androidx.recyclerview.widget.RecyclerView.onLayout(RecyclerView.java:4403) +06-02 16:38:45.323 D/StrictMode( 9365): at android.view.View.layout(View.java:20672) +06-02 16:38:45.323 D/StrictMode( 9365): at android.view.ViewGroup.layout(ViewGroup.java:6194) +06-02 16:38:45.323 D/StrictMode( 9365): at com.google.android.material.appbar.HeaderScrollingViewBehavior.layoutChild(HeaderScrollingViewBehavior.java:148) +06-02 16:38:45.323 D/StrictMode( 9365): at com.google.android.material.appbar.ViewOffsetBehavior.onLayoutChild(ViewOffsetBehavior.java:43) +06-02 16:38:45.323 D/StrictMode( 9365): at com.google.android.material.appbar.AppBarLayout$ScrollingViewBehavior.onLayoutChild(AppBarLayout.java:1892) +06-02 16:38:45.323 D/StrictMode( 9365): at androidx.coordinatorlayout.widget.CoordinatorLayout.onLayout(CoordinatorLayout.java:918) +06-02 16:38:45.323 D/StrictMode( 9365): at android.view.View.layout(View.java:20672) +06-02 16:38:45.323 D/StrictMode( 9365): at android.view.ViewGroup.layout(ViewGroup.java:6194) +06-02 16:38:45.323 D/StrictMode( 9365): at android.widget.FrameLayout.layoutChildren(FrameLayout.java:323) +06-02 16:38:45.323 D/StrictMode( 9365): at android.widget.FrameLayout.onLayout(FrameLayout.java:261) +06-02 16:38:45.323 D/StrictMode( 9365): at android.view.View.layout(View.java:20672) +06-02 16:38:45.323 D/StrictMode( 9365): at android.view.ViewGroup.layout(ViewGroup.java:6194) +06-02 16:38:45.323 D/StrictMode( 9365): at android.widget.LinearLayout.setChildFrame(LinearLayout.java:1812) +06-02 16:38:45.323 D/StrictMode( 9365): at android.widget.LinearLayout.layoutVertical(LinearLayout.java:1656) +06-02 16:38:45.323 D/StrictMode( 9365): at android.widget.LinearLayout.onLayout(LinearLayout.java:1565) +06-02 16:38:45.323 D/StrictMode( 9365): at android.view.View.layout(View.java:20672) +06-02 16:38:45.323 D/StrictMode( 9365): at android.view.ViewGroup.layout(ViewGroup.java:6194) +06-02 16:38:45.323 D/StrictMode( 9365): at android.widget.FrameLayout.layoutChildren(FrameLayout.java:323) +06-02 16:38:45.323 D/StrictMode( 9365): at android.widget.FrameLayout.onLayout(FrameLayout.java:261) +06-02 16:38:45.323 D/StrictMode( 9365): at android.view.View.layout(View.java:20672) +06-02 16:38:45.323 D/StrictMode( 9365): at android.view.ViewGroup.layout(ViewGroup.java:6194) +06-02 16:38:45.323 D/StrictMode( 9365): at android.widget.LinearLayout.setChildFrame(LinearLayout.java:1812) +06-02 16:38:45.323 D/StrictMode( 9365): at android.widget.LinearLayout.layoutVertical(LinearLayout.java:1656) +06-02 16:38:45.323 D/StrictMode( 9365): at android.widget.LinearLayout.onLayout(LinearLayout.java:1565) +06-02 16:38:45.323 D/StrictMode( 9365): at android.view.View.layout(View.java:20672) +06-02 16:38:45.323 D/StrictMode( 9365): at android.view.ViewGroup.layout(ViewGroup.java:6194) +06-02 16:38:45.323 D/StrictMode( 9365): at android.widget.FrameLayout.layoutChildren(FrameLayout.java:323) +06-02 16:38:45.323 D/StrictMode( 9365): at android.widget.FrameLayout.onLayout(FrameLayout.java:261) +06-02 16:38:45.323 D/StrictMode( 9365): at android.view.View.layout(View.java:20672) +06-02 16:38:45.323 D/StrictMode( 9365): at android.view.ViewGroup.layout(ViewGroup.java:6194) +06-02 16:38:45.323 D/StrictMode( 9365): at android.widget.LinearLayout.setChildFrame(LinearLayout.java:1812) +06-02 16:38:45.323 D/StrictMode( 9365): at android.widget.LinearLayout.layoutVertical(LinearLayout.java:1656) +06-02 16:38:45.323 D/StrictMode( 9365): at android.widget.LinearLayout.onLayout(LinearLayout.java:1565) +06-02 16:38:45.323 D/StrictMode( 9365): at android.view.View.layout(View.java:20672) +06-02 16:38:45.323 D/StrictMode( 9365): at android.view.ViewGroup.layout(ViewGroup.java:6194) +06-02 16:38:45.323 D/StrictMode( 9365): at android.widget.FrameLayout.layoutChildren(FrameLayout.java:323) +06-02 16:38:45.323 D/StrictMode( 9365): at android.widget.FrameLayout.onLayout(FrameLayout.java:261) +06-02 16:38:45.323 D/StrictMode( 9365): at com.android.internal.policy.DecorView.onLayout(DecorView.java:753) +06-02 16:38:45.323 D/StrictMode( 9365): at android.view.View.layout(View.java:20672) +06-02 16:38:45.323 D/StrictMode( 9365): at android.view.ViewGroup.layout(ViewGroup.java:6194) +06-02 16:38:45.323 D/StrictMode( 9365): at android.view.ViewRootImpl.performLayout(ViewRootImpl.java:2792) +06-02 16:38:45.323 D/StrictMode( 9365): at android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:2319) +06-02 16:38:45.323 D/StrictMode( 9365): at android.view.ViewRootImpl.doTraversal(ViewRootImpl.java:1460) +06-02 16:38:45.323 D/StrictMode( 9365): at android.view.ViewRootImpl$TraversalRunnable.run(ViewRootImpl.java:7183) +06-02 16:38:45.323 D/StrictMode( 9365): at android.view.Choreographer$CallbackRecord.run(Choreographer.java:949) +06-02 16:38:45.323 D/StrictMode( 9365): at android.view.Choreographer.doCallbacks(Choreographer.java:761) +06-02 16:38:45.323 D/StrictMode( 9365): at android.view.Choreographer.doFrame(Choreographer.java:696) +06-02 16:38:45.323 D/StrictMode( 9365): at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:935) +06-02 16:38:45.323 D/StrictMode( 9365): at android.os.Handler.handleCallback(Handler.java:873) +06-02 16:38:45.323 D/StrictMode( 9365): at android.os.Handler.dispatchMessage(Handler.java:99) +06-02 16:38:45.323 D/StrictMode( 9365): at android.os.Looper.loop(Looper.java:193) +06-02 16:38:45.323 D/StrictMode( 9365): at android.app.ActivityThread.main(ActivityThread.java:6669) +06-02 16:38:45.323 D/StrictMode( 9365): at java.lang +06-02 16:38:45.323 W/lla.fenix.debu( 9365): Accessing hidden method Landroid/os/Trace;->asyncTraceEnd(JLjava/lang/String;I)V (light greylist, reflection) +06-02 16:38:45.326 D/StrictMode( 9365): StrictMode policy violation: android.os.strictmode.NonSdkApiUsedViolation: Landroid/os/Trace;->asyncTraceEnd(JLjava/lang/String;I)V +06-02 16:38:45.326 D/StrictMode( 9365): at android.os.StrictMode.lambda$static$1(StrictMode.java:428) +06-02 16:38:45.326 D/StrictMode( 9365): at android.os.-$$Lambda$StrictMode$lu9ekkHJ2HMz0jd3F8K8MnhenxQ.accept(Unknown Source:2) +06-02 16:38:45.326 D/StrictMode( 9365): at java.lang.Class.getDeclaredMethodInternal(Native Method) +06-02 16:38:45.326 D/StrictMode( 9365): at java.lang.Class.getPublicMethodRecursive(Class.java:2075) +06-02 16:38:45.326 D/StrictMode( 9365): at java.lang.Class.getMethod(Class.java:2063) +06-02 16:38:45.326 D/StrictMode( 9365): at java.lang.Class.getMethod(Class.java:1690) +06-02 16:38:45.326 D/StrictMode( 9365): at androidx.core.os.TraceCompat.<clinit>(TraceCompat.java:54) +06-02 16:38:45.326 D/StrictMode( 9365): at androidx.core.os.TraceCompat.beginSection(TraceCompat.java:100) +06-02 16:38:45.326 D/StrictMode( 9365): at androidx.recyclerview.widget.RecyclerView.onLayout(RecyclerView.java:4403) +06-02 16:38:45.326 D/StrictMode( 9365): at android.view.View.layout(View.java:20672) +06-02 16:38:45.326 D/StrictMode( 9365): at android.view.ViewGroup.layout(ViewGroup.java:6194) +06-02 16:38:45.326 D/StrictMode( 9365): at com.google.android.material.appbar.HeaderScrollingViewBehavior.layoutChild(HeaderScrollingViewBehavior.java:148) +06-02 16:38:45.326 D/StrictMode( 9365): at com.google.android.material.appbar.ViewOffsetBehavior.onLayoutChild(ViewOffsetBehavior.java:43) +06-02 16:38:45.326 D/StrictMode( 9365): at com.google.android.material.appbar.AppBarLayout$ScrollingViewBehavior.onLayoutChild(AppBarLayout.java:1892) +06-02 16:38:45.326 D/StrictMode( 9365): at androidx.coordinatorlayout.widget.CoordinatorLayout.onLayout(CoordinatorLayout.java:918) +06-02 16:38:45.326 D/StrictMode( 9365): at android.view.View.layout(View.java:20672) +06-02 16:38:45.326 D/StrictMode( 9365): at android.view.ViewGroup.layout(ViewGroup.java:6194) +06-02 16:38:45.326 D/StrictMode( 9365): at android.widget.FrameLayout.layoutChildren(FrameLayout.java:323) +06-02 16:38:45.326 D/StrictMode( 9365): at android.widget.FrameLayout.onLayout(FrameLayout.java:261) +06-02 16:38:45.326 D/StrictMode( 9365): at android.view.View.layout(View.java:20672) +06-02 16:38:45.326 D/StrictMode( 9365): at android.view.ViewGroup.layout(ViewGroup.java:6194) +06-02 16:38:45.326 D/StrictMode( 9365): at android.widget.LinearLayout.setChildFrame(LinearLayout.java:1812) +06-02 16:38:45.326 D/StrictMode( 9365): at android.widget.LinearLayout.layoutVertical(LinearLayout.java:1656) +06-02 16:38:45.326 D/StrictMode( 9365): at android.widget.LinearLayout.onLayout(LinearLayout.java:1565) +06-02 16:38:45.326 D/StrictMode( 9365): at android.view.View.layout(View.java:20672) +06-02 16:38:45.326 D/StrictMode( 9365): at android.view.ViewGroup.layout(ViewGroup.java:6194) +06-02 16:38:45.326 D/StrictMode( 9365): at android.widget.FrameLayout.layoutChildren(FrameLayout.java:323) +06-02 16:38:45.326 D/StrictMode( 9365): at android.widget.FrameLayout.onLayout(FrameLayout.java:261) +06-02 16:38:45.326 D/StrictMode( 9365): at android.view.View.layout(View.java:20672) +06-02 16:38:45.326 D/StrictMode( 9365): at android.view.ViewGroup.layout(ViewGroup.java:6194) +06-02 16:38:45.326 D/StrictMode( 9365): at android.widget.LinearLayout.setChildFrame(LinearLayout.java:1812) +06-02 16:38:45.326 D/StrictMode( 9365): at android.widget.LinearLayout.layoutVertical(LinearLayout.java:1656) +06-02 16:38:45.326 D/StrictMode( 9365): at android.widget.LinearLayout.onLayout(LinearLayout.java:1565) +06-02 16:38:45.326 D/StrictMode( 9365): at android.view.View.layout(View.java:20672) +06-02 16:38:45.326 D/StrictMode( 9365): at android.view.ViewGroup.layout(ViewGroup.java:6194) +06-02 16:38:45.326 D/StrictMode( 9365): at android.widget.FrameLayout.layoutChildren(FrameLayout.java:323) +06-02 16:38:45.326 D/StrictMode( 9365): at android.widget.FrameLayout.onLayout(FrameLayout.java:261) +06-02 16:38:45.326 D/StrictMode( 9365): at android.view.View.layout(View.java:20672) +06-02 16:38:45.326 D/StrictMode( 9365): at android.view.ViewGroup.layout(ViewGroup.java:6194) +06-02 16:38:45.326 D/StrictMode( 9365): at android.widget.LinearLayout.setChildFrame(LinearLayout.java:1812) +06-02 16:38:45.326 D/StrictMode( 9365): at android.widget.LinearLayout.layoutVertical(LinearLayout.java:1656) +06-02 16:38:45.326 D/StrictMode( 9365): at android.widget.LinearLayout.onLayout(LinearLayout.java:1565) +06-02 16:38:45.326 D/StrictMode( 9365): at android.view.View.layout(View.java:20672) +06-02 16:38:45.326 D/StrictMode( 9365): at android.view.ViewGroup.layout(ViewGroup.java:6194) +06-02 16:38:45.326 D/StrictMode( 9365): at android.widget.FrameLayout.layoutChildren(FrameLayout.java:323) +06-02 16:38:45.326 D/StrictMode( 9365): at android.widget.FrameLayout.onLayout(FrameLayout.java:261) +06-02 16:38:45.326 D/StrictMode( 9365): at com.android.internal.policy.DecorView.onLayout(DecorView.java:753) +06-02 16:38:45.326 D/StrictMode( 9365): at android.view.View.layout(View.java:20672) +06-02 16:38:45.326 D/StrictMode( 9365): at android.view.ViewGroup.layout(ViewGroup.java:6194) +06-02 16:38:45.326 D/StrictMode( 9365): at android.view.ViewRootImpl.performLayout(ViewRootImpl.java:2792) +06-02 16:38:45.326 D/StrictMode( 9365): at android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:2319) +06-02 16:38:45.326 D/StrictMode( 9365): at android.view.ViewRootImpl.doTraversal(ViewRootImpl.java:1460) +06-02 16:38:45.326 D/StrictMode( 9365): at android.view.ViewRootImpl$TraversalRunnable.run(ViewRootImpl.java:7183) +06-02 16:38:45.326 D/StrictMode( 9365): at android.view.Choreographer$CallbackRecord.run(Choreographer.java:949) +06-02 16:38:45.326 D/StrictMode( 9365): at android.view.Choreographer.doCallbacks(Choreographer.java:761) +06-02 16:38:45.326 D/StrictMode( 9365): at android.view.Choreographer.doFrame(Choreographer.java:696) +06-02 16:38:45.326 D/StrictMode( 9365): at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:935) +06-02 16:38:45.326 D/StrictMode( 9365): at android.os.Handler.handleCallback(Handler.java:873) +06-02 16:38:45.326 D/StrictMode( 9365): at android.os.Handler.dispatchMessage(Handler.java:99) +06-02 16:38:45.326 D/StrictMode( 9365): at android.os.Looper.loop(Looper.java:193) +06-02 16:38:45.326 D/StrictMode( 9365): at android.app.ActivityThread.main(ActivityThread.java:6669) +06-02 16:38:45.326 D/StrictMode( 9365): at java.lang.r +06-02 16:38:45.327 W/lla.fenix.debu( 9365): Accessing hidden method Landroid/os/Trace;->traceCounter(JLjava/lang/String;I)V (light greylist, reflection) +06-02 16:38:45.330 D/StrictMode( 9365): StrictMode policy violation: android.os.strictmode.NonSdkApiUsedViolation: Landroid/os/Trace;->traceCounter(JLjava/lang/String;I)V +06-02 16:38:45.330 D/StrictMode( 9365): at android.os.StrictMode.lambda$static$1(StrictMode.java:428) +06-02 16:38:45.330 D/StrictMode( 9365): at android.os.-$$Lambda$StrictMode$lu9ekkHJ2HMz0jd3F8K8MnhenxQ.accept(Unknown Source:2) +06-02 16:38:45.330 D/StrictMode( 9365): at java.lang.Class.getDeclaredMethodInternal(Native Method) +06-02 16:38:45.330 D/StrictMode( 9365): at java.lang.Class.getPublicMethodRecursive(Class.java:2075) +06-02 16:38:45.330 D/StrictMode( 9365): at java.lang.Class.getMethod(Class.java:2063) +06-02 16:38:45.330 D/StrictMode( 9365): at java.lang.Class.getMethod(Class.java:1690) +06-02 16:38:45.330 D/StrictMode( 9365): at androidx.core.os.TraceCompat.<clinit>(TraceCompat.java:56) +06-02 16:38:45.330 D/StrictMode( 9365): at androidx.core.os.TraceCompat.beginSection(TraceCompat.java:100) +06-02 16:38:45.330 D/StrictMode( 9365): at androidx.recyclerview.widget.RecyclerView.onLayout(RecyclerView.java:4403) +06-02 16:38:45.330 D/StrictMode( 9365): at android.view.View.layout(View.java:20672) +06-02 16:38:45.330 D/StrictMode( 9365): at android.view.ViewGroup.layout(ViewGroup.java:6194) +06-02 16:38:45.330 D/StrictMode( 9365): at com.google.android.material.appbar.HeaderScrollingViewBehavior.layoutChild(HeaderScrollingViewBehavior.java:148) +06-02 16:38:45.330 D/StrictMode( 9365): at com.google.android.material.appbar.ViewOffsetBehavior.onLayoutChild(ViewOffsetBehavior.java:43) +06-02 16:38:45.330 D/StrictMode( 9365): at com.google.android.material.appbar.AppBarLayout$ScrollingViewBehavior.onLayoutChild(AppBarLayout.java:1892) +06-02 16:38:45.330 D/StrictMode( 9365): at androidx.coordinatorlayout.widget.CoordinatorLayout.onLayout(CoordinatorLayout.java:918) +06-02 16:38:45.330 D/StrictMode( 9365): at android.view.View.layout(View.java:20672) +06-02 16:38:45.330 D/StrictMode( 9365): at android.view.ViewGroup.layout(ViewGroup.java:6194) +06-02 16:38:45.330 D/StrictMode( 9365): at android.widget.FrameLayout.layoutChildren(FrameLayout.java:323) +06-02 16:38:45.330 D/StrictMode( 9365): at android.widget.FrameLayout.onLayout(FrameLayout.java:261) +06-02 16:38:45.330 D/StrictMode( 9365): at android.view.View.layout(View.java:20672) +06-02 16:38:45.330 D/StrictMode( 9365): at android.view.ViewGroup.layout(ViewGroup.java:6194) +06-02 16:38:45.330 D/StrictMode( 9365): at android.widget.LinearLayout.setChildFrame(LinearLayout.java:1812) +06-02 16:38:45.330 D/StrictMode( 9365): at android.widget.LinearLayout.layoutVertical(LinearLayout.java:1656) +06-02 16:38:45.330 D/StrictMode( 9365): at android.widget.LinearLayout.onLayout(LinearLayout.java:1565) +06-02 16:38:45.330 D/StrictMode( 9365): at android.view.View.layout(View.java:20672) +06-02 16:38:45.330 D/StrictMode( 9365): at android.view.ViewGroup.layout(ViewGroup.java:6194) +06-02 16:38:45.330 D/StrictMode( 9365): at android.widget.FrameLayout.layoutChildren(FrameLayout.java:323) +06-02 16:38:45.330 D/StrictMode( 9365): at android.widget.FrameLayout.onLayout(FrameLayout.java:261) +06-02 16:38:45.330 D/StrictMode( 9365): at android.view.View.layout(View.java:20672) +06-02 16:38:45.330 D/StrictMode( 9365): at android.view.ViewGroup.layout(ViewGroup.java:6194) +06-02 16:38:45.330 D/StrictMode( 9365): at android.widget.LinearLayout.setChildFrame(LinearLayout.java:1812) +06-02 16:38:45.330 D/StrictMode( 9365): at android.widget.LinearLayout.layoutVertical(LinearLayout.java:1656) +06-02 16:38:45.330 D/StrictMode( 9365): at android.widget.LinearLayout.onLayout(LinearLayout.java:1565) +06-02 16:38:45.330 D/StrictMode( 9365): at android.view.View.layout(View.java:20672) +06-02 16:38:45.330 D/StrictMode( 9365): at android.view.ViewGroup.layout(ViewGroup.java:6194) +06-02 16:38:45.330 D/StrictMode( 9365): at android.widget.FrameLayout.layoutChildren(FrameLayout.java:323) +06-02 16:38:45.330 D/StrictMode( 9365): at android.widget.FrameLayout.onLayout(FrameLayout.java:261) +06-02 16:38:45.330 D/StrictMode( 9365): at android.view.View.layout(View.java:20672) +06-02 16:38:45.330 D/StrictMode( 9365): at android.view.ViewGroup.layout(ViewGroup.java:6194) +06-02 16:38:45.330 D/StrictMode( 9365): at android.widget.LinearLayout.setChildFrame(LinearLayout.java:1812) +06-02 16:38:45.330 D/StrictMode( 9365): at android.widget.LinearLayout.layoutVertical(LinearLayout.java:1656) +06-02 16:38:45.330 D/StrictMode( 9365): at android.widget.LinearLayout.onLayout(LinearLayout.java:1565) +06-02 16:38:45.330 D/StrictMode( 9365): at android.view.View.layout(View.java:20672) +06-02 16:38:45.330 D/StrictMode( 9365): at android.view.ViewGroup.layout(ViewGroup.java:6194) +06-02 16:38:45.330 D/StrictMode( 9365): at android.widget.FrameLayout.layoutChildren(FrameLayout.java:323) +06-02 16:38:45.330 D/StrictMode( 9365): at android.widget.FrameLayout.onLayout(FrameLayout.java:261) +06-02 16:38:45.330 D/StrictMode( 9365): at com.android.internal.policy.DecorView.onLayout(DecorView.java:753) +06-02 16:38:45.330 D/StrictMode( 9365): at android.view.View.layout(View.java:20672) +06-02 16:38:45.330 D/StrictMode( 9365): at android.view.ViewGroup.layout(ViewGroup.java:6194) +06-02 16:38:45.330 D/StrictMode( 9365): at android.view.ViewRootImpl.performLayout(ViewRootImpl.java:2792) +06-02 16:38:45.330 D/StrictMode( 9365): at android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:2319) +06-02 16:38:45.330 D/StrictMode( 9365): at android.view.ViewRootImpl.doTraversal(ViewRootImpl.java:1460) +06-02 16:38:45.330 D/StrictMode( 9365): at android.view.ViewRootImpl$TraversalRunnable.run(ViewRootImpl.java:7183) +06-02 16:38:45.330 D/StrictMode( 9365): at android.view.Choreographer$CallbackRecord.run(Choreographer.java:949) +06-02 16:38:45.330 D/StrictMode( 9365): at android.view.Choreographer.doCallbacks(Choreographer.java:761) +06-02 16:38:45.330 D/StrictMode( 9365): at android.view.Choreographer.doFrame(Choreographer.java:696) +06-02 16:38:45.330 D/StrictMode( 9365): at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:935) +06-02 16:38:45.330 D/StrictMode( 9365): at android.os.Handler.handleCallback(Handler.java:873) +06-02 16:38:45.330 D/StrictMode( 9365): at android.os.Handler.dispatchMessage(Handler.java:99) +06-02 16:38:45.330 D/StrictMode( 9365): at android.os.Looper.loop(Looper.java:193) +06-02 16:38:45.330 D/StrictMode( 9365): at android.app.ActivityThread.main(ActivityThread.java:6669) +06-02 16:38:45.330 D/StrictMode( 9365): at java.lang.re +06-02 16:38:45.335 D/GeckoNetworkManager( 9365): Incoming event receivedUpdate for state OnWithListeners -> OnWithListeners +06-02 16:38:45.336 D/GeckoNetworkManager( 9365): New network state: UP, WIFI, WIFI +06-02 16:38:45.363 D/EGL_emulation( 9365): eglMakeCurrent: 0xe51a88e0: ver 3 0 (tinfo 0xe1995a60) +06-02 16:38:45.406 D/glean/PingUploadWorker( 9365): Processing persisted pings at /data/user/0/org.mozilla.fenix.debug/glean_data/pending_pings +06-02 16:38:45.406 D/glean/PingUploadWorker( 9365): Processing ping: f2c83a47-027f-4c73-8ff2-9bc7dc060222 +06-02 16:38:45.413 I/ActivityManager( 1869): Displayed org.mozilla.fenix.debug/.App: +2s34ms +06-02 16:38:45.414 I/GoogleInputMethod( 1996): onFinishInput() : Dummy InputConnection bound +06-02 16:38:45.414 I/GoogleInputMethod( 1996): onStartInput() : Dummy InputConnection bound +06-02 16:38:45.418 D/glean/ConceptFetchHttpUploader( 9365): Submitting ping to: https://incoming.telemetry.mozilla.org/submit/org-mozilla-fenix-debug/baseline/1/f2c83a47-027f-4c73-8ff2-9bc7dc060222 +06-02 16:38:45.426 E/adbd ( 4408): failed to connect to socket 'tcp:2829': Connection refused +06-02 16:38:45.443 D/GeckoViewStartup( 9365): onEvent GeckoView:SetLocale +06-02 16:38:45.444 D/GeckoViewStartup( 9365): onEvent GeckoView:ResetUserPrefs +06-02 16:38:45.459 D/GeckoViewRemoteDebugger( 9365): onInit +06-02 16:38:45.459 D/GeckoViewConsole( 9365): enabled = false +06-02 16:38:45.475 D/StrictMode( 9365): StrictMode policy violation; ~duration=23 ms: android.os.strictmode.DiskReadViolation +06-02 16:38:45.475 D/StrictMode( 9365): at android.os.StrictMode$AndroidBlockGuardPolicy.onReadFromDisk(StrictMode.java:1504) +06-02 16:38:45.475 D/StrictMode( 9365): at java.io.UnixFileSystem.checkAccess(UnixFileSystem.java:251) +06-02 16:38:45.475 D/StrictMode( 9365): at java.io.File.exists(File.java:815) +06-02 16:38:45.475 D/StrictMode( 9365): at android.app.ContextImpl.ensurePrivateDirExists(ContextImpl.java:605) +06-02 16:38:45.475 D/StrictMode( 9365): at android.app.ContextImpl.ensurePrivateDirExists(ContextImpl.java:596) +06-02 16:38:45.475 D/StrictMode( 9365): at android.app.ContextImpl.getFilesDir(ContextImpl.java:641) +06-02 16:38:45.475 D/StrictMode( 9365): at android.content.ContextWrapper.getFilesDir(ContextWrapper.java:239) +06-02 16:38:45.475 D/StrictMode( 9365): at mozilla.components.feature.tab.collections.TabCollectionStorage.<init>(TabCollectionStorage.kt:29) +06-02 16:38:45.475 D/StrictMode( 9365): at org.mozilla.fenix.components.TabCollectionStorage$collectionStorage$2.invoke(TabCollectionStorage.kt:52) +06-02 16:38:45.475 D/StrictMode( 9365): at org.mozilla.fenix.components.TabCollectionStorage$collectionStorage$2.invoke(TabCollectionStorage.kt:23) +06-02 16:38:45.475 D/StrictMode( 9365): at kotlin.SynchronizedLazyImpl.getValue(LazyJVM.kt:74) +06-02 16:38:45.475 D/StrictMode( 9365): at org.mozilla.fenix.components.TabCollectionStorage.getCollectionStorage(Unknown Source:7) +06-02 16:38:45.475 D/StrictMode( 9365): at org.mozilla.fenix.components.TabCollectionStorage.getCollections(TabCollectionStorage.kt:70) +06-02 16:38:45.475 D/StrictMode( 9365): at org.mozilla.fenix.components.TabCollectionStorage.getCollections$default(TabCollectionStorage.kt:69) +06-02 16:38:45.475 D/StrictMode( 9365): at org.mozilla.fenix.home.HomeFragment.subscribeToTabCollections(HomeFragment.kt:750) +06-02 16:38:45.475 D/StrictMode( 9365): at org.mozilla.fenix.home.HomeFragment.onStart(HomeFragment.kt:404) +06-02 16:38:45.475 D/StrictMode( 9365): at androidx.fragment.app.Fragment.performStart(Fragment.java:2730) +06-02 16:38:45.475 D/StrictMode( 9365): at androidx.fragment.app.FragmentStateManager.start(FragmentStateManager.java:365) +06-02 16:38:45.475 D/StrictMode( 9365): at androidx.fragment.app.FragmentManager.moveToState(FragmentManager.java:1194) +06-02 16:38:45.475 D/StrictMode( 9365): at androidx.fragment.app.FragmentManager.moveToState(FragmentManager.java:1356) +06-02 16:38:45.475 D/StrictMode( 9365): at androidx.fragment.app.FragmentManager.moveFragmentToExpectedState(FragmentManager.java:1434) +06-02 16:38:45.475 D/StrictMode( 9365): at androidx.fragment.app.FragmentManager.moveToState(FragmentManager.java:1497) +06-02 16:38:45.475 D/StrictMode( 9365): at androidx.fragment.app.FragmentManager.completeExecute(FragmentManager.java:2125) +06-02 16:38:45.475 D/StrictMode( 9365): at androidx.fragment.app.FragmentManager$StartEnterTransitionListener.completeTransaction(FragmentManager.java:3022) +06-02 16:38:45.475 D/StrictMode( 9365): at androidx.fragment.app.FragmentManager.executePostponedTransaction(FragmentManager.java:1895) +06-02 16:38:45.475 D/StrictMode( 9365): at androidx.fragment.app.FragmentManager.ensureExecReady(FragmentManager.java:1803) +06-02 16:38:45.475 D/StrictMode( 9365): at androidx.fragment.app.FragmentManager.execPendingActions(FragmentManager.java:1843) +06-02 16:38:45.475 D/StrictMode( 9365): at androidx.fragment.app.FragmentManager$4.run(FragmentManager.java:413) +06-02 16:38:45.475 D/StrictMode( 9365): at android.os.Handler.handleCallback(Handler.java:873) +06-02 16:38:45.475 D/StrictMode( 9365): at android.os.Handler.dispatchMessage(Handler.java:99) +06-02 16:38:45.475 D/StrictMode( 9365): at android.os.Looper.loop(Looper.java:193) +06-02 16:38:45.475 D/StrictMode( 9365): at android.app.ActivityThread.main(ActivityThread.java:6669) +06-02 16:38:45.475 D/StrictMode( 9365): at java.lang.reflect.Method.invoke(Native Method) +06-02 16:38:45.475 D/StrictMode( 9365): at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:493) +06-02 16:38:45.475 D/StrictMode( 9365): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:858) +06-02 16:38:45.518 D/GeckoViewStartup( 9365): onEvent GeckoView:SetLocale +06-02 16:38:45.519 D/GeckoViewStartup( 9365): onEvent GeckoView:SetDefaultPrefs +06-02 16:38:45.528 D/GeckoViewStartup( 9365): onEvent GeckoView:SetDefaultPrefs +06-02 16:38:45.532 E/adbd ( 4408): failed to connect to socket 'tcp:2829': Connection refused +06-02 16:38:45.534 D/GeckoViewStartup( 9365): onEvent GeckoView:SetDefaultPrefs +06-02 16:38:45.549 I/chatty ( 9365): uid=10099(org.mozilla.fenix.debug) Gecko identical 2 lines +06-02 16:38:45.562 D/GeckoViewStartup( 9365): onEvent GeckoView:SetDefaultPrefs +06-02 16:38:45.568 D/gralloc_ranchu( 1869): gralloc_unregister_buffer: exiting HostConnection (is buffer-handling thread) +06-02 16:38:45.569 D/ ( 1869): HostConnection::get() New Host Connection established 0xc1b060c0, tid 1930 +06-02 16:38:45.570 D/gralloc_ranchu( 1869): gralloc_unregister_buffer: exiting HostConnection (is buffer-handling thread) +06-02 16:38:45.571 D/ ( 1869): HostConnection::get() New Host Connection established 0xc1b060c0, tid 1930 +06-02 16:38:45.571 D/gralloc_ranchu( 1869): gralloc_unregister_buffer: exiting HostConnection (is buffer-handling thread) +06-02 16:38:45.572 D/ ( 1869): HostConnection::get() New Host Connection established 0xc1b060c0, tid 1930 +06-02 16:38:45.572 D/gralloc_ranchu( 1869): gralloc_unregister_buffer: exiting HostConnection (is buffer-handling thread) +06-02 16:38:45.573 W/SurfaceFlinger( 1728): Attempting to set client state on removed layer: Splash Screen org.mozilla.fenix.debug#0 +06-02 16:38:45.573 W/SurfaceFlinger( 1728): Attempting to destroy on removed layer: Splash Screen org.mozilla.fenix.debug#0 +06-02 16:38:45.580 D/GeckoViewStartup( 9365): onEvent GeckoView:SetDefaultPrefs +06-02 16:38:45.584 D/GeckoViewStartup( 9365): onEvent GeckoView:SetDefaultPrefs +06-02 16:38:45.584 D/gralloc_ranchu( 1897): gralloc_unregister_buffer: exiting HostConnection (is buffer-handling thread) +06-02 16:38:45.585 D/ ( 1897): HostConnection::get() New Host Connection established 0xed7c3080, tid 1897 +06-02 16:38:45.585 D/gralloc_ranchu( 1897): gralloc_unregister_buffer: exiting HostConnection (is buffer-handling thread) +06-02 16:38:45.585 D/ ( 1897): HostConnection::get() New Host Connection established 0xed7c3080, tid 1897 +06-02 16:38:45.586 D/gralloc_ranchu( 1897): gralloc_unregister_buffer: exiting HostConnection (is buffer-handling thread) +06-02 16:38:45.586 D/ ( 1897): HostConnection::get() New Host Connection established 0xed7c3080, tid 1897 +06-02 16:38:45.586 D/gralloc_ranchu( 1897): gralloc_unregister_buffer: exiting HostConnection (is buffer-handling thread) +06-02 16:38:45.588 D/GeckoViewStartup( 9365): onEvent GeckoView:SetDefaultPrefs +06-02 16:38:45.594 D/ ( 1897): HostConnection::get() New Host Connection established 0xed7c3080, tid 1897 +06-02 16:38:45.595 D/GeckoViewStartup( 9365): onEvent GeckoView:SetDefaultPrefs +06-02 16:38:45.595 D/GeckoViewStartup( 9365): onEvent GeckoView:SetDefaultPrefs +06-02 16:38:45.602 D/GeckoViewConsole( 9365): onEvent GeckoView:RegisterWebExtension {"allowContentMessaging":true,"id":"webcompat@mozilla.com","locationUri":"resource://android/assets/extensions/webcompat/"} +06-02 16:38:45.607 D/GeckoViewConsole( 9365): onEvent GeckoView:WebExtension:List null +06-02 16:38:45.609 D/GeckoViewConsole( 9365): onEvent GeckoView:RegisterWebExtension {"allowContentMessaging":true,"id":"mozacBrowserIcons","locationUri":"resource://android/assets/extensions/browser-icons/"} +06-02 16:38:45.610 D/GeckoViewConsole( 9365): onEvent GeckoView:RegisterWebExtension {"allowContentMessaging":true,"id":"mozacBrowserAds","locationUri":"resource://android/assets/extensions/ads/"} +06-02 16:38:45.611 D/GeckoViewConsole( 9365): onEvent GeckoView:RegisterWebExtension {"allowContentMessaging":true,"id":"BrowserCookiesExtension","locationUri":"resource://android/assets/extensions/cookies/"} +06-02 16:38:45.638 E/adbd ( 4408): failed to connect to socket 'tcp:2829': Connection refused +06-02 16:38:45.730 I/ActivityManager( 1869): Fully drawn org.mozilla.fenix.debug/.App: +2s360ms +06-02 16:38:45.736 I/Gecko ( 9365): 1591130325735 Marionette INFO Listening on port 2829 +06-02 16:38:45.738 I/DefaultSupportedAddonsChecker( 9365): Register check for new supported add-ons +06-02 16:38:45.798 I/SupportedAddonsWorker( 9365): Trying to check for new supported add-ons +06-02 16:38:45.922 D/App ( 9365): Installed browser-icons extension +06-02 16:38:45.933 D/ ( 9365): HostConnection::get() New Host Connection established 0xce299840, tid 9393 +06-02 16:38:45.934 E/EGL_emulation( 9365): tid 9393: eglBindAPI(1259): error 0x300c (EGL_BAD_PARAMETER) +06-02 16:38:45.936 D/EGL_emulation( 9365): eglCreateContext: 0xae005040: maj 3 min 0 rcv 3 +06-02 16:38:45.938 D/EGL_emulation( 9365): eglMakeCurrent: 0xae005040: ver 3 0 (tinfo 0xe9131ba0) +06-02 16:38:45.976 E/GeckoConsole( 9365): [JavaScript Error: "NetworkError when attempting to fetch resource."] +06-02 16:38:45.976 E/GeckoConsole( 9365): get@resource://services-settings/RemoteSettingsClient.jsm:350:12 +06-02 16:38:46.028 D/glean/ConceptFetchHttpUploader( 9365): Ping successfully sent (200) +06-02 16:38:46.028 D/glean/PingUploadWorker( 9365): f2c83a47-027f-4c73-8ff2-9bc7dc060222 was deleted: true +06-02 16:38:46.031 I/WM-WorkerWrapper( 9365): Worker result SUCCESS for Work [ id=07b3427a-abbb-48f8-b3a5-aa6f1e13a994, tags={ mozilla.telemetry.glean.scheduler.PingUploadWorker, mozac_service_glean_ping_upload_worker } ] +06-02 16:38:46.112 D/BrowserIcons( 9365): Loaded icon (source = DOWNLOAD): https://www.youtube.com/ +06-02 16:38:46.163 D/BrowserIcons( 9365): Loaded icon (source = DOWNLOAD): https://www.wikipedia.org/ +06-02 16:38:46.216 W/GeckoConsole( 9365): [JavaScript Warning: "Security wrapper denied access to property "ONE_QUARTER" on privileged Javascript object. Support for exposing privileged objects to untrusted content via __exposedProps__ has been removed - use WebIDL bindings or Components.utils.cloneInto instead. Note that only the first denied property access from a given global object will be reported." {file: "moz-extension://d5e9c9f4-8e39-47cd-b0bd-15e32f8acf11/data/picture_in_picture_overrides.js" line: 26}] +06-02 16:38:46.227 W/SurfaceFlinger( 1728): couldn't log to binary event log: overflow. +06-02 16:38:46.234 D/mozac-webcompat( 9365): Installed WebCompat webextension: webcompat@mozilla.com +06-02 16:38:46.282 E/GeckoConsole( 9365): [JavaScript Error: "can't access property "startupData", state is undefined" {file: "resource://gre/modules/addons/XPIProvider.jsm" line: 3079}] +06-02 16:38:46.282 E/GeckoConsole( 9365): setStartupData@resource://gre/modules/addons/XPIProvider.jsm:3079:5 +06-02 16:38:46.282 E/GeckoConsole( 9365): saveStartupData@resource://gre/modules/Extension.jsm:2035:17 +06-02 16:38:46.282 E/GeckoConsole( 9365): _writePersistentListeners@resource://gre/modules/ExtensionCommon.jsm:2271:15 +06-02 16:38:46.282 E/GeckoConsole( 9365): savePersistentListener@resource://gre/modules/ExtensionCommon.jsm:2362:18 +06-02 16:38:46.282 E/GeckoConsole( 9365): addListener@resource://gre/modules/ExtensionCommon.jsm:2495:20 +06-02 16:38:46.282 E/GeckoConsole( 9365): addListener@resource://gre/modules/ExtensionCommon.jsm:2550:38 +06-02 16:38:46.282 E/GeckoConsole( 9365): recvAddListener@resource://gre/modules/ExtensionParent.jsm:1079:13 +06-02 16:38:46.294 I/chatty ( 9365): uid=10099(org.mozilla.fenix.debug) Gecko identical 24 lines +06-02 16:38:46.336 E/GeckoConsole( 9365): [JavaScript Error: "can't access property "startupData", state is undefined" {file: "resource://gre/modules/addons/XPIProvider.jsm" line: 3079}] +06-02 16:38:46.336 E/GeckoConsole( 9365): setStartupData@resource://gre/modules/addons/XPIProvider.jsm:3079:5 +06-02 16:38:46.336 E/GeckoConsole( 9365): saveStartupData@resource://gre/modules/Extension.jsm:2035:17 +06-02 16:38:46.336 E/GeckoConsole( 9365): _writePersistentListeners@resource://gre/modules/ExtensionCommon.jsm:2271:15 +06-02 16:38:46.336 E/GeckoConsole( 9365): savePersistentListener@resource://gre/modules/ExtensionCommon.jsm:2362:18 +06-02 16:38:46.336 E/GeckoConsole( 9365): addListener@resource://gre/modules/ExtensionCommon.jsm:2495:20 +06-02 16:38:46.336 E/GeckoConsole( 9365): addListener@resource://gre/modules/ExtensionCommon.jsm:2550:38 +06-02 16:38:46.336 E/GeckoConsole( 9365): recvAddListener@resource://gre/modules/ExtensionParent.jsm:1079:13 +06-02 16:38:46.342 I/PBSessionCacheImpl( 2402): Deleted sessionId[359508686912] from persistence. +06-02 16:38:46.345 W/SearchService( 2402): Abort, client detached. +06-02 16:38:46.471 D/WificondControl( 1869): Scan result ready event +06-02 16:38:46.796 I/WM-WorkerWrapper( 9365): Worker result SUCCESS for Work [ id=2fa60760-cfd5-4e94-b83f-a9793a0ebc54, tags={ mozilla.components.feature.addons.migration.DefaultSupportedAddonsChecker.periodicWork, mozilla.components.feature.addons.migration.SupportedAddonsWorker } ] +06-02 16:38:48.279 I/EventLogSendingHelper( 2402): Sending log events. +06-02 16:38:50.279 W/ctxmgr ( 2473): [AclManager]No 2 for (accnt=account#-517948760#, com.google.android.gms(10008):IndoorOutdoorProducer, vrsn=13280000, 0, 3pPkg = null , 3pMdlId = null , pid = 2473). Was: 3 for 57, account#-517948760# +06-02 16:38:50.338 I/FenixApplication( 9365): Kicking-off account manager... +06-02 16:38:50.338 I/FenixApplication( 9365): Running post-visual completeness tasks... +06-02 16:38:50.338 I/FenixApplication( 9365): Storage initialization... +06-02 16:38:50.341 I/PlacesHistoryStorage( 9365): Warming up places storage... +06-02 16:38:50.344 D/RustNativeSupport( 9365): findMegazordLibraryName(places, 0.59.0 +06-02 16:38:50.344 D/RustNativeSupport( 9365): lib in use: none +06-02 16:38:50.344 D/RustNativeSupport( 9365): lib configured: megazord +06-02 16:38:50.344 D/RustNativeSupport( 9365): lib version configured: 0.59.0 +06-02 16:38:50.344 D/RustNativeSupport( 9365): settled on megazord +06-02 16:38:50.344 I/FirefoxAccountStateMachine( 9365): Enabling/updating sync with a new SyncConfig: SyncConfig(supportedEngines=[mozilla.components.service.fxa.SyncEngine$History@49c28e, mozilla.components.service.fxa.SyncEngine$Bookmarks@834aaf, mozilla.components.service.fxa.SyncEngine$Passwords@b024ebc], syncPeriodInMinutes=240) +06-02 16:38:50.346 I/BgSyncManager( 9365): Periodic syncing enabled at a 240 interval +06-02 16:38:50.346 D/places_ffi( 9365): places_api_new +06-02 16:38:50.346 I/FirefoxAccountStateMachine( 9365): Sync is enabled +06-02 16:38:50.348 I/FenixApplication( 9365): 'Kicking-off account manager' took 10 ms +06-02 16:38:50.349 I/FirefoxAccountStateMachine( 9365): Processing event Init for state Start. Next state is Start +06-02 16:38:50.363 I/keystore( 1734): del USRPKEY_org.mozilla.fenix.debug 10099 +06-02 16:38:50.364 I/keystore( 1734): del USRCERT_org.mozilla.fenix.debug 10099 +06-02 16:38:50.364 I/keystore( 1734): del CACERT_org.mozilla.fenix.debug 10099 +06-02 16:38:50.367 D/places::db::schema( 9365): Creating schema +06-02 16:38:50.382 I/FirefoxAccountStateMachine( 9365): Ran 'Init' side-effects for state Start, got successive event AccountNotFound +06-02 16:38:50.382 I/FirefoxAccountStateMachine( 9365): Processing event AccountNotFound for state Start. Next state is NotAuthenticated +06-02 16:38:50.387 D/RustNativeSupport( 9365): findMegazordLibraryName(fxaclient, 0.59.0 +06-02 16:38:50.387 D/RustNativeSupport( 9365): lib in use: none +06-02 16:38:50.387 D/RustNativeSupport( 9365): lib configured: megazord +06-02 16:38:50.387 D/RustNativeSupport( 9365): lib version configured: 0.59.0 +06-02 16:38:50.387 D/RustNativeSupport( 9365): settled on megazord +06-02 16:38:50.389 D/fxaclient_ffi( 9365): fxa_new +06-02 16:38:50.391 W/FirefoxAccountStateMachine( 9365): Got invalid event Init for state NotAuthenticated. +06-02 16:38:50.415 D/sql_support::conn_ext( 9365): Transaction commited after 48.284882ms +06-02 16:38:50.415 D/places_ffi( 9365): places_connection_new +06-02 16:38:50.421 D/places_ffi( 9365): places_connection_new +06-02 16:38:50.425 I/PlacesHistoryStorage( 9365): 'Warming up places storage' took 84 ms +06-02 16:38:50.427 I/PlacesBookmarksStorage( 9365): Warming up places storage... +06-02 16:38:50.427 D/places_ffi( 9365): places_connection_new +06-02 16:38:50.431 I/PlacesBookmarksStorage( 9365): 'Warming up places storage' took 3 ms +06-02 16:38:50.450 I/keystore( 1734): 1 0 +06-02 16:38:50.461 I/SyncableLoginsStorage( 9365): Warming up storage... +06-02 16:38:50.479 D/RustNativeSupport( 9365): findMegazordLibraryName(logins, 0.59.0 +06-02 16:38:50.479 D/RustNativeSupport( 9365): lib in use: none +06-02 16:38:50.479 D/RustNativeSupport( 9365): lib configured: megazord +06-02 16:38:50.479 D/RustNativeSupport( 9365): lib version configured: 0.59.0 +06-02 16:38:50.479 D/RustNativeSupport( 9365): settled on megazord +06-02 16:38:50.484 D/logins_ffi( 9365): sync15_passwords_state_new +06-02 16:38:50.493 D/logins::schema( 9365): Creating schema +06-02 16:38:50.609 I/SyncableLoginsStorage( 9365): 'Warming up storage' took 147 ms +06-02 16:38:50.609 I/FenixApplication( 9365): 'Storage initialization' took 270 ms +06-02 16:38:51.401 D/EGL_emulation( 2002): eglMakeCurrent: 0xe3385900: ver 3 0 (tinfo 0xe33839b0) +06-02 16:38:53.250 I/EventLogSendingHelper( 2402): Sending log events. +06-02 16:38:53.453 E/memtrack( 1869): Couldn't load memtrack module +06-02 16:38:53.453 W/android.os.Debug( 1869): failed to get memory consumption info: -1 +06-02 16:38:55.290 W/ctxmgr ( 2473): [AclManager]No 2 for (accnt=account#-517948760#, com.google.android.gms(10008):IndoorOutdoorProducer, vrsn=13280000, 0, 3pPkg = null , 3pMdlId = null , pid = 2473). Was: 3 for 57, account#-517948760# +06-02 16:38:55.416 E/memtrack( 1869): Couldn't load memtrack module +06-02 16:38:55.417 W/android.os.Debug( 1869): failed to get memory consumption info: -1 +06-02 16:38:55.430 E/memtrack( 1869): Couldn't load memtrack module +06-02 16:38:55.430 W/android.os.Debug( 1869): failed to get memory consumption info: -1 +06-02 16:39:00.023 D/hwcomposer( 1897): hw_composer sent 60 syncs in 60s +06-02 16:39:00.309 W/ctxmgr ( 2473): [AclManager]No 2 for (accnt=account#-517948760#, com.google.android.gms(10008):IndoorOutdoorProducer, vrsn=13280000, 0, 3pPkg = null , 3pMdlId = null , pid = 2473). Was: 3 for 57, account#-517948760# diff --git a/python/mozperftest/mozperftest/tests/data/mozinfo.json b/python/mozperftest/mozperftest/tests/data/mozinfo.json new file mode 100644 index 0000000000..f8789c5123 --- /dev/null +++ b/python/mozperftest/mozperftest/tests/data/mozinfo.json @@ -0,0 +1 @@ +{"appname": "firefox", "artifact": false, "asan": false, "bin_suffix": "", "bits": 64, "buildapp": "browser", "buildtype_guess": "opt", "cc_type": "clang", "ccov": false, "crashreporter": true, "datareporting": true, "debug": false, "devedition": false, "early_beta_or_earlier": true, "healthreport": true, "mozconfig": "/Users/tarek/Dev/gecko/mozilla-central-opt/browser/config/mozconfig", "nightly_build": true, "normandy": true, "official": false, "os": "mac", "pgo": false, "platform_guess": "macosx64", "processor": "x86_64", "release_or_beta": false, "require_signing": false, "stylo": true, "sync": true, "telemetry": false, "tests_enabled": true, "toolkit": "cocoa", "topsrcdir": "/Users/tarek/Dev/gecko/mozilla-central-opt", "tsan": false, "ubsan": false, "updater": true}
\ No newline at end of file diff --git a/python/mozperftest/mozperftest/tests/data/multiple_transforms_error/test_transformer_1.py b/python/mozperftest/mozperftest/tests/data/multiple_transforms_error/test_transformer_1.py new file mode 100644 index 0000000000..2cfbc47e28 --- /dev/null +++ b/python/mozperftest/mozperftest/tests/data/multiple_transforms_error/test_transformer_1.py @@ -0,0 +1,6 @@ +class TestTransformer1(object): + def transform(self, data): + pass + + def merge(self, sde): + pass diff --git a/python/mozperftest/mozperftest/tests/data/multiple_transforms_error/test_transformer_1_copy.py b/python/mozperftest/mozperftest/tests/data/multiple_transforms_error/test_transformer_1_copy.py new file mode 100644 index 0000000000..2cfbc47e28 --- /dev/null +++ b/python/mozperftest/mozperftest/tests/data/multiple_transforms_error/test_transformer_1_copy.py @@ -0,0 +1,6 @@ +class TestTransformer1(object): + def transform(self, data): + pass + + def merge(self, sde): + pass diff --git a/python/mozperftest/mozperftest/tests/data/perftestetl_plugin/test_transformer_perftestetl_plugin_1.py b/python/mozperftest/mozperftest/tests/data/perftestetl_plugin/test_transformer_perftestetl_plugin_1.py new file mode 100644 index 0000000000..2cfbc47e28 --- /dev/null +++ b/python/mozperftest/mozperftest/tests/data/perftestetl_plugin/test_transformer_perftestetl_plugin_1.py @@ -0,0 +1,6 @@ +class TestTransformer1(object): + def transform(self, data): + pass + + def merge(self, sde): + pass diff --git a/python/mozperftest/mozperftest/tests/data/perftestetl_plugin/test_transformer_perftestetl_plugin_2.py b/python/mozperftest/mozperftest/tests/data/perftestetl_plugin/test_transformer_perftestetl_plugin_2.py new file mode 100644 index 0000000000..f681095b20 --- /dev/null +++ b/python/mozperftest/mozperftest/tests/data/perftestetl_plugin/test_transformer_perftestetl_plugin_2.py @@ -0,0 +1,6 @@ +class TestTransformer2(object): + def transform(self, data): + pass + + def merge(self, sde): + pass diff --git a/python/mozperftest/mozperftest/tests/data/samples/head.js b/python/mozperftest/mozperftest/tests/data/samples/head.js new file mode 100644 index 0000000000..e29b227f93 --- /dev/null +++ b/python/mozperftest/mozperftest/tests/data/samples/head.js @@ -0,0 +1,7 @@ +/* Any copyright is dedicated to the Public Domain. + http://creativecommons.org/publicdomain/zero/1.0/ */ + +/* exported require */ + +"use strict"; + diff --git a/python/mozperftest/mozperftest/tests/data/samples/perftest_example.js b/python/mozperftest/mozperftest/tests/data/samples/perftest_example.js new file mode 100644 index 0000000000..52162dedf1 --- /dev/null +++ b/python/mozperftest/mozperftest/tests/data/samples/perftest_example.js @@ -0,0 +1,46 @@ +// This Source Code Form is subject to the terms of the Mozilla Public +// License, v. 2.0. If a copy of the MPL was not distributed with this +// file, You can obtain one at http://mozilla.org/MPL/2.0/. +/* eslint-env node */ +"use strict"; + +var someVar; + +someVar = 2; + +async function setUp(context) { + context.log.info("setUp example!"); +} + +async function test(context, commands) { + context.log.info("Test with setUp/tearDown example!"); + await commands.measure.start("https://www.sitespeed.io/"); + await commands.measure.start("https://www.mozilla.org/en-US/"); +} + +async function tearDown(context) { + context.log.info("tearDown example!"); +} + +module.noexport = {}; + +module.exports = { + setUp, + tearDown, + test, + owner: "Performance Testing Team", + name: "Example", + description: "The description of the example test.", + longDescription: ` + This is a longer description of the test perhaps including information + about how it should be run locally or links to relevant information. + `, + supportedBrowsers: ["Fenix nightly", "Geckoview_example", "Fennec", "Firefox"], + supportedPlatforms: ["Android", "Desktop"], + options: { + default: {perfherder: true, verbose: false}, + linux: {perfherder_metrics: [{name:"speed",unit:"bps_lin"}], verbose: true}, + mac: {perfherder_metrics: [{name:"speed",unit:"bps_mac"}], verbose: true}, + win: {perfherder_metrics: [{name:"speed",unit:"bps_win"}], verbose: true} + } +}; diff --git a/python/mozperftest/mozperftest/tests/data/samples/test_mochitest.html b/python/mozperftest/mozperftest/tests/data/samples/test_mochitest.html new file mode 100644 index 0000000000..4751b41470 --- /dev/null +++ b/python/mozperftest/mozperftest/tests/data/samples/test_mochitest.html @@ -0,0 +1,33 @@ +<!DOCTYPE HTML> +<html> +<head> + <title>Sample mochitest performance test</title> +</head> +<script src="/tests/SimpleTest/SimpleTest.js"></script> +<script src="utils.js"></script> +<script> + + // Used for testing ScriptInfo HTML Parsing in mozperftest + var perfMetadata = { + owner: "Performance Team", + name: "Test test", + description: "N/A", + options: { + default: { + perfherder: true, + perfherder_metrics: [ + { name: "Registration", unit: "ms" }, + ], + verbose: true, + manifest: "mochitest-common.ini", + manifest_flavor: "plain", + }, + }, + }; + + add_task(async () => {}); + +</script> +<body> +</body> +</html> diff --git a/python/mozperftest/mozperftest/tests/data/samples/test_mochitest_multiscript.html b/python/mozperftest/mozperftest/tests/data/samples/test_mochitest_multiscript.html new file mode 100644 index 0000000000..521ccecf76 --- /dev/null +++ b/python/mozperftest/mozperftest/tests/data/samples/test_mochitest_multiscript.html @@ -0,0 +1,36 @@ +<!DOCTYPE HTML> +<html> +<head> + <title>Sample mochitest performance test - multiscript</title> +</head> +<script src="/tests/SimpleTest/SimpleTest.js"></script> +<script src="utils.js"></script> +<script> + + // Used for testing ScriptInfo HTML Parsing in mozperftest + add_task(async () => {}); + +</script> +<script> + + var perfMetadata = { + owner: "Performance Team", + name: "Test test", + description: "N/A", + options: { + default: { + perfherder: true, + perfherder_metrics: [ + { name: "Registration", unit: "ms" }, + ], + verbose: true, + manifest: "mochitest-common.ini", + manifest_flavor: "plain", + }, + }, + }; + +</script> +<body> +</body> +</html> diff --git a/python/mozperftest/mozperftest/tests/data/samples/test_perftest_WPT_init_file.js b/python/mozperftest/mozperftest/tests/data/samples/test_perftest_WPT_init_file.js new file mode 100644 index 0000000000..eee6f61234 --- /dev/null +++ b/python/mozperftest/mozperftest/tests/data/samples/test_perftest_WPT_init_file.js @@ -0,0 +1,113 @@ +// This Source Code Form is subject to the terms of the Mozilla Public +// License, v. 2.0. If a copy of the MPL was not distributed with this +// file, You can obtain one at http://mozilla.org/MPL/2.0/. +/* eslint-env node */ +"use strict"; +function setUp() {} + +function tearDown() {} + +function test() {} + +module.exports = { + setUp, + tearDown, + test, + owner: "Performance Testing Team", + name: "webpagetest", + description: + "Run webpagetest performance pageload tests on Firefox against Alexa top 50 websites", + longDescription: `This mozperftest gets webpagetest to run pageload tests on Firefox against the 50 most popular + websites and provide data. The full list of data returned from webpagetest: firstContentfulPaint, + timeToContentfulPaint, visualComplete90, firstPaint, visualComplete99, visualComplete, SpeedIndex, bytesIn, bytesOut, + TTFB, fullyLoadedCPUms, fullyLoadedCPUpct, domElements, domContentLoadedEventStart, domContentLoadedEventEnd, + loadEventStart, loadEventEnd`, + options: { + test_parameters: { + location: "ec2-us-east-1", + browser: "Firefox", + connection: "Cable", + timeout_limit: 21600, + wait_between_requests: 5, + statistics: ["average", "median", "standardDeviation"], + label: "", + runs: 3, + fvonly: 0, + private: 0, + web10: 0, + script: "", + block: "", + video: 1, + tcpdump: 0, + noimages: 0, + keepua: 1, + uastring: "", + htmlbody: 0, + custom: "", + ignoreSSL: 0, + appendua: "", + injectScript: "", + disableAVIF: 0, + disableWEBP: 0, + disableJXL: 0, + }, + test_list: [ + "google.com", + "youtube.com", + "facebook.com", + "qq.com", + "baidu.com", + "sohu.com", + "360.cn", + "jd.com", + "amazon.com", + "yahoo.com", + "zoom.us", + "sina.com.cn", + "live.com", + "reddit.com", + "netflix.com", + "microsoft.com", + "instagram.com", + "panda.tv", + "google.com.hk", + "csdn.net", + "bing.com", + "vk.com", + "yahoo.co.jp", + "twitter.com", + "naver.com", + "canva.com", + "ebay.com", + "force.com", + "amazon.in", + "adobe.com", + "aliexpress.com", + "linkedin.com", + "tianya.cn", + "yy.com", + "huanqiu.com", + "amazon.co.jp", + "okezone.com", + ], + browser_metrics: [ + "firstContentfulPaint", + "timeToContentfulPaint", + "visualComplete90", + "firstPaint", + "visualComplete99", + "visualComplete", + "SpeedIndex", + "bytesIn", + "bytesOut", + "TTFB", + "fullyLoadedCPUms", + "fullyLoadedCPUpct", + "domElements", + "domContentLoadedEventStart", + "domContentLoadedEventEnd", + "loadEventStart", + "loadEventEnd", + ], + }, +}; diff --git a/python/mozperftest/mozperftest/tests/data/samples/test_perftest_android_startup.js b/python/mozperftest/mozperftest/tests/data/samples/test_perftest_android_startup.js new file mode 100644 index 0000000000..f704bf67a0 --- /dev/null +++ b/python/mozperftest/mozperftest/tests/data/samples/test_perftest_android_startup.js @@ -0,0 +1,34 @@ +// This Source Code Form is subject to the terms of the Mozilla Public +// License, v. 2.0. If a copy of the MPL was not distributed with this +// file, You can obtain one at http://mozilla.org/MPL/2.0/. +/* eslint-env node */ +"use strict"; + +async function test(context, commands) {} + +module.exports = { + test, + owner: "Performance Team", + name: "android-startup", + description: "Measures cold process view time", + longDescription: ` + This test launches the appropriate android app, simulating a opening a link through VIEW intent + workflow. The application is launched with the intent action + android.intent.action.VIEW loading a trivially simple website. The reported + metric is the time from process start to navigationStart, reported as processLaunchToNavStart + `, + usage: ` + ./mach perftest --flavor mobile-browser --AndroidStartUp testing/performance/perftest_android_startup.js + --browsertime-cycles=0 --AndroidStartUp-test-name=cold_view_nav_start --perfherder --hooks + testing/performance/hooks_android_startup.py --AndroidStartUp-product=fenix + --AndroidStartUp-release-channel=nightly + `, + options: { + test_parameters: { + single_date: null, // Dates in YYYY.MM.DD format + date_range: [], // 2 Dates in YYYY.MM.DD format the first and last date(inclusive) + startup_cache: true, + test_cycles: 50, + }, + }, +}; diff --git a/python/mozperftest/mozperftest/tests/data/samples/test_xpcshell.js b/python/mozperftest/mozperftest/tests/data/samples/test_xpcshell.js new file mode 100644 index 0000000000..5796f23a64 --- /dev/null +++ b/python/mozperftest/mozperftest/tests/data/samples/test_xpcshell.js @@ -0,0 +1,39 @@ +/* This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ + +"use strict"; + + +add_task(async function dummy_test() { + /* + * Do some test here, get some metrics + */ + var metrics = {"metrics1": 1, "metrics2": 2}; + info("perfMetrics", metrics); + info("perfMetrics", {"metrics3": 3}); + await true; +}); + +var anotherVar = { + something: "cool" +}; + +var perfMetadata = { + owner: "Performance Testing Team", + name: "Example", + description: "The description of the example test.", + longDescription: ` + This is a longer description of the test perhaps including information + about how it should be run locally or links to relevant information. + `, + supportedBrowsers: ["Firefox"], + supportedPlatforms: ["Desktop"], + options: { + default: {perfherder: true}, + linux: {perfherder_metrics: [{name:"speed",unit: "bps_lin"}]}, + mac: {perfherder_metrics: [{name:"speed",unit: "bps_mac"}]}, + win: {perfherder_metrics: [{name:"speed",unit: "bps_win"}]}, + wat: {}, + } +}; diff --git a/python/mozperftest/mozperftest/tests/data/samples/test_xpcshell_flavor2.js b/python/mozperftest/mozperftest/tests/data/samples/test_xpcshell_flavor2.js new file mode 100644 index 0000000000..3223f6c603 --- /dev/null +++ b/python/mozperftest/mozperftest/tests/data/samples/test_xpcshell_flavor2.js @@ -0,0 +1,35 @@ +/* This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ + +"use strict"; + +var anotherVar = { + something: "cool" +}; + +var perfMetadata = { + owner: "Performance Testing Team", + name: "Example", + description: "The description of the example test.", + longDescription: ` + This is a longer description of the test perhaps including information + about how it should be run locally or links to relevant information. + `, + supportedBrowsers: ["Firefox"], + supportedPlatforms: ["Desktop"], + options: { + default: {perfherder: true}, + linux: {perfherder_metrics: [{name:"speed",unit: "bps_lin"}]}, + mac: {perfherder_metrics: [{name:"speed",unit: "bps_mac"}]}, + win: {perfherder_metrics: [{name:"speed",unit: "bps_win"}]} + } +}; + +function run_next_test() { + // do something +} + +function run_test() { + // do something +} diff --git a/python/mozperftest/mozperftest/tests/data/samples/xpcshell.ini b/python/mozperftest/mozperftest/tests/data/samples/xpcshell.ini new file mode 100644 index 0000000000..47c62f7d15 --- /dev/null +++ b/python/mozperftest/mozperftest/tests/data/samples/xpcshell.ini @@ -0,0 +1,5 @@ +[DEFAULT] +head = head.js +firefox-appdir = browser + +[test_xpcshell.js] diff --git a/python/mozperftest/mozperftest/tests/data/xpcshell b/python/mozperftest/mozperftest/tests/data/xpcshell new file mode 100644 index 0000000000..792d600548 --- /dev/null +++ b/python/mozperftest/mozperftest/tests/data/xpcshell @@ -0,0 +1 @@ +# diff --git a/python/mozperftest/mozperftest/tests/fetched_artifact.zip b/python/mozperftest/mozperftest/tests/fetched_artifact.zip Binary files differnew file mode 100644 index 0000000000..3f6431896b --- /dev/null +++ b/python/mozperftest/mozperftest/tests/fetched_artifact.zip diff --git a/python/mozperftest/mozperftest/tests/support.py b/python/mozperftest/mozperftest/tests/support.py new file mode 100644 index 0000000000..ba202ad380 --- /dev/null +++ b/python/mozperftest/mozperftest/tests/support.py @@ -0,0 +1,122 @@ +import contextlib +import os +import shutil +import subprocess +import sys +import tempfile +from pathlib import Path +from unittest.mock import MagicMock + +from mozperftest import utils +from mozperftest.environment import MachEnvironment +from mozperftest.hooks import Hooks +from mozperftest.metadata import Metadata +from mozperftest.script import ScriptInfo + +HERE = Path(__file__).parent +ROOT = Path(HERE, "..", "..", "..", "..").resolve() +EXAMPLE_TESTS_DIR = os.path.join(HERE, "data", "samples") +EXAMPLE_TEST = os.path.join(EXAMPLE_TESTS_DIR, "perftest_example.js") +EXAMPLE_XPCSHELL_TEST = Path(EXAMPLE_TESTS_DIR, "test_xpcshell.js") +EXAMPLE_XPCSHELL_TEST2 = Path(EXAMPLE_TESTS_DIR, "test_xpcshell_flavor2.js") +EXAMPLE_MOCHITEST_TEST = Path(EXAMPLE_TESTS_DIR, "test_mochitest.html") +EXAMPLE_MOCHITEST_TEST2 = Path(EXAMPLE_TESTS_DIR, "test_mochitest_multiscript.html") +EXAMPLE_WPT_TEST = Path(EXAMPLE_TESTS_DIR, "test_perftest_WPT_init_file.js") +BT_DATA = Path(HERE, "data", "browsertime-results", "browsertime.json") +BT_DATA_VIDEO = Path(HERE, "data", "browsertime-results-video", "browsertime.json") +DMG = Path(HERE, "data", "firefox.dmg") +MOZINFO = Path(HERE, "data", "mozinfo.json") +EXAMPLE_ANDROID_STARTUP_TEST = Path( + EXAMPLE_TESTS_DIR, "test_perftest_android_startup.js" +) + + +@contextlib.contextmanager +def temp_file(name="temp", content=None): + tempdir = tempfile.mkdtemp() + path = os.path.join(tempdir, name) + if content is not None: + with open(path, "w") as f: + f.write(content) + try: + yield path + finally: + shutil.rmtree(tempdir) + + +def get_running_env(**kwargs): + from mozbuild.base import MozbuildObject + + config = MozbuildObject.from_environment() + mach_cmd = MagicMock() + + def get_binary_path(*args): + return "" + + def run_pip(args): + subprocess.check_call( + [sys.executable, "-m", "pip"] + args, + stderr=subprocess.STDOUT, + cwd=config.topsrcdir, + universal_newlines=True, + ) + + mach_cmd.get_binary_path = get_binary_path + mach_cmd.topsrcdir = config.topsrcdir + mach_cmd.topobjdir = config.topobjdir + mach_cmd.distdir = config.distdir + mach_cmd.bindir = config.bindir + mach_cmd._mach_context = MagicMock() + mach_cmd._mach_context.state_dir = tempfile.mkdtemp() + mach_cmd.run_process.return_value = 0 + mach_cmd.virtualenv_manager = MagicMock() + mach_cmd.virtualenv_manager.python_path = sys.executable + mach_cmd.virtualenv_manager.bin_path = Path(sys.executable).parent + mach_cmd.virtualenv_manager._run_pip = run_pip + + mach_args = { + "flavor": "desktop-browser", + "test_objects": None, + "resolve_tests": True, + "browsertime-clobber": False, + "browsertime-install-url": None, + } + mach_args.update(kwargs) + hooks = Hooks(mach_cmd, mach_args.pop("hooks", None)) + tests = mach_args.get("tests", []) + if len(tests) > 0: + script = ScriptInfo(tests[0]) + else: + script = None + env = MachEnvironment(mach_cmd, hooks=hooks, **mach_args) + metadata = Metadata(mach_cmd, env, "desktop-browser", script) + return mach_cmd, metadata, env + + +def requests_content(chunks=None): + if chunks is None: + chunks = [b"some ", b"content"] + + def _content(*args, **kw): + class Resp: + def iter_content(self, **kw): + for chunk in chunks: + yield chunk + + return Resp() + + return _content + + +@contextlib.contextmanager +def running_on_try(on_try=True): + old = utils.ON_TRY + utils.ON_TRY = on_try + try: + if on_try: + with utils.temporary_env(MOZ_AUTOMATION="1"): + yield + else: + yield + finally: + utils.ON_TRY = old diff --git a/python/mozperftest/mozperftest/tests/test_android.py b/python/mozperftest/mozperftest/tests/test_android.py new file mode 100644 index 0000000000..484bdbf92e --- /dev/null +++ b/python/mozperftest/mozperftest/tests/test_android.py @@ -0,0 +1,331 @@ +#!/usr/bin/env python +import pathlib +from unittest import mock + +import mozunit +import pytest + +from mozperftest.environment import SYSTEM +from mozperftest.system.android import DeviceError +from mozperftest.system.android_perf_tuner import PerformanceTuner +from mozperftest.tests.support import get_running_env, requests_content, temp_file +from mozperftest.utils import silence + + +class FakeDevice: + def __init__(self, **args): + self.apps = [] + self._logger = mock.MagicMock() + self._have_su = True + self._have_android_su = True + self._have_root_shell = True + self.is_rooted = True + + def clear_logcat(self, *args, **kwargs): + return True + + def shell_output(self, *args, **kwargs): + return "A Fake Device" + + def shell_bool(self, *args, **kwargs): + return True + + def uninstall_app(self, apk_name): + return True + + def install_app(self, apk, replace=True): + if apk not in self.apps: + self.apps.append(apk) + + def is_app_installed(self, app_name): + return True + + +@mock.patch("mozperftest.system.android.ADBLoggedDevice", new=FakeDevice) +def test_android(): + args = { + "flavor": "mobile-browser", + "android-install-apk": ["this.apk"], + "android": True, + "android-timeout": 30, + "android-capture-adb": "stdout", + "android-app-name": "org.mozilla.fenix", + } + + mach_cmd, metadata, env = get_running_env(**args) + system = env.layers[SYSTEM] + with system as android, silence(system): + android(metadata) + + +@mock.patch("mozperftest.system.android.ADBLoggedDevice") +def test_android_perf_tuning_rooted(device): + # Check to make sure that performance tuning runs + # on rooted devices correctly + device._have_su = True + device._have_android_su = True + device._have_root_shell = True + device.is_rooted = True + with mock.patch( + "mozperftest.system.android_perf_tuner.PerformanceTuner.set_kernel_performance_parameters" + ) as mockfunc: + tuner = PerformanceTuner(device) + tuner.tune_performance() + mockfunc.assert_called() + + +@mock.patch("mozperftest.system.android.ADBLoggedDevice") +def test_android_perf_tuning_nonrooted(device): + # Check to make sure that performance tuning runs + # on non-rooted devices correctly + device._have_su = False + device._have_android_su = False + device._have_root_shell = False + device.is_rooted = False + with mock.patch( + "mozperftest.system.android_perf_tuner.PerformanceTuner.set_kernel_performance_parameters" + ) as mockfunc: + tuner = PerformanceTuner(device) + tuner.tune_performance() + mockfunc.assert_not_called() + + +class Device: + def __init__(self, name, rooted=True): + self.device_name = name + self.is_rooted = rooted + self.call_counts = 0 + + @property + def _logger(self): + return self + + def noop(self, *args, **kw): + pass + + debug = error = info = clear_logcat = noop + + def shell_bool(self, *args, **kw): + self.call_counts += 1 + return True + + def shell_output(self, *args, **kw): + self.call_counts += 1 + return self.device_name + + +def test_android_perf_tuning_all_calls(): + # Check without mocking PerformanceTuner functions + for name in ["?"]: + device = Device(name) + tuner = PerformanceTuner(device) + tuner.tune_performance() + assert device.call_counts > 1 + + +@mock.patch("mozperftest.system.android_perf_tuner.PerformanceTuner") +@mock.patch("mozperftest.system.android.ADBLoggedDevice") +def test_android_with_perftuning(device, tuner): + args = { + "flavor": "mobile-browser", + "android-install-apk": ["this.apk"], + "android": True, + "android-timeout": 30, + "android-capture-adb": "stdout", + "android-app-name": "org.mozilla.fenix", + "android-perf-tuning": True, + } + tuner.return_value = tuner + + mach_cmd, metadata, env = get_running_env(**args) + system = env.layers[SYSTEM] + with system as android, silence(system): + android(metadata) + + # Make sure the tuner was actually called + tuner.tune_performance.assert_called() + + +def test_android_failure(): + # no patching so it'll try for real and fail + args = { + "flavor": "mobile-browser", + "android-install-apk": ["this"], + "android": True, + "android-timeout": 120, + "android-app-name": "org.mozilla.fenix", + "android-capture-adb": "stdout", + } + + mach_cmd, metadata, env = get_running_env(**args) + system = env.layers[SYSTEM] + with system as android, silence(system), pytest.raises(DeviceError): + android(metadata) + + +@mock.patch( + "mozperftest.system.android.AndroidDevice.custom_apk_exists", new=lambda x: False +) +@mock.patch("mozperftest.utils.requests.get", new=requests_content()) +@mock.patch("mozperftest.system.android.ADBLoggedDevice") +def test_android_apk_alias(device): + args = { + "flavor": "mobile-browser", + "android-install-apk": ["fenix_nightly_armeabi_v7a"], + "android": True, + "android-app-name": "org.mozilla.fenix", + "android-capture-adb": "stdout", + } + + mach_cmd, metadata, env = get_running_env(**args) + system = env.layers[SYSTEM] + with system as android, silence(system): + android(metadata) + + assert device.mock_calls[1][1][0] == "org.mozilla.fenix" + assert device.mock_calls[2][1][0].endswith("target.apk") + + +@mock.patch("mozperftest.utils.requests.get", new=requests_content()) +@mock.patch("mozperftest.system.android.ADBLoggedDevice") +def test_android_timeout(device): + args = { + "flavor": "mobile-browser", + "android-install-apk": ["gve_nightly_api16"], + "android": True, + "android-timeout": 60, + "android-app-name": "org.mozilla.geckoview_example", + "android-capture-adb": "stdout", + } + + mach_cmd, metadata, env = get_running_env(**args) + system = env.layers[SYSTEM] + with system as android, silence(system): + android(metadata) + options = device.mock_calls[0][-1] + assert options["timeout"] == 60 + + +@mock.patch("mozperftest.utils.requests.get", new=requests_content()) +def test_android_log_adb(): + with temp_file() as log_adb: + args = { + "flavor": "mobile-browser", + "android-install-apk": ["gve_nightly_api16"], + "android": True, + "android-timeout": 60, + "android-app-name": "org.mozilla.geckoview_example", + "android-capture-adb": log_adb, + } + + mach_cmd, metadata, env = get_running_env(**args) + system = env.layers[SYSTEM] + with system as android, silence(system), pytest.raises(DeviceError): + android(metadata) + with open(log_adb) as f: + assert "DEBUG ADBLoggedDevice" in f.read() + + +@mock.patch("mozperftest.utils.requests.get", new=requests_content()) +@mock.patch("mozperftest.system.android.ADBLoggedDevice") +def test_android_log_cat(device): + with temp_file() as log_cat: + args = { + "flavor": "mobile-browser", + "android-install-apk": ["gve_nightly_api16"], + "android": True, + "android-timeout": 60, + "android-app-name": "org.mozilla.geckoview_example", + "android-capture-logcat": log_cat, + "android-clear-logcat": True, + "android-capture-adb": "stdout", + } + + mach_cmd, metadata, env = get_running_env(**args) + system = env.layers[SYSTEM] + andro = system.layers[1] + + with system as layer, silence(system): + andro.device = device + andro.device.get_logcat = mock.Mock(result_value=[]) + layer(metadata) + + andro.device.get_logcat.assert_called() + andro.device.clear_logcat.assert_called() + + +@mock.patch("mozperftest.system.android.AndroidDevice.setup", new=mock.MagicMock) +@mock.patch("mozperftest.system.android.Path") +@mock.patch("mozperftest.system.android.ADBLoggedDevice", new=FakeDevice) +def test_android_custom_apk(mozperftest_android_path): + args = { + "flavor": "mobile-browser", + "android": True, + } + + with temp_file(name="user_upload.apk", content="") as sample_apk: + sample_apk = pathlib.Path(sample_apk) + mozperftest_android_path.return_value = sample_apk + + mach_cmd, metadata, env = get_running_env(**args) + system = env.layers[SYSTEM] + android = system.layers[1] + + with system as _, silence(system): + assert android._custom_apk_path is None + assert android.custom_apk_exists() + assert android.custom_apk_path == sample_apk + + mozperftest_android_path.assert_called_once() + + +@mock.patch("mozperftest.system.android.AndroidDevice.setup", new=mock.MagicMock) +@mock.patch("mozperftest.system.android.Path.exists") +@mock.patch("mozperftest.system.android.ADBLoggedDevice", new=FakeDevice) +def test_android_custom_apk_nonexistent(path_exists): + args = { + "flavor": "mobile-browser", + "android": True, + } + + path_exists.return_value = False + + mach_cmd, metadata, env = get_running_env(**args) + system = env.layers[SYSTEM] + android = system.layers[1] + + with system as _, silence(system): + assert android._custom_apk_path is None + assert not android.custom_apk_exists() + assert android.custom_apk_path is None + + path_exists.assert_called() + + +@mock.patch("mozperftest.system.android.Path") +@mock.patch("mozperftest.system.android.ADBLoggedDevice", new=FakeDevice) +def test_android_setup_custom_apk(mozperftest_android_path): + args = { + "flavor": "mobile-browser", + "android": True, + } + + with temp_file(name="user_upload.apk", content="") as sample_apk: + sample_apk = pathlib.Path(sample_apk) + mozperftest_android_path.return_value = sample_apk + + mach_cmd, metadata, env = get_running_env(**args) + system = env.layers[SYSTEM] + android = system.layers[1] + + with system as _, silence(system): + # The custom apk should be found immediately, and it + # should replace any --android-install-apk settings + assert android._custom_apk_path == sample_apk + assert env.get_arg("android-install-apk") == [sample_apk] + + mozperftest_android_path.assert_called_once() + + +if __name__ == "__main__": + mozunit.main() diff --git a/python/mozperftest/mozperftest/tests/test_android_startup.py b/python/mozperftest/mozperftest/tests/test_android_startup.py new file mode 100644 index 0000000000..9620a7d901 --- /dev/null +++ b/python/mozperftest/mozperftest/tests/test_android_startup.py @@ -0,0 +1,285 @@ +import copy +import json +import pathlib +import random +import time +from datetime import date +from unittest import mock + +import mozunit +import pytest +import requests + +from mozperftest.system import android_startup +from mozperftest.system.android_startup import ( + AndroidStartUpInstallError, + AndroidStartUpMatchingError, + AndroidStartUpUnknownTestError, +) +from mozperftest.tests.support import ( + EXAMPLE_ANDROID_STARTUP_TEST, + get_running_env, + temp_file, +) + +SAMPLE_APK_METADATA = { + "name": "fenix_nightly_armeabi-v7a_2022_09_27.apk", + "date": date(2022, 9, 27), + "commit": "", + "architecture": "armeabi-v7a", + "product": "fenix", +} + +ARGS = { + "AndroidStartUp-test-name": "cold_view_nav_start", + "AndroidStartUp-product": "fenix", + "AndroidStartUp-release-channel": "nightly", + "apk_metadata": SAMPLE_APK_METADATA, + "test-date": "2023.01.01", +} + + +class FakeDevice: + def __init__(self, **kwargs): + self.name = "" + pass + + def uninstall_app(self, app): + pass + + def install_app(self, app_name): + return app_name + + def is_app_installed(self, name): + self.name = name + if name == "is_app_installed_fail": + return False + else: + return True + + def stop_application(self, package_id): + pass + + def shell(self, cmd): + pass + + def shell_output(self, cmd): + if cmd == "logcat -d": + return ( + "ActivityManager: Start proc 23943:org.mozilla.fenix/u0a283 \n" + "ActivityManager: Start proc 23942:org.mozilla.fenix/u0a283 \n" + "11-23 14:10:13.391 13135 13135 I " + "GeckoSession: handleMessage GeckoView:PageStart uri=\n" + "11-23 14:10:13.391 13135 13135 I " + "GeckoSession: handleMessage GeckoView:PageStart uri=" + ) + if self.name == "name_for_intent_not_2_lines": + return "3 \n lines \n not 2" + elif self.name == "name_for_multiple_Totaltime_strings": + return "2 lines but \n no TotalTime" + elif self.name == "name_for_single_total_time": + return "TotalTime: 123 \n test" + + +def setup_metadata(metadata, **kwargs): + new_metadata = copy.copy(metadata) + for key, value in kwargs.items(): + new_metadata[key] = value + return new_metadata + + +def running_env(**kw): + return get_running_env(flavor="mobile-browser", **kw) + + +def init_mocked_request(status_code, **kwargs): + mock_data = {} + for key, value in kwargs.items(): + mock_data["data"][key] = value + mock_request = requests.Response() + mock_request.status_code = status_code + mock_request._content = json.dumps(mock_data).encode("utf-8") + return mock_request + + +@mock.patch( + "mozperftest.system.android.AndroidDevice.custom_apk_exists", new=lambda x: False +) +@mock.patch( + "mozdevice.ADBDevice", + new=FakeDevice, +) +@mock.patch("requests.get", return_value=init_mocked_request(200)) +@mock.patch("time.sleep", return_value=time.sleep(0)) +def test_install_of_nightly_failed(*mocked): + SAMPLE_APK_METADATA["name"] = "is_app_installed_fail" + ARGS["apk_metadata"] = SAMPLE_APK_METADATA + mach_cmd, metadata, env = running_env( + tests=[str(EXAMPLE_ANDROID_STARTUP_TEST)], **ARGS + ) + test = android_startup.AndroidStartUp(env, mach_cmd) + with pytest.raises(AndroidStartUpInstallError): + test.run(metadata) + SAMPLE_APK_METADATA["name"] = "fenix_nightly_armeabi-v7a_2022_09_27.apk" + ARGS["apk_metadata"] = SAMPLE_APK_METADATA + pass + + +@mock.patch( + "mozdevice.ADBDevice", + new=FakeDevice, +) +@mock.patch("time.sleep", return_value=time.sleep(0)) +def test_invalid_test_name(*mocked): + ARGS["AndroidStartUp-test-name"] = "BAD TEST NAME" + mach_cmd, metadata, env = running_env( + tests=[str(EXAMPLE_ANDROID_STARTUP_TEST)], **ARGS + ) + test = android_startup.AndroidStartUp(env, mach_cmd) + with pytest.raises(AndroidStartUpUnknownTestError): + test.run(metadata) + ARGS["AndroidStartUp-test-name"] = "cold_main_first_frame" + pass + + +@mock.patch( + "mozperftest.system.android.AndroidDevice.custom_apk_exists", new=lambda x: False +) +@mock.patch( + "mozdevice.ADBDevice", + new=FakeDevice, +) +@mock.patch("time.sleep", return_value=time.sleep(0)) +def test_multiple_matching_lines(*mocked): + SAMPLE_APK_METADATA["name"] = "name_for_intent_not_2_lines" + ARGS["apk_metadata"] = SAMPLE_APK_METADATA + mach_cmd, metadata, env = running_env( + tests=[str(EXAMPLE_ANDROID_STARTUP_TEST)], **ARGS + ) + test = android_startup.AndroidStartUp(env, mach_cmd) + with pytest.raises(AndroidStartUpMatchingError): + test.run(metadata) + SAMPLE_APK_METADATA["name"] = "fenix_nightly_armeabi-v7a_2022_09_27.apk" + ARGS["apk_metadata"] = SAMPLE_APK_METADATA + pass + + +@mock.patch( + "mozperftest.system.android.AndroidDevice.custom_apk_exists", new=lambda x: False +) +@mock.patch( + "mozdevice.ADBDevice", + new=FakeDevice, +) +@mock.patch("time.sleep", return_value=time.sleep(0)) +def test_multiple_total_time_prefix(*mocked): + SAMPLE_APK_METADATA["name"] = "name_for_multiple_Totaltime_strings" + ARGS["apk_metadata"] = SAMPLE_APK_METADATA + mach_cmd, metadata, env = running_env( + tests=[str(EXAMPLE_ANDROID_STARTUP_TEST)], **ARGS + ) + test = android_startup.AndroidStartUp(env, mach_cmd) + with pytest.raises(AndroidStartUpMatchingError): + test.run(metadata) + SAMPLE_APK_METADATA["name"] = "fenix_nightly_armeabi-v7a_2022_09_27.apk" + ARGS["apk_metadata"] = SAMPLE_APK_METADATA + pass + + +@mock.patch( + "mozperftest.system.android.AndroidDevice.custom_apk_exists", new=lambda x: False +) +@mock.patch( + "mozdevice.ADBDevice", + new=FakeDevice, +) +@mock.patch("time.sleep", return_value=time.sleep(0)) +def test_multiple_start_proc_lines(*mocked): + SAMPLE_APK_METADATA["name"] = "name_for_multiple_Totaltime_strings" + ARGS["apk_metadata"] = SAMPLE_APK_METADATA + ARGS["apk_metadata"] = SAMPLE_APK_METADATA + mach_cmd, metadata, env = running_env( + tests=[str(EXAMPLE_ANDROID_STARTUP_TEST)], **ARGS + ) + test = android_startup.AndroidStartUp(env, mach_cmd) + with pytest.raises(AndroidStartUpMatchingError): + test.run(metadata) + SAMPLE_APK_METADATA["name"] = "fenix_nightly_armeabi-v7a_2022_09_27.apk" + ARGS["apk_metadata"] = SAMPLE_APK_METADATA + pass + + +@mock.patch( + "mozperftest.system.android.AndroidDevice.custom_apk_exists", new=lambda x: False +) +@mock.patch( + "mozdevice.ADBDevice", + new=FakeDevice, +) +@mock.patch("time.sleep", return_value=time.sleep(0)) +@mock.patch( + "mozperftest.system.android_startup.AndroidStartUp.get_measurement", + return_value=random.randint(500, 1000), +) +def test_perfherder_layer(*mocked): + SAMPLE_APK_METADATA["name"] = "name_for_multiple_Totaltime_strings" + ARGS["apk_metadata"] = SAMPLE_APK_METADATA + mach_cmd, metadata, env = running_env( + tests=[str(EXAMPLE_ANDROID_STARTUP_TEST)], **ARGS + ) + test = android_startup.AndroidStartUp(env, mach_cmd) + test.run(metadata) + + +@mock.patch("mozperftest.system.android.Path") +@mock.patch( + "mozdevice.ADBDevice", + new=FakeDevice, +) +@mock.patch("time.sleep", return_value=time.sleep(0)) +@mock.patch( + "mozperftest.system.android_startup.AndroidStartUp.get_measurement", + return_value=random.randint(500, 1000), +) +def test_custom_apk_startup(get_measurement_mock, time_sleep_mock, path_mock): + SAMPLE_APK_METADATA["name"] = "name_for_multiple_Totaltime_strings" + ARGS["apk_metadata"] = SAMPLE_APK_METADATA + mach_cmd, metadata, env = running_env( + tests=[str(EXAMPLE_ANDROID_STARTUP_TEST)], **ARGS + ) + + with temp_file(name="user_upload.apk", content="") as sample_apk: + sample_apk = pathlib.Path(sample_apk) + path_mock.return_value = sample_apk + + with mock.patch( + "mozperftest.system.android_startup.AndroidStartUp.run_tests" + ) as _: + test = android_startup.AndroidStartUp(env, mach_cmd) + test.run_tests = lambda: True + test.package_id = "FakeID" + assert test.run_performance_analysis(SAMPLE_APK_METADATA) + + +@mock.patch( + "mozperftest.system.android.AndroidDevice.custom_apk_exists", new=lambda x: False +) +@mock.patch( + "mozdevice.ADBDevice", + new=FakeDevice, +) +@mock.patch("time.sleep", return_value=time.sleep(0)) +def test_get_measurement_from_nav_start_logcat_match_error(*mocked): + SAMPLE_APK_METADATA["name"] = "name_for_single_total_time" + ARGS["apk_metadata"] = SAMPLE_APK_METADATA + ARGS["AndroidStartUp-test-name"] = "cold_view_nav_start" + mach_cmd, metadata, env = running_env( + tests=[str(EXAMPLE_ANDROID_STARTUP_TEST)], **ARGS + ) + test = android_startup.AndroidStartUp(env, mach_cmd) + with pytest.raises(AndroidStartUpMatchingError): + test.run(metadata) + + +if __name__ == "__main__": + mozunit.main() diff --git a/python/mozperftest/mozperftest/tests/test_androidlog.py b/python/mozperftest/mozperftest/tests/test_androidlog.py new file mode 100644 index 0000000000..b7aa56b704 --- /dev/null +++ b/python/mozperftest/mozperftest/tests/test_androidlog.py @@ -0,0 +1,81 @@ +#!/usr/bin/env python +import pathlib +from unittest import mock + +import mozunit + +from mozperftest.environment import METRICS, SYSTEM, TEST +from mozperftest.tests.support import EXAMPLE_TEST, get_running_env, temp_file +from mozperftest.utils import temp_dir + +HERE = pathlib.Path(__file__).parent +LOGCAT = HERE / "data" / "logcat" + + +def fetch(self, url): + return str(HERE / "fetched_artifact.zip") + + +class FakeDevice: + def __init__(self, **args): + self.apps = [] + + def uninstall_app(self, apk_name): + return True + + def install_app(self, apk, replace=True): + if apk not in self.apps: + self.apps.append(apk) + + def is_app_installed(self, app_name): + return True + + def get_logcat(self): + with LOGCAT.open() as f: + for line in f: + yield line + + +@mock.patch("mozperftest.test.browsertime.runner.install_package") +@mock.patch( + "mozperftest.test.noderunner.NodeRunner.verify_node_install", new=lambda x: True +) +@mock.patch("mozbuild.artifact_cache.ArtifactCache.fetch", new=fetch) +@mock.patch( + "mozperftest.test.browsertime.runner.BrowsertimeRunner._setup_node_packages", + new=lambda x, y: None, +) +@mock.patch("mozperftest.system.android.ADBLoggedDevice", new=FakeDevice) +def test_android_log(*mocked): + with temp_file() as logcat, temp_dir() as output: + args = { + "flavor": "mobile-browser", + "android-install-apk": ["this.apk"], + "android": True, + "console": True, + "android-timeout": 30, + "android-capture-adb": "stdout", + "android-capture-logcat": logcat, + "android-app-name": "org.mozilla.fenix", + "androidlog": True, + "output": output, + "browsertime-no-window-recorder": False, + "browsertime-viewport-size": "1234x567", + "tests": [EXAMPLE_TEST], + } + + mach_cmd, metadata, env = get_running_env(**args) + + with env.layers[SYSTEM] as sys, env.layers[TEST] as andro: + metadata = andro(sys(metadata)) + + # we want to drop the first result + metadata._results = metadata._results[1:] + with env.layers[METRICS] as metrics: + metadata = metrics(metadata) + + assert pathlib.Path(output, "LogCatstd-output.json").exists() + + +if __name__ == "__main__": + mozunit.main() diff --git a/python/mozperftest/mozperftest/tests/test_argparser.py b/python/mozperftest/mozperftest/tests/test_argparser.py new file mode 100644 index 0000000000..35051772b1 --- /dev/null +++ b/python/mozperftest/mozperftest/tests/test_argparser.py @@ -0,0 +1,159 @@ +#!/usr/bin/env python +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at http://mozilla.org/MPL/2.0/. +from datetime import date + +import mozunit +import pytest + +from mozperftest.argparser import ( + Options, + PerftestArgumentParser, + PerftestToolsArgumentParser, +) + + +def test_argparser(): + parser = PerftestArgumentParser() + args = ["test_one.js"] + res = parser.parse_args(args) + assert res.tests == ["test_one.js"] + + +def test_argparser_defaults(): + parser = PerftestArgumentParser() + args = ["test_one.js"] + res = parser.parse_args(args) + assert res.console_simplify_exclude == ["statistics"] + + +def test_options(): + assert Options.args["--proxy"]["help"] == "Activates the proxy layer" + assert Options.args["--no-browsertime"]["help"] == ( + "Deactivates the " "browsertime layer" + ) + + +def test_layer_option(): + parser = PerftestArgumentParser() + assert parser.parse_args(["--notebook-metrics"]) == parser.parse_args( + ["--notebook-metrics", "--notebook"] + ) + assert parser.parse_known_args(["--notebook-metrics"]) == parser.parse_known_args( + ["--notebook-metrics", "--notebook"] + ) + + +def test_bad_test_date(): + parser = PerftestArgumentParser() + args = ["test_one.js", "--test-date", "bleh"] + with pytest.raises(SystemExit): + parser.parse_args(args) + + +def test_test_date_today(): + parser = PerftestArgumentParser() + args = ["test_one.js", "--test-date", "today"] + res = parser.parse_args(args) + assert res.test_date == date.today().strftime("%Y.%m.%d") + + +def test_perfherder_metrics(): + parser = PerftestArgumentParser() + args = [ + "test_one.js", + "--perfherder-metrics", + "name:foo,unit:ms,alertThreshold:2", + "name:baz,unit:count,alertThreshold:2,lowerIsBetter:false", + ] + + res = parser.parse_args(args) + assert res.perfherder_metrics[0]["name"] == "foo" + assert res.perfherder_metrics[1]["alertThreshold"] == 2 + + args = [ + "test_one.js", + "--perfherder-metrics", + "name:foo,unit:ms,alertThreshold:2", + "name:baz,UNKNOWN:count,alertThreshold:2,lowerIsBetter:false", + ] + + with pytest.raises(SystemExit): + parser.parse_args(args) + + args = [ + "test_one.js", + "--perfherder-metrics", + "name:foo,unit:ms,alertThreshold:2", + "namemalformedbaz,alertThreshold:2,lowerIsBetter:false", + ] + + with pytest.raises(SystemExit): + parser.parse_args(args) + + # missing the name! + args = [ + "test_one.js", + "--perfherder-metrics", + "name:foo,unit:ms,alertThreshold:2", + "alertThreshold:2,lowerIsBetter:false", + ] + + with pytest.raises(SystemExit): + parser.parse_args(args) + + # still supporting just plain names + args = [ + "test_one.js", + "--perfherder-metrics", + "name:foo,unit:euros,alertThreshold:2", + "baz", + ] + + res = parser.parse_args(args) + assert res.perfherder_metrics[1]["name"] == "baz" + assert res.perfherder_metrics[0]["name"] == "foo" + assert res.perfherder_metrics[0]["unit"] == "euros" + + +def test_tools_argparser_bad_tool(): + with pytest.raises(SystemExit): + PerftestToolsArgumentParser() + + +def test_tools_bad_argparser(): + PerftestToolsArgumentParser.tool = "side-by-side" + parser = PerftestToolsArgumentParser() + args = [ + "-t", + "browsertime-first-install-firefox-welcome", + "--base-platform", + "test-linux1804-64-shippable-qr", + ] + with pytest.raises(SystemExit): + parser.parse_args(args) + + +def test_tools_argparser(): + PerftestToolsArgumentParser.tool = "side-by-side" + parser = PerftestToolsArgumentParser() + args = [ + "-t", + "browsertime-first-install-firefox-welcome", + "--base-platform", + "test-linux1804-64-shippable-qr", + "--base-revision", + "438092d03ac4b9c36b52ba455da446afc7e14213", + "--new-revision", + "29943068938aa9e94955dbe13c2e4c254553e4ce", + ] + res = parser.parse_args(args) + assert res.test_name == "browsertime-first-install-firefox-welcome" + assert res.platform == "test-linux1804-64-shippable-qr" + assert res.base_revision == "438092d03ac4b9c36b52ba455da446afc7e14213" + assert res.new_revision == "29943068938aa9e94955dbe13c2e4c254553e4ce" + + +if __name__ == "__main__": + mozunit.main() diff --git a/python/mozperftest/mozperftest/tests/test_browsertime.py b/python/mozperftest/mozperftest/tests/test_browsertime.py new file mode 100644 index 0000000000..e0cd298da7 --- /dev/null +++ b/python/mozperftest/mozperftest/tests/test_browsertime.py @@ -0,0 +1,364 @@ +#!/usr/bin/env python +import os +import pathlib +import random +import shutil +import string +from unittest import mock + +import mozunit +import pytest + +from mozperftest.environment import SYSTEM, TEST +from mozperftest.test.browsertime import add_options +from mozperftest.test.browsertime.runner import ( + NodeException, + extract_browser_name, + matches, +) +from mozperftest.tests.support import EXAMPLE_TEST, get_running_env +from mozperftest.utils import silence, temporary_env + +HERE = os.path.dirname(__file__) + +# Combine these dictionaries as required for mocking the +# Browsertime installation related methods +BTIME_PKG_DEP = { + "devDependencies": {"browsertime": "89771a1d6be54114db190427dbc281582cba3d47"} +} +BTIME_PKG_NO_INSTALL = { + "packages": { + "node_modules/browsertime": { + "resolved": ( + "browsertime@https://github.com/sitespeedio/browsertime" + "/tarball/89771a1d6be54114db190427dbc281582cba3d47" + ) + } + } +} +BTIME_PKG_REINSTALL = { + "packages": { + "node_modules/browsertime": { + "resolved": ( + "browsertime@https://github.com/sitespeedio/browsertime" + "/tarball/98747854be54114db190427dbc281582cba3d47" + ) + } + } +} + + +def fetch(self, url): + return os.path.join(HERE, "fetched_artifact.zip") + + +def mocked_jsonload(val): + return val.__iter__.return_value + + +def build_mock_open(files_data): + mocked_opens = [] + + for data in files_data: + mocked_file = mock.MagicMock() + mocked_file.__enter__.return_value.__iter__.return_value = data + mocked_opens.append(mocked_file) + + m = mock.mock_open() + m.side_effect = mocked_opens + return m + + +@mock.patch("mozperftest.test.browsertime.runner.install_package") +@mock.patch( + "mozperftest.test.noderunner.NodeRunner.verify_node_install", new=lambda x: True +) +@mock.patch("mozbuild.artifact_cache.ArtifactCache.fetch", new=fetch) +@mock.patch( + "mozperftest.test.browsertime.runner.BrowsertimeRunner._setup_node_packages", + new=lambda x, y: None, +) +def test_browser(*mocked): + mach_cmd, metadata, env = get_running_env( + android=True, + android_app_name="something", + browsertime_geckodriver="GECKODRIVER", + browsertime_iterations=1, + browsertime_extra_options="one=1,two=2", + tests=[EXAMPLE_TEST], + browsertime_no_window_recorder=False, + browsertime_viewport_size="1234x567", + ) + + sys = env.layers[SYSTEM] + browser = env.layers[TEST] + try: + with sys as s, browser as b, silence(): + b(s(metadata)) + finally: + shutil.rmtree(mach_cmd._mach_context.state_dir) + assert mach_cmd.run_process.call_count == 1 + + # Make sure all arguments are of type str + for option in mach_cmd.run_process.call_args[0][0]: + assert isinstance(option, str) + + cmd = " ".join(mach_cmd.run_process.call_args[0][0]) + assert EXAMPLE_TEST in cmd + assert "--firefox.geckodriverPath GECKODRIVER" in cmd + assert "--one 1" in cmd + assert "--two 2" in cmd + + results = metadata.get_results() + assert len(results) == 1 + assert set(list(results[0].keys())) - set(["name", "results"]) == set() + assert results[0]["name"] == "Example" + + +@mock.patch( + "mozperftest.test.browsertime.runner.BrowsertimeRunner.browsertime_js", + new=pathlib.Path("doesn't-exist"), +) +@mock.patch( + "mozperftest.test.browsertime.runner.BrowsertimeRunner.visualmetrics_py", + new=pathlib.Path("doesn't-exist-either"), +) +def test_browsertime_not_existing(): + _, _, env = get_running_env( + android=True, + android_app_name="something", + browsertime_geckodriver="GECKODRIVER", + browsertime_iterations=1, + browsertime_extra_options="one=1,two=2", + tests=[EXAMPLE_TEST], + ) + browser = env.layers[TEST] + btime_layer = browser.layers[0] + assert btime_layer._should_install() + + +@mock.patch( + "mozperftest.test.browsertime.runner.pathlib.Path.exists", new=lambda x: True +) +def test_browsertime_no_reinstall(): + _, _, env = get_running_env( + android=True, + android_app_name="something", + browsertime_geckodriver="GECKODRIVER", + browsertime_iterations=1, + browsertime_extra_options="one=1,two=2", + tests=[EXAMPLE_TEST], + ) + + with mock.patch( + "mozperftest.test.browsertime.runner.pathlib.Path.open", + build_mock_open([BTIME_PKG_DEP, BTIME_PKG_NO_INSTALL]), + ), mock.patch("mozperftest.test.browsertime.runner.json.load", new=mocked_jsonload): + browser = env.layers[TEST] + btime_layer = browser.layers[0] + assert not btime_layer._should_install() + + +@mock.patch( + "mozperftest.test.browsertime.runner.pathlib.Path.exists", new=lambda x: True +) +def test_browsertime_should_reinstall(): + _, _, env = get_running_env( + android=True, + android_app_name="something", + browsertime_geckodriver="GECKODRIVER", + browsertime_iterations=1, + browsertime_extra_options="one=1,two=2", + tests=[EXAMPLE_TEST], + ) + + with mock.patch( + "mozperftest.test.browsertime.runner.pathlib.Path.open", + build_mock_open([BTIME_PKG_DEP, BTIME_PKG_REINSTALL]), + ), mock.patch("mozperftest.test.browsertime.runner.json.load", new=mocked_jsonload): + browser = env.layers[TEST] + btime_layer = browser.layers[0] + assert btime_layer._should_install() + + +@mock.patch("mozperftest.test.browsertime.runner.install_package") +@mock.patch( + "mozperftest.test.noderunner.NodeRunner.verify_node_install", new=lambda x: True +) +@mock.patch("mozbuild.artifact_cache.ArtifactCache.fetch", new=fetch) +@mock.patch( + "mozperftest.test.browsertime.runner.BrowsertimeRunner._setup_node_packages", + new=lambda x, y: None, +) +def test_browser_failed(*mocked): + mach_cmd, metadata, env = get_running_env( + android=True, + android_app_name="something", + browsertime_geckodriver="GECKODRIVER", + browsertime_iterations=1, + browsertime_extra_options="one=1,two=2", + tests=[EXAMPLE_TEST], + browsertime_no_window_recorder=False, + browsertime_viewport_size="1234x567", + ) + # set the return value to 1 to simulate a node failure + mach_cmd.run_process.return_value = 1 + browser = env.layers[TEST] + sys = env.layers[SYSTEM] + + with sys as s, browser as b, silence(), pytest.raises(NodeException): + b(s(metadata)) + + +@mock.patch("mozperftest.test.browsertime.runner.install_package") +@mock.patch( + "mozperftest.test.noderunner.NodeRunner.verify_node_install", new=lambda x: True +) +@mock.patch("mozbuild.artifact_cache.ArtifactCache.fetch", new=fetch) +@mock.patch( + "mozperftest.test.browsertime.runner.BrowsertimeRunner._setup_node_packages", + new=lambda x, y: None, +) +def test_browser_desktop(*mocked): + mach_cmd, metadata, env = get_running_env( + browsertime_iterations=1, + browsertime_extra_options="one=1,two=2", + tests=[EXAMPLE_TEST], + browsertime_no_window_recorder=False, + browsertime_viewport_size="1234x567", + ) + browser = env.layers[TEST] + sys = env.layers[SYSTEM] + + try: + with sys as s, browser as b, silence(): + # just checking that the setup_helper property gets + # correctly initialized + browsertime = browser.layers[-1] + assert browsertime.setup_helper is not None + helper = browsertime.setup_helper + assert browsertime.setup_helper is helper + + b(s(metadata)) + finally: + shutil.rmtree(mach_cmd._mach_context.state_dir) + + assert mach_cmd.run_process.call_count == 1 + cmd = " ".join(mach_cmd.run_process.call_args[0][0]) + # check that --firefox.binaryPath is set automatically + assert "--firefox.binaryPath" in cmd + + +@mock.patch("mozperftest.test.browsertime.runner.install_package") +@mock.patch( + "mozperftest.test.noderunner.NodeRunner.verify_node_install", new=lambda x: True +) +@mock.patch("mozbuild.artifact_cache.ArtifactCache.fetch", new=fetch) +@mock.patch( + "mozperftest.test.browsertime.runner.BrowsertimeRunner._setup_node_packages", + new=lambda x, y: None, +) +def test_existing_results(*mocked): + mach_cmd, metadata, env = get_running_env( + browsertime_existing_results="/some/path", + tests=[EXAMPLE_TEST], + ) + browser = env.layers[TEST] + sys = env.layers[SYSTEM] + + try: + with sys as s, browser as b, silence(): + # just checking that the setup_helper property gets + # correctly initialized + browsertime = browser.layers[-1] + assert browsertime.setup_helper is not None + helper = browsertime.setup_helper + assert browsertime.setup_helper is helper + + m = b(s(metadata)) + results = m.get_results() + assert len(results) == 1 + assert results[0]["results"] == "/some/path" + assert results[0]["name"] == "Example" + finally: + shutil.rmtree(mach_cmd._mach_context.state_dir) + + assert mach_cmd.run_process.call_count == 0 + + +def test_add_options(): + mach_cmd, metadata, env = get_running_env() + options = [("one", 1), ("two", 2)] + add_options(env, options) + extra = env.get_arg("browsertime-extra-options") + assert "one=1" in extra + assert "two=2" in extra + + +@mock.patch("mozperftest.test.browsertime.runner.install_package") +@mock.patch( + "mozperftest.test.noderunner.NodeRunner.verify_node_install", new=lambda x: True +) +@mock.patch("mozbuild.artifact_cache.ArtifactCache.fetch", new=fetch) +@mock.patch("mozperftest.test.browsertime.runner.BrowsertimeRunner.setup_helper") +def test_install_url(*mocked): + url = "https://here/tarball/" + "".join( + [random.choice(string.hexdigits[:-6]) for c in range(40)] + ) + mach, metadata, env = get_running_env( + browsertime_install_url=url, + tests=[EXAMPLE_TEST], + browsertime_no_window_recorder=False, + browsertime_viewport_size="1234x567", + ) + browser = env.layers[TEST] + sys = env.layers[SYSTEM] + + try: + with sys as s, temporary_env(MOZ_AUTOMATION="1"), browser as b, silence(): + b(s(metadata)) + finally: + shutil.rmtree(mach._mach_context.state_dir) + + assert mach.run_process.call_count == 1 + + +@mock.patch("mozperftest.test.browsertime.runner.install_package") +@mock.patch( + "mozperftest.test.noderunner.NodeRunner.verify_node_install", new=lambda x: True +) +@mock.patch("mozbuild.artifact_cache.ArtifactCache.fetch", new=fetch) +@mock.patch( + "mozperftest.test.browsertime.runner.BrowsertimeRunner._setup_node_packages", + new=lambda x, y: None, +) +def test_install_url_bad(*mocked): + mach, metadata, env = get_running_env( + browsertime_install_url="meh", + tests=[EXAMPLE_TEST], + ) + browser = env.layers[TEST] + sys = env.layers[SYSTEM] + + with pytest.raises(ValueError): + try: + with sys as s, browser as b, silence(): + b(s(metadata)) + finally: + shutil.rmtree(mach._mach_context.state_dir) + + +def test_matches(): + args = ["arg1=1", "--arg2=value2"] + + assert matches(args, "arg1") + assert not matches(args, "arg3") + + +def test_extract_browser_name(): + args = ["arg1=1", "--arg2=value2", "--browser=me", "--zome"] + assert extract_browser_name(args) == "me" + + +if __name__ == "__main__": + mozunit.main() diff --git a/python/mozperftest/mozperftest/tests/test_change_detector.py b/python/mozperftest/mozperftest/tests/test_change_detector.py new file mode 100644 index 0000000000..ee9fa5fa0f --- /dev/null +++ b/python/mozperftest/mozperftest/tests/test_change_detector.py @@ -0,0 +1,113 @@ +#!/usr/bin/env python +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at http://mozilla.org/MPL/2.0/. +import pathlib +from unittest import mock + +import mozunit +import pytest + +from mozperftest.tests.support import temp_file +from mozperftest.tools import PerformanceChangeDetected, run_change_detector + + +def test_change_detector_basic(kwargs=None, return_value=({}, {})): + mocked_detector = mock.MagicMock() + mocked_detector_module = mock.MagicMock() + mocked_detector_module.ChangeDetector = mocked_detector + + with mock.patch.dict( + "sys.modules", + { + "mozperftest_tools.regression_detector": mocked_detector_module, + }, + ): + mocked_detector.return_value.detect_changes.return_value = return_value + + with temp_file() as f: + parent_dir = pathlib.Path(f).parent + + if kwargs is None: + kwargs = { + "test_name": "browsertime-test", + "new_test_name": None, + "platform": "test-platform/opt", + "new_platform": None, + "base_branch": "try", + "new_branch": "try", + "base_revision": "99", + "new_revision": "99", + } + + run_change_detector(parent_dir, kwargs) + + mocked_detector.return_value.detect_changes.assert_called() + + return mocked_detector_module + + +def test_change_detector_with_task_name(): + test_change_detector_basic( + { + "task_names": ["test-platform/opt-browsertime-test"], + "new_test_name": None, + "platform": None, + "new_platform": None, + "base_branch": "try", + "new_branch": "try", + "base_revision": "99", + "new_revision": "99", + } + ) + + +def test_change_detector_option_failure(): + with pytest.raises(Exception): + test_change_detector_basic( + { + "test_name": None, + "new_test_name": None, + "platform": "test-platform/opt", + "new_platform": None, + "base_branch": "try", + "new_branch": "try", + "base_revision": "99", + "new_revision": "99", + } + ) + + with pytest.raises(Exception): + test_change_detector_basic( + { + "test_name": "browsertime-test", + "new_test_name": None, + "platform": None, + "new_platform": None, + "base_branch": "try", + "new_branch": "try", + "base_revision": "99", + "new_revision": "99", + } + ) + + +def test_change_detector_with_detection(): + with pytest.raises(PerformanceChangeDetected): + test_change_detector_basic( + { + "task_names": ["test-platform/opt-browsertime-test"], + "new_test_name": None, + "platform": None, + "new_platform": None, + "base_branch": "try", + "new_branch": "try", + "base_revision": "99", + "new_revision": "99", + }, + (["detection"], {"warm": {"metric": {"detection": [99]}}, "cold": {}}), + ) + + +if __name__ == "__main__": + mozunit.main() diff --git a/python/mozperftest/mozperftest/tests/test_consoleoutput.py b/python/mozperftest/mozperftest/tests/test_consoleoutput.py new file mode 100644 index 0000000000..e64cb82430 --- /dev/null +++ b/python/mozperftest/mozperftest/tests/test_consoleoutput.py @@ -0,0 +1,36 @@ +#!/usr/bin/env python +from unittest import mock + +import mozunit + +from mozperftest.environment import METRICS +from mozperftest.tests.support import BT_DATA, EXAMPLE_TEST, get_running_env +from mozperftest.utils import silence, temp_dir + + +@mock.patch("mozperftest.metrics.common.validate_intermediate_results") +def test_console_output(*mocked): + with temp_dir() as tempdir: + options = { + "console-prefix": "", + "console": True, + "output": tempdir, + } + mach_cmd, metadata, env = get_running_env(**options) + runs = [] + + def _run_process(*args, **kw): + runs.append((args, kw)) + + mach_cmd.run_process = _run_process + metrics = env.layers[METRICS] + env.set_arg("tests", [EXAMPLE_TEST]) + res = {"name": "name", "results": [str(BT_DATA)]} + metadata.add_result(res) + + with metrics as console, silence(): + console(metadata) + + +if __name__ == "__main__": + mozunit.main() diff --git a/python/mozperftest/mozperftest/tests/test_constant.py b/python/mozperftest/mozperftest/tests/test_constant.py new file mode 100644 index 0000000000..99821f9680 --- /dev/null +++ b/python/mozperftest/mozperftest/tests/test_constant.py @@ -0,0 +1,13 @@ +import mozunit + +from mozperftest.metrics.notebook.constant import Constant +from mozperftest.metrics.notebook.transforms.single_json import SingleJsonRetriever + + +def test_predefined_transformers(): + tfms = Constant().predefined_transformers + assert SingleJsonRetriever.__name__ in tfms + + +if __name__ == "__main__": + mozunit.main() diff --git a/python/mozperftest/mozperftest/tests/test_environment.py b/python/mozperftest/mozperftest/tests/test_environment.py new file mode 100644 index 0000000000..556c7eec85 --- /dev/null +++ b/python/mozperftest/mozperftest/tests/test_environment.py @@ -0,0 +1,158 @@ +#!/usr/bin/env python +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at http://mozilla.org/MPL/2.0/. +from pathlib import Path +from unittest import mock + +import mozunit +import pytest + +from mozperftest.environment import MachEnvironment +from mozperftest.hooks import Hooks +from mozperftest.layers import Layer +from mozperftest.tests.support import get_running_env, requests_content + +HERE = Path(__file__).parent.resolve() + + +def _get_env(hooks_path): + return MachEnvironment(mock.MagicMock(), hooks=Hooks(mock.MagicMock(), hooks_path)) + + +def test_run_hooks(): + env = _get_env(Path(HERE, "data", "hook.py")) + assert env.hooks.run("doit", env) == "OK" + + +def test_bad_hooks(): + with pytest.raises(IOError): + _get_env("Idontexists") + + +doit = [b"def doit(*args, **kw):\n", b" return 'OK'\n"] + + +@mock.patch("mozperftest.utils.requests.get", requests_content(doit)) +def test_run_hooks_url(): + env = _get_env("http://somewhere/hooks.py") + assert env.hooks.run("doit", env) == "OK" + + +def test_layers(): + env = MachEnvironment(mock.MagicMock()) + assert env.get_layer("browsertime").name == "browsertime" + + +def test_context(): + mach, metadata, env = get_running_env() + env.layers = [mock.MagicMock(), mock.MagicMock(), mock.MagicMock()] + with env: + env.run(metadata) + + +class FailureException(Exception): + pass + + +class Failure(Layer): + user_exception = True + + def run(self, metadata): + raise FailureException() + + +def create_mock(): + m = mock.Mock() + + # need to manually set those + def enter(self): + self.setup() + return self + + def exit(self, type, value, traceback): + self.teardown() + + m.__enter__ = enter + m.__exit__ = exit + m.__call__ = mock.Mock() + return m + + +def test_exception_return(): + # the last layer is not called, the error is swallowed + hooks = str(Path(HERE, "data", "hook.py")) + mach, metadata, env = get_running_env(hooks=hooks) + last_layer = create_mock() + env.layers = [create_mock(), Failure(env, mach), last_layer] + with env: + env.run(metadata) + last_layer.assert_not_called() + + +def test_exception_resume(): + # the last layer is called, the error is swallowed + hooks = str(Path(HERE, "data", "hook_resume.py")) + mach, metadata, env = get_running_env(hooks=hooks) + last_layer = create_mock() + env.layers = [create_mock(), Failure(env, mach), last_layer] + with env: + env.run(metadata) + last_layer.assert_called() + + +def test_exception_no_user_exception(): + # the last layer is called, the error is raised + # because user_exception = False + hooks = str(Path(HERE, "data", "hook_resume.py")) + mach, metadata, env = get_running_env(hooks=hooks) + last_layer = create_mock() + f = Failure(env, mach) + f.user_exception = False + env.layers = [create_mock(), f, last_layer] + with env, pytest.raises(FailureException): + env.run(metadata) + last_layer._call__.assert_not_called() + + +def test_exception_raised(): + # the error is raised + hooks = str(Path(HERE, "data", "hook_raises.py")) + mach, metadata, env = get_running_env(hooks=hooks) + last_layer = create_mock() + env.layers = [create_mock(), Failure(env, mach), last_layer] + with env, pytest.raises(FailureException): + env.run(metadata) + last_layer.__call__.assert_not_called() + + +def test_metrics_last(): + mach, metadata, env = get_running_env() + + system = create_mock() + browser = create_mock() + + # Check that the metrics layer is entered after + # other have finished and that the other layers + # were only called once + class M: + def __enter__(self): + system.setup.assert_called_once() + browser.setup.assert_called_once() + system.teardown.assert_called_once() + browser.teardown.assert_called_once() + return self + + def __exit__(self, *args, **kw): + return + + def __call__(self, metadata): + return + + env.layers = [system, browser, M()] + with env: + env.run(metadata) + + +if __name__ == "__main__": + mozunit.main() diff --git a/python/mozperftest/mozperftest/tests/test_functionaltestrunner.py b/python/mozperftest/mozperftest/tests/test_functionaltestrunner.py new file mode 100644 index 0000000000..20f8362d60 --- /dev/null +++ b/python/mozperftest/mozperftest/tests/test_functionaltestrunner.py @@ -0,0 +1,57 @@ +import sys +from unittest import mock + +from mozperftest.test.functionaltestrunner import ( + FunctionalTestProcessor, + FunctionalTestRunner, +) + + +def test_functionaltestrunner_pass(): + with mock.patch("moztest.resolve.TestResolver") as test_resolver_mock, mock.patch( + "mozperftest.test.functionaltestrunner.load_class_from_path" + ) as load_class_path_mock, mock.patch( + "mozperftest.test.functionaltestrunner.FunctionalTestProcessor" + ), mock.patch( + "mozperftest.test.functionaltestrunner.mozlog" + ): + test_mock = mock.MagicMock() + test_mock.test.return_value = 0 + load_class_path_mock.return_value = test_mock + + mach_cmd = mock.MagicMock() + test_resolver_mock.resolve_metadata.return_value = (1, 1) + mach_cmd._spawn.return_value = test_resolver_mock + + status, _ = FunctionalTestRunner.test(mach_cmd, [], []) + + assert status == 0 + + +def test_functionaltestrunner_missing_test_failure(): + with mock.patch("moztest.resolve.TestResolver") as test_resolver_mock: + mach_cmd = mock.MagicMock() + test_resolver_mock.resolve_metadata.return_value = (0, 0) + mach_cmd._spawn.return_value = test_resolver_mock + status, _ = FunctionalTestRunner.test(mach_cmd, [], []) + assert status == 1 + + +def test_functionaltestrunner_perfmetrics_parsing(): + formatter_mock = mock.MagicMock() + formatter_mock.return_value = "perfMetrics | fake-data" + + log_processor = FunctionalTestProcessor(stream=sys.stdout, formatter=formatter_mock) + log_processor("") + + assert len(log_processor.match) == 1 + + +def test_functionaltestrunner_perfmetrics_missing(): + formatter_mock = mock.MagicMock() + formatter_mock.return_value = "perfmetrics | fake-data" + + log_processor = FunctionalTestProcessor(stream=sys.stdout, formatter=formatter_mock) + log_processor("") + + assert len(log_processor.match) == 0 diff --git a/python/mozperftest/mozperftest/tests/test_fzf.py b/python/mozperftest/mozperftest/tests/test_fzf.py new file mode 100644 index 0000000000..bcdde68584 --- /dev/null +++ b/python/mozperftest/mozperftest/tests/test_fzf.py @@ -0,0 +1,59 @@ +#!/usr/bin/env python +import json +from pathlib import Path +from unittest import mock + +import mozunit + +from mozperftest.fzf.fzf import select +from mozperftest.fzf.preview import main +from mozperftest.tests.support import EXAMPLE_TEST, temp_file +from mozperftest.utils import silence + + +class Fzf: + def __init__(self, cmd, *args, **kw): + self.cmd = cmd + + def communicate(self, *args): + return "query\n" + args[0], "stderr" + + +def fzf_executable(*args, path: str = None): + return None if len(args) == 2 else "fzf" + + +@mock.patch("subprocess.Popen", new=Fzf) +@mock.patch("mozperftest.fzf.fzf.which", new=fzf_executable) +def test_select(*mocked): + test_objects = [{"path": EXAMPLE_TEST}] + selection = select(test_objects) + assert len(selection) == 1 + + +@mock.patch("subprocess.Popen", new=Fzf) +@mock.patch("mozperftest.fzf.fzf.which", new=fzf_executable) +def test_find_fzf_executable(*mocked): + test_objects = [{"path": EXAMPLE_TEST}] + selection = select(test_objects) + assert len(selection) == 1 + + +def test_preview(): + content = Path(EXAMPLE_TEST) + line = f"[bt][sometag] {content.name} in {content.parent}" + test_objects = [{"path": str(content)}] + cache = Path(Path.home(), ".mozbuild", ".perftestfuzzy") + with cache.open("w") as f: + f.write(json.dumps(test_objects)) + + with temp_file(content=str(line)) as tasklist, silence() as out: + main(args=["-t", tasklist]) + + stdout, __ = out + stdout.seek(0) + assert ":owner: Performance Testing Team" in stdout.read() + + +if __name__ == "__main__": + mozunit.main() diff --git a/python/mozperftest/mozperftest/tests/test_influx.py b/python/mozperftest/mozperftest/tests/test_influx.py new file mode 100644 index 0000000000..5e5db67eb8 --- /dev/null +++ b/python/mozperftest/mozperftest/tests/test_influx.py @@ -0,0 +1,121 @@ +#!/usr/bin/env python +import json +import re +import sys + +import mozunit +import pytest +import responses + +from mozperftest.metrics.perfboard.influx import Influx +from mozperftest.tests.support import ( + BT_DATA, + EXAMPLE_TEST, + get_running_env, + running_on_try, +) +from mozperftest.utils import ON_TRY, temp_dir + + +def mocks(): + # mocking the Influx service + responses.add( + responses.GET, + "http://influxdb/ping", + body=json.dumps({"version": "1"}), + headers={"x-influxdb-version": "1"}, + status=204, + ) + + responses.add( + responses.POST, + "http://influxdb/write", + body=json.dumps({"version": "1"}), + headers={"x-influxdb-version": "1"}, + status=204, + ) + + responses.add( + responses.GET, + "http://grafana/api/search?tag=component", + body=json.dumps([]), + status=200, + ) + + responses.add( + responses.POST, + "http://grafana/api/dashboards/db", + body=json.dumps({"uid": "id"}), + status=200, + ) + + responses.add( + responses.GET, + "http://grafana/api/dashboards/uid/id", + body=json.dumps({"dashboard": {"panels": []}}), + status=200, + ) + + responses.add( + responses.GET, + re.compile( + "https://firefox-ci-tc.services.mozilla.com/secrets/*|" + "http://taskcluster/secrets/*" + ), + body=json.dumps( + { + "secret": { + "influx_host": "influxdb", + "influx_port": 0, + "influx_user": "admin", + "influx_password": "pass", + "influx_db": "db", + "grafana_key": "xxx", + "grafana_host": "grafana", + "grafana_port": 0, + } + } + ), + status=200, + ) + + +@responses.activate +@pytest.mark.parametrize("on_try", [True, False]) +def test_influx_service(on_try): + if ON_TRY and sys.platform == "darwin": + # macos slave in the CI are restricted + return + + mocks() + with running_on_try(on_try), temp_dir() as output: + args = { + "verbose": True, + "output": output, + "perfboard-influx-password": "xxx", + "perfboard-grafana-key": "xxx", + "perfboard-grafana-host": "grafana", + "perfboard-influx-port": 0, + "perfboard-influx-host": "influxdb", + "tests": [EXAMPLE_TEST], + } + + mach_cmd, metadata, env = get_running_env(**args) + metadata.add_result({"results": str(BT_DATA), "name": "browsertime"}) + layer = Influx(env, mach_cmd) + layer.setup() + try: + metadata = layer.run(metadata) + finally: + layer.teardown() + + index = on_try and 2 or 1 + sent_data = responses.calls[index].request.body.split(b"\n") + fields = [line.split(b",")[0].strip() for line in sent_data] + assert b"rumspeedindex" in fields + + responses.reset() + + +if __name__ == "__main__": + mozunit.main() diff --git a/python/mozperftest/mozperftest/tests/test_ir_schema.py b/python/mozperftest/mozperftest/tests/test_ir_schema.py new file mode 100644 index 0000000000..41f3ad7804 --- /dev/null +++ b/python/mozperftest/mozperftest/tests/test_ir_schema.py @@ -0,0 +1,103 @@ +#!/usr/bin/env python +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at http://mozilla.org/MPL/2.0/. +import mozunit +import pytest +from jsonschema.exceptions import ValidationError + +from mozperftest.metrics.utils import validate_intermediate_results + + +def test_results_with_directory(): + test_result = {"results": "path-to-results", "name": "the-name"} + validate_intermediate_results(test_result) + + +def test_results_with_measurements(): + test_result = { + "results": [ + {"name": "metric-1", "values": [0, 1, 1, 0]}, + {"name": "metric-2", "values": [0, 1, 1, 0]}, + ], + "name": "the-name", + } + validate_intermediate_results(test_result) + + +def test_results_with_suite_perfherder_options(): + test_result = { + "results": [ + {"name": "metric-1", "values": [0, 1, 1, 0]}, + {"name": "metric-2", "values": [0, 1, 1, 0]}, + ], + "name": "the-name", + "extraOptions": ["an-extra-option"], + "value": 9000, + } + validate_intermediate_results(test_result) + + +def test_results_with_subtest_perfherder_options(): + test_result = { + "results": [ + {"name": "metric-1", "shouldAlert": True, "values": [0, 1, 1, 0]}, + {"name": "metric-2", "alertThreshold": 1.0, "values": [0, 1, 1, 0]}, + ], + "name": "the-name", + "extraOptions": ["an-extra-option"], + "value": 9000, + } + validate_intermediate_results(test_result) + + +def test_results_with_bad_suite_property(): + test_result = { + "results": "path-to-results", + "name": "the-name", + "I'll cause a failure,": "an expected failure", + } + with pytest.raises(ValidationError): + validate_intermediate_results(test_result) + + +def test_results_with_bad_subtest_property(): + test_result = { + "results": [ + # Error is in "shouldalert", it should be "shouldAlert" + {"name": "metric-1", "shouldalert": True, "values": [0, 1, 1, 0]}, + {"name": "metric-2", "alertThreshold": 1.0, "values": [0, 1, 1, 0]}, + ], + "name": "the-name", + "extraOptions": ["an-extra-option"], + "value": 9000, + } + with pytest.raises(ValidationError): + validate_intermediate_results(test_result) + + +def test_results_with_missing_suite_property(): + test_result = { + # Missing "results" + "name": "the-name" + } + with pytest.raises(ValidationError): + validate_intermediate_results(test_result) + + +def test_results_with_missing_subtest_property(): + test_result = { + "results": [ + # Missing "values" + {"name": "metric-2", "alertThreshold": 1.0} + ], + "name": "the-name", + "extraOptions": ["an-extra-option"], + "value": 9000, + } + with pytest.raises(ValidationError): + validate_intermediate_results(test_result) + + +if __name__ == "__main__": + mozunit.main() diff --git a/python/mozperftest/mozperftest/tests/test_layers.py b/python/mozperftest/mozperftest/tests/test_layers.py new file mode 100644 index 0000000000..c29b9ef2c0 --- /dev/null +++ b/python/mozperftest/mozperftest/tests/test_layers.py @@ -0,0 +1,88 @@ +#!/usr/bin/env python +from unittest.mock import MagicMock + +import mozunit +import pytest + +from mozperftest.environment import MachEnvironment +from mozperftest.layers import Layer, Layers + + +class _TestLayer(Layer): + name = "test" + activated = True + called = 0 + arguments = {"--arg1": {"type": str, "default": "xxx", "help": "arg1"}} + + def setup(self): + self.called += 1 + + def teardown(self): + self.called += 1 + + +class _TestLayer2(_TestLayer): + name = "test2" + activated = True + arguments = {"arg2": {"type": str, "default": "xxx", "help": "arg2"}} + + +class _TestLayer3(_TestLayer): + name = "test3" + activated = True + + +def test_layer(): + mach = MagicMock() + env = MachEnvironment(mach, test=True, test_arg1="ok") + + with _TestLayer(env, mach) as layer: + layer.info("info") + layer.warning("warning") + layer.debug("debug") + assert layer.get_arg("test") + assert layer.get_arg("arg1") == "ok" + assert layer.get_arg("test-arg1") == "ok" + layer.set_arg("arg1", "two") + assert layer.get_arg("test-arg1") == "two" + layer.set_arg("test-arg1", 1) + assert layer.get_arg("test-arg1") == 1 + with pytest.raises(KeyError): + layer.set_arg("another", 1) + + layer(object()) + + assert layer.called == 2 + + +def test_layers(): + mach = MagicMock() + factories = [_TestLayer, _TestLayer2, _TestLayer3] + env = MachEnvironment( + mach, no_test3=True, test_arg1="ok", test2=True, test2_arg2="2" + ) + + with Layers(env, mach, factories) as layers: + # layer3 was deactivated with test3=False + assert len(layers.layers) == 2 + layers.info("info") + layers.debug("debug") + layers.warning("warning") + assert layers.get_arg("--test2") + assert layers.get_arg("test-arg1") == "ok" + layers.set_arg("test-arg1", "two") + assert layers.get_arg("test-arg1") == "two" + layers.set_arg("--test-arg1", 1) + assert layers.get_arg("test-arg1") == 1 + assert layers.get_layer("test2").name == "test2" + assert layers.get_layer("test3") is None + assert layers.name == "test + test2" + with pytest.raises(KeyError): + layers.set_arg("another", 1) + + for layer in layers: + assert layer.called == 2 + + +if __name__ == "__main__": + mozunit.main() diff --git a/python/mozperftest/mozperftest/tests/test_logcat_transformer.py b/python/mozperftest/mozperftest/tests/test_logcat_transformer.py new file mode 100644 index 0000000000..8f94caedfc --- /dev/null +++ b/python/mozperftest/mozperftest/tests/test_logcat_transformer.py @@ -0,0 +1,125 @@ +#!/usr/bin/env python +import mozunit +import pytest + +from mozperftest.metrics.exceptions import ( + NotebookTransformError, + NotebookTransformOptionsError, +) +from mozperftest.metrics.notebook.transforms.logcattime import LogCatTimeTransformer +from mozperftest.tests.support import HERE + + +@pytest.fixture(scope="session", autouse=True) +def tfm(): + yield LogCatTimeTransformer() + + +@pytest.fixture(scope="session", autouse=True) +def logcat_data(tfm): + data = tfm.open_data(str(HERE / "data" / "home_activity.txt")) + assert data + yield data + + +def test_logcat_transform_two_regex(tfm, logcat_data): + restart = r".*Activity.*Manager.*START.*org\.mozilla\.fennec_aurora/org\.mozilla\.fenix\.HomeActivity.*" # noqa + reend = r".*Displayed.*org\.mozilla\.fennec_aurora.*" + opts = { + "first-timestamp": restart, + "second-timestamp": reend, + "transform-subtest-name": "HANOOBish", + } + + actual_result = tfm.transform(logcat_data, **opts) + expected_result = [ + { + "data": [ + {"value": 1782.0, "xaxis": 0}, + {"value": 1375.0, "xaxis": 1}, + {"value": 1497.0, "xaxis": 2}, + ], + "subtest": "HANOOBish", + } + ] + assert actual_result == expected_result + + # We should get the same results back from merge + # since we are working with only one file + merged = tfm.merge(actual_result) + assert merged == expected_result + + +def test_logcat_transform_one_regex(tfm, logcat_data): + def processor(groups): + """Parses the time from a displayed time string into milliseconds.""" + return (float(groups[0]) * 1000) + float(groups[1]) + + re_w_group = r".*Displayed.*org\.mozilla\.fennec_aurora.*\+([\d]+)s([\d]+)ms.*" + opts = { + "first-timestamp": re_w_group, + "processor": processor, + "transform-subtest-name": "TimeToDisplayed", + } + + actual_result = tfm.transform(logcat_data, **opts) + expected_result = [ + { + "data": [ + {"value": 1743.0, "xaxis": 0}, + {"value": 1325.0, "xaxis": 1}, + {"value": 1462.0, "xaxis": 2}, + ], + "subtest": "TimeToDisplayed", + } + ] + assert actual_result == expected_result + + +def test_logcat_transform_no_processor(tfm, logcat_data): + re_w_group = r".*Displayed.*org\.mozilla\.fennec_aurora.*\+([\d]+)s([\d]+)ms.*" + opts = { + "first-timestamp": re_w_group, + "transform-subtest-name": "TimeToDisplayed", + } + + actual_result = tfm.transform(logcat_data, **opts) + expected_result = [ + { + "data": [ + {"value": 1.0, "xaxis": 0}, + {"value": 1.0, "xaxis": 1}, + {"value": 1.0, "xaxis": 2}, + ], + "subtest": "TimeToDisplayed", + } + ] + assert actual_result == expected_result + + +def test_logcat_transform_no_groups(tfm, logcat_data): + re_w_group = r".*Displayed.*org\.mozilla\.fennec_aurora.*" + opts = { + "first-timestamp": re_w_group, + "transform-subtest-name": "TimeToDisplayed", + } + + with pytest.raises(NotebookTransformOptionsError): + tfm.transform(logcat_data, **opts) + + +def test_logcat_transform_too_many_groups(tfm, logcat_data): + restart = r".*Activity.*Manager.*START.*org\.mozilla\.fennec_aurora/org\.mozilla\.fenix\.HomeActivity.*" # noqa + reend = r".*Displayed.*org\.mozilla\.fennec_aurora.*\+([\d]+)s([\d]+)ms.*" + opts = { + "first-timestamp": restart, + "second-timestamp": reend, + "transform-subtest-name": "HANOOBish", + } + + with pytest.raises(NotebookTransformError): + tfm.transform(logcat_data, **opts) + + +if __name__ == "__main__": + mozunit.main() diff --git a/python/mozperftest/mozperftest/tests/test_mach_commands.py b/python/mozperftest/mozperftest/tests/test_mach_commands.py new file mode 100644 index 0000000000..b9068b5292 --- /dev/null +++ b/python/mozperftest/mozperftest/tests/test_mach_commands.py @@ -0,0 +1,331 @@ +#!/usr/bin/env python +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at http://mozilla.org/MPL/2.0/. + +import os +import shutil +import sys +import tempfile +from contextlib import contextmanager +from pathlib import Path +from unittest import mock + +import mozunit +import pytest +from mach.registrar import Registrar + +Registrar.categories = {"testing": []} +Registrar.commands_by_category = {"testing": set()} + +from mozbuild.base import MachCommandBase # noqa + +import mozperftest.mach_commands # noqa +from mozperftest.environment import MachEnvironment # noqa +from mozperftest.tests.support import EXAMPLE_TEST, ROOT, running_on_try # noqa +from mozperftest.utils import silence, temporary_env # noqa + +ITERATION_HOOKS = Path(__file__).parent / "data" / "hooks_iteration.py" +STATE_HOOKS = Path(__file__).parent / "data" / "hooks_state.py" + + +class _TestMachEnvironment(MachEnvironment): + def __init__(self, mach_cmd, flavor="desktop-browser", hooks=None, **kwargs): + MachEnvironment.__init__(self, mach_cmd, flavor, hooks, **kwargs) + self.runs = 0 + + def run(self, metadata): + self.runs += 1 + return metadata + + def __enter__(self): + pass + + def __exit__(self, type, value, traceback): + pass + + +@contextmanager +def _get_command(command=mozperftest.mach_commands.run_perftest): + from mozbuild.base import MozbuildObject + + from mozperftest.argparser import PerftestArgumentParser + + config = MozbuildObject.from_environment() + + class context: + topdir = config.topobjdir + cwd = os.getcwd() + settings = {} + log_manager = mock.Mock() + state_dir = tempfile.mkdtemp() + + # used to make arguments passed by the test as + # being set by the user. + def _run_perftest(func): + def _run(command_context, **kwargs): + parser.set_by_user = list(kwargs.keys()) + return func(command_context, **kwargs) + + return _run + + try: + command_context = MachCommandBase(context()) + + if command == mozperftest.mach_commands.run_perftest: + parser = PerftestArgumentParser() + command = _run_perftest(command) + + with mock.patch("mozperftest.mach_commands.get_parser", new=lambda: parser): + yield command, command_context + finally: + shutil.rmtree(context.state_dir) + + +@contextmanager +def _get_tools_command(tool="side-by-side"): + from mozbuild.base import MozbuildObject + + config = MozbuildObject.from_environment() + + class context: + topdir = config.topobjdir + cwd = os.getcwd() + settings = {} + log_manager = mock.Mock() + state_dir = tempfile.mkdtemp() + + # used to make arguments passed by the test as + # being set by the user. + def _run_tool(func): + def _run(command_context, **kwargs): + parser.set_by_user = list(kwargs.keys()) + return func(command_context, **kwargs) + + return _run + + try: + command_context = MachCommandBase(context()) + + command = _run_tool(mozperftest.mach_commands.run_side_by_side) + parser = mozperftest.mach_commands.get_perftest_tools_parser(tool) + + with mock.patch( + "mozperftest.mach_commands.get_perftest_tools_parser", new=lambda: parser + ): + yield command, command_context + finally: + shutil.rmtree(context.state_dir) + + +@mock.patch("mozperftest.MachEnvironment", new=_TestMachEnvironment) +@mock.patch("mozbuild.base.MachCommandBase.activate_virtualenv") +def test_command(mocked_func): + with _get_command() as (cmd, command_context), silence(command_context): + cmd(command_context, tests=[EXAMPLE_TEST], flavor="desktop-browser") + + +@mock.patch("mozperftest.MachEnvironment") +@mock.patch("mozbuild.base.MachCommandBase.activate_virtualenv") +def test_command_iterations(venv, env): + kwargs = { + "tests": [EXAMPLE_TEST], + "hooks": ITERATION_HOOKS, + "flavor": "desktop-browser", + } + with _get_command() as (cmd, command_context), silence(command_context): + cmd(command_context, **kwargs) + # the hook changes the iteration value to 5. + # each iteration generates 5 calls, so we want to see 25 + assert len(env.mock_calls) == 25 + + +@mock.patch("mozperftest.MachEnvironment") +@mock.patch("mozbuild.base.MachCommandBase.activate_virtualenv") +def test_hooks_state(venv, env): + kwargs = { + "tests": [EXAMPLE_TEST], + "hooks": STATE_HOOKS, + "flavor": "desktop-browser", + } + with _get_command() as (cmd, command_context), silence(command_context): + cmd(command_context, **kwargs) + + +@mock.patch("mozperftest.MachEnvironment", new=_TestMachEnvironment) +@mock.patch("mozbuild.base.MachCommandBase.activate_virtualenv") +@mock.patch("tryselect.push.push_to_try") +def test_push_command(push_to_try, venv): + with _get_command() as (cmd, command_context), silence(command_context): + cmd( + command_context, + tests=[EXAMPLE_TEST], + flavor="desktop-browser", + push_to_try=True, + try_platform="linux", + ) + push_to_try.assert_called() + # XXX add assertions + + +@mock.patch("mozperftest.MachEnvironment", new=_TestMachEnvironment) +@mock.patch("mozbuild.base.MachCommandBase.activate_virtualenv") +@mock.patch("tryselect.push.push_to_try") +def test_push_command_unknown_platforms(push_to_try, venv): + # full stop when a platform is unknown + with _get_command() as (cmd, command_context), pytest.raises(NotImplementedError): + cmd( + command_context, + tests=[EXAMPLE_TEST], + flavor="desktop-browser", + push_to_try=True, + try_platform=["solaris", "linux", "mac"], + ) + + +@mock.patch("mozperftest.MachEnvironment", new=_TestMachEnvironment) +@mock.patch("mozbuild.base.MachCommandBase.activate_virtualenv") +@mock.patch("tryselect.push.push_to_try") +def test_push_command_several_platforms(push_to_try, venv): + with running_on_try(False), _get_command() as ( + cmd, + command_context, + ): # , silence(command_context): + cmd( + command_context, + tests=[EXAMPLE_TEST], + flavor="desktop-browser", + push_to_try=True, + try_platform=["linux", "mac"], + ) + push_to_try.assert_called() + name, args, kwargs = push_to_try.mock_calls[0] + params = kwargs["try_task_config"]["parameters"]["try_task_config"] + assert "perftest-linux-try-browsertime" in params["tasks"] + assert "perftest-macosx-try-browsertime" in params["tasks"] + + +@mock.patch("mozperftest.MachEnvironment", new=_TestMachEnvironment) +@mock.patch("mozbuild.base.MachCommandBase.activate_virtualenv") +def test_doc_flavor(mocked_func): + with _get_command() as (cmd, command_context), silence(command_context): + cmd(command_context, tests=[EXAMPLE_TEST], flavor="doc") + + +@mock.patch("mozperftest.MachEnvironment", new=_TestMachEnvironment) +@mock.patch("mozbuild.base.MachCommandBase.activate_virtualenv") +@mock.patch("mozperftest.utils.run_script") +def test_test_runner(*mocked): + from mozperftest.mach_commands import run_tests + + with running_on_try(False), _get_command(run_tests) as (cmd, command_context): + cmd(command_context, tests=[EXAMPLE_TEST], verbose=True) + + +@mock.patch("mozperftest.MachEnvironment", new=_TestMachEnvironment) +@mock.patch("mozbuild.base.MachCommandBase.activate_virtualenv") +@mock.patch("mozperftest.utils.run_python_script") +def test_test_runner_on_try(*mocked): + from mozperftest.mach_commands import run_tests + + # simulating on try to run the paths parser + with running_on_try(), _get_command(run_tests) as (cmd, command_context): + cmd(command_context, tests=[EXAMPLE_TEST]) + + +@mock.patch("mozperftest.MachEnvironment", new=_TestMachEnvironment) +@mock.patch("mozbuild.base.MachCommandBase.activate_virtualenv") +@mock.patch("mozperftest.utils.run_script") +def test_test_runner_coverage(*mocked): + from mozperftest.mach_commands import run_tests + + # simulating with coverage not installed + with running_on_try(False), _get_command(run_tests) as (cmd, command_context): + old = list(sys.meta_path) + sys.meta_path = [] + try: + cmd(command_context, tests=[EXAMPLE_TEST]) + finally: + sys.meta_path = old + + +def fzf_selection(*args): + try: + full_path = args[-1][-1]["path"] + except IndexError: + return [] + + path = Path(full_path.replace(str(ROOT), "")) + return [f"[bt][sometag] {path.name} in {path.parent}"] + + +def resolve_tests(tests=None): + if tests is None: + tests = [{"path": str(EXAMPLE_TEST)}] + + def _resolve(*args, **kw): + return tests + + return _resolve + + +@mock.patch("mozperftest.MachEnvironment", new=_TestMachEnvironment) +@mock.patch("mozbuild.base.MachCommandBase.activate_virtualenv") +@mock.patch("mozperftest.fzf.fzf.select", new=fzf_selection) +@mock.patch("moztest.resolve.TestResolver.resolve_tests", new=resolve_tests()) +def test_fzf_flavor(*mocked): + with running_on_try(False), _get_command() as ( + cmd, + command_context, + ): # , silence(): + cmd(command_context, flavor="desktop-browser") + + +@mock.patch("mozperftest.MachEnvironment", new=_TestMachEnvironment) +@mock.patch("mozbuild.base.MachCommandBase.activate_virtualenv") +@mock.patch("mozperftest.fzf.fzf.select", new=fzf_selection) +@mock.patch("moztest.resolve.TestResolver.resolve_tests", new=resolve_tests([])) +def test_fzf_nothing_selected(*mocked): + with running_on_try(False), _get_command() as (cmd, command_context), silence(): + cmd(command_context, flavor="desktop-browser") + + +@mock.patch("mozperftest.MachEnvironment", new=_TestMachEnvironment) +@mock.patch("mozbuild.base.MachCommandBase.activate_virtualenv") +@mock.patch("mozperftest.utils.run_python_script") +@mock.patch("mozperftest.utils.install_package") +def test_side_by_side(mock1, mock2, mock3, patched_mozperftest_tools): + with mock.patch( + "mozperftest.utils.create_path", return_value="fake_path" + ) as _, mock.patch( + "mozperftest.runner._create_artifacts_dir", return_value="fake_path" + ) as _, mock.patch( + "mozperftest.runner._save_params", return_value="fake_path" + ) as _: + with _get_tools_command() as (cmd, command_context), silence(command_context): + cmd(command_context) + patched_mozperftest_tools.run.assert_called() + + +@mock.patch("mozperftest.MachEnvironment", new=_TestMachEnvironment) +@mock.patch("mozbuild.base.MachCommandBase.activate_virtualenv") +@mock.patch("mozperftest.utils.run_python_script") +@mock.patch("mozperftest.utils.install_package") +def test_change_detector(mock1, mock2, mock3, patched_mozperftest_tools): + with mock.patch( + "mozperftest.utils.create_path", return_value="fake_path" + ) as _, mock.patch( + "mozperftest.runner._create_artifacts_dir", return_value="fake_path" + ) as _, mock.patch( + "mozperftest.runner._save_params", return_value="fake_path" + ) as _: + with _get_tools_command(tool="change-detector") as ( + cmd, + command_context, + ), silence(command_context): + cmd(command_context) + patched_mozperftest_tools.run.assert_called() + + +if __name__ == "__main__": + mozunit.main() diff --git a/python/mozperftest/mozperftest/tests/test_macos.py b/python/mozperftest/mozperftest/tests/test_macos.py new file mode 100644 index 0000000000..6999f4792d --- /dev/null +++ b/python/mozperftest/mozperftest/tests/test_macos.py @@ -0,0 +1,94 @@ +#!/usr/bin/env python +import os +import platform +import subprocess +from pathlib import Path +from unittest import mock + +import mozunit +import pytest + +from mozperftest.system.macos import MacosDevice +from mozperftest.tests.support import DMG, get_running_env + + +def run_proc(*args, **kw): + if args[0][1] == "attach": + where = args[0][4] + bindir = Path(where, "firefox.app", "Contents", "MacOS") + os.makedirs(str(bindir)) + firefox_bin = bindir / "firefox" + with firefox_bin.open("w") as f: + f.write("OK") + + +def mock_calls(test): + # on macOS we don't mock the system calls + # so we're mounting for real using hdiutil + if platform.system() == "Darwin": + return test + + # on other platforms, we're unsing run_proc + @mock.patch("mozperftest.system.macos.MacosDevice._run_process", new=run_proc) + def wrapped(*args, **kw): + return test(*args, **kw) + + +@mock_calls +def test_mount_dmg(): + mach_cmd, metadata, env = get_running_env(browsertime_binary=str(DMG)) + device = MacosDevice(env, mach_cmd) + try: + device.run(metadata) + finally: + device.teardown() + + target = Path(DMG.parent, "firefox", "Contents", "MacOS", "firefox") + assert env.get_arg("browsertime-binary") == str(target) + + +def run_fail(cmd): + def _run_fail(self, args): + run_cmd = " ".join(args) + if cmd not in run_cmd: + run_proc(args) + return + raise subprocess.CalledProcessError(returncode=2, cmd=" ".join(args)) + + return _run_fail + + +@mock.patch("mozperftest.system.macos.MacosDevice._run_process", new=run_fail("attach")) +def test_attach_fails(): + mach_cmd, metadata, env = get_running_env(browsertime_binary=str(DMG)) + device = MacosDevice(env, mach_cmd) + + with pytest.raises(subprocess.CalledProcessError): + try: + device.run(metadata) + finally: + device.teardown() + + +@mock.patch("mozperftest.system.macos.MacosDevice._run_process", new=run_fail("detach")) +def test_detach_fails(): + mach_cmd, metadata, env = get_running_env(browsertime_binary=str(DMG)) + device = MacosDevice(env, mach_cmd) + # detaching will be swallowed + try: + device.run(metadata) + finally: + device.teardown() + + target = Path(DMG.parent, "firefox", "Contents", "MacOS", "firefox") + assert env.get_arg("browsertime-binary") == str(target) + + +def test_no_op(): + mach_cmd, metadata, env = get_running_env(browsertime_binary="notadmg") + device = MacosDevice(env, mach_cmd) + device.run(metadata) + + +if __name__ == "__main__": + mozunit.main() diff --git a/python/mozperftest/mozperftest/tests/test_metrics_utils.py b/python/mozperftest/mozperftest/tests/test_metrics_utils.py new file mode 100644 index 0000000000..0e6bdd71ac --- /dev/null +++ b/python/mozperftest/mozperftest/tests/test_metrics_utils.py @@ -0,0 +1,97 @@ +#!/usr/bin/env python +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at http://mozilla.org/MPL/2.0/. +import json + +import mozunit +import pytest + +from mozperftest.metrics.utils import metric_fields, open_file +from mozperftest.tests.support import temp_file + + +def test_open_file(): + data = json.dumps({"1": 2}) + + with temp_file(name="data.json", content=data) as f: + res = open_file(f) + assert res == {"1": 2} + + with temp_file(name="data.txt", content="yeah") as f: + assert open_file(f) == "yeah" + + +def test_metric_fields_old_format(): + assert metric_fields("firstPaint") == {"name": "firstPaint"} + + +@pytest.mark.parametrize( + "metrics, expected", + [ + [ + "name:foo,extraOptions:bar", + {"name": "foo", "extraOptions": "bar"}, + ], + ["name:foo", {"name": "foo"}], + ], +) +def test_metric_fields_simple(metrics, expected): + assert metric_fields(metrics) == expected + + +@pytest.mark.parametrize( + "metrics, expected", + [ + [ + "name:foo,extraOptions:['1', '2', '3', 2]", + {"name": "foo", "extraOptions": ["1", "2", "3", 2]}, + ], + [ + """name:foo,extraOptions:['1', '2', '3', 2, "3", "hello,world"] """, + {"name": "foo", "extraOptions": ["1", "2", "3", 2, "3", "hello,world"]}, + ], + [ + """name:foo,extraOptions:['1', '2', '3', 2, "3", "hello,world"],""" + """alertThreshold:['1',2,"hello"] """, + { + "name": "foo", + "extraOptions": ["1", "2", "3", 2, "3", "hello,world"], + "alertThreshold": ["1", 2, "hello"], + }, + ], + [ + """name:foo,extraOptions:['1', '2', '3', 2, "3", "hello,world"],""" + """value:foo,alertThreshold:['1',2,"hello"],framework:99 """, + { + "name": "foo", + "extraOptions": ["1", "2", "3", 2, "3", "hello,world"], + "alertThreshold": ["1", 2, "hello"], + "value": "foo", + "framework": 99, + }, + ], + ], +) +def test_metric_fields_complex(metrics, expected): + assert metric_fields(metrics) == expected + + +@pytest.mark.parametrize( + "metrics", + [ + """name:foo,extraOptions:['1', '2', '3', 2, "3", "hello,world"],""" + """value:foo,alertThreshold:['1',2,"hello"],framework:99,""" + """shouldAlert:[99,100,["hello", "world"],0] """, + """name:foo,extraOptions:['1', '2', '3', 2, "3", "hello,world"],""" + """value:foo,alertThreshold:['1',2,"hello"],framework:99,""" + """shouldAlert:[99,100,["hello:", "world:"],0] """, + ], +) +def test_metric_fields_complex_failures(metrics): + with pytest.raises(Exception): + metric_fields(metrics) + + +if __name__ == "__main__": + mozunit.main() diff --git a/python/mozperftest/mozperftest/tests/test_mochitest.py b/python/mozperftest/mozperftest/tests/test_mochitest.py new file mode 100644 index 0000000000..93869c5f25 --- /dev/null +++ b/python/mozperftest/mozperftest/tests/test_mochitest.py @@ -0,0 +1,221 @@ +import os +import shutil +from unittest import mock + +import pytest + +from mozperftest.environment import SYSTEM, TEST +from mozperftest.test.mochitest import MissingMochitestInformation +from mozperftest.tests.support import ( + EXAMPLE_MOCHITEST_TEST, + get_running_env, +) + + +def running_env(**kw): + return get_running_env(flavor="mochitest", **kw) + + +@mock.patch("mozperftest.test.mochitest.ON_TRY", new=False) +@mock.patch("mozperftest.utils.ON_TRY", new=False) +def test_mochitest_metrics(*mocked): + mach_cmd, metadata, env = running_env( + tests=[str(EXAMPLE_MOCHITEST_TEST)], + mochitest_extra_args=[], + ) + + sys = env.layers[SYSTEM] + mochitest = env.layers[TEST] + + with mock.patch("moztest.resolve.TestResolver") as test_resolver_mock, mock.patch( + "mozperftest.test.functionaltestrunner.load_class_from_path" + ) as load_class_path_mock, mock.patch( + "mozperftest.test.functionaltestrunner.mozlog.formatters.MachFormatter.__new__" + ) as formatter_mock, mock.patch( + "mozperftest.test.mochitest.install_requirements_file" + ): + formatter_mock.return_value = lambda x: x + + def test_print(*args, **kwargs): + log_processor = kwargs.get("custom_handler") + log_processor.__call__('perfMetrics | { "fake": 0 }') + return 0 + + test_mock = mock.MagicMock() + test_mock.test = test_print + load_class_path_mock.return_value = test_mock + + test_resolver_mock.resolve_metadata.return_value = (1, 1) + mach_cmd._spawn.return_value = test_resolver_mock + try: + with sys as s, mochitest as m: + m(s(metadata)) + finally: + shutil.rmtree(mach_cmd._mach_context.state_dir) + + res = metadata.get_results() + assert len(res) == 1 + assert res[0]["name"] == "test_mochitest.html" + results = res[0]["results"] + + assert results[0]["name"] == "fake" + assert results[0]["values"] == [0] + + +@mock.patch( + # This mock.patch actually patches the mochitest run_test_harness function + "runtests.run_test_harness" +) +@mock.patch( + # This mock.patch causes mochitest's runtests to be imported instead of + # others in the remote_run + "mochitest.runtests.run_test_harness", + new=mock.MagicMock(), +) +@mock.patch( + "mozperftest.test.functionaltestrunner.mozlog.formatters.MachFormatter.__new__" +) +@mock.patch( + "mozperftest.test.mochitest.install_requirements_file", new=mock.MagicMock() +) +@mock.patch( + "mozperftest.test.functionaltestrunner.load_class_from_path", new=mock.MagicMock() +) +@mock.patch("moztest.resolve.TestResolver", new=mock.MagicMock()) +@mock.patch("mozperftest.test.mochitest.ON_TRY", new=True) +@mock.patch("mozperftest.utils.ON_TRY", new=True) +@mock.patch("mochitest.mochitest_options.MochitestArgumentParser", new=mock.MagicMock()) +@mock.patch("manifestparser.TestManifest", new=mock.MagicMock()) +def test_mochitest_ci_metrics(formatter_mock, run_test_harness_mock): + if not os.getenv("MOZ_FETCHES_DIR"): + os.environ["MOZ_FETCHES_DIR"] = "fake-path" + mach_cmd, metadata, env = running_env( + tests=[str(EXAMPLE_MOCHITEST_TEST)], + mochitest_extra_args=[], + mochitest_manifest="fake.ini", + mochitest_manifest_flavor="mocha", + ) + + system = env.layers[SYSTEM] + mochitest = env.layers[TEST] + + formatter_mock.return_value = lambda x: x + + def test_print(*args, **kwargs): + print('perfMetrics | { "fake": 0 }') + return 0 + + run_test_harness_mock.side_effect = test_print + try: + with system as s, mochitest as m: + m(s(metadata)) + finally: + shutil.rmtree(mach_cmd._mach_context.state_dir) + + res = metadata.get_results() + assert len(res) == 1 + assert res[0]["name"] == "test_mochitest.html" + results = res[0]["results"] + + assert results[0]["name"] == "fake" + assert results[0]["values"] == [0] + + +@mock.patch( + # This mock.patch actually patches the mochitest run_test_harness function + "runtests.run_test_harness", + new=mock.MagicMock(), +) +@mock.patch( + # This mock.patch causes mochitest's runtests to be imported instead of + # others in the remote_run + "mochitest.runtests.run_test_harness", + new=mock.MagicMock(), +) +@mock.patch( + "mozperftest.test.functionaltestrunner.mozlog.formatters.MachFormatter.__new__", + new=mock.MagicMock(), +) +@mock.patch( + "mozperftest.test.mochitest.install_requirements_file", new=mock.MagicMock() +) +@mock.patch( + "mozperftest.test.functionaltestrunner.load_class_from_path", new=mock.MagicMock() +) +@mock.patch("moztest.resolve.TestResolver", new=mock.MagicMock()) +@mock.patch("mozperftest.test.mochitest.ON_TRY", new=True) +@mock.patch("mozperftest.utils.ON_TRY", new=True) +@mock.patch("mochitest.mochitest_options.MochitestArgumentParser", new=mock.MagicMock()) +@mock.patch("manifestparser.TestManifest", new=mock.MagicMock()) +def test_mochitest_ci_metrics_missing_manifest(): + if not os.getenv("MOZ_FETCHES_DIR"): + os.environ["MOZ_FETCHES_DIR"] = "fake-path" + mach_cmd, metadata, env = running_env( + tests=[str(EXAMPLE_MOCHITEST_TEST)], + mochitest_extra_args=[], + mochitest_manifest_flavor="mocha", + ) + + system = env.layers[SYSTEM] + mochitest = env.layers[TEST] + + try: + with pytest.raises(MissingMochitestInformation) as exc: + with system as s, mochitest as m: + m(s(metadata)) + assert "manifest" in exc.value.args[0] + finally: + shutil.rmtree(mach_cmd._mach_context.state_dir) + + res = metadata.get_results() + assert len(res) == 0 + + +@mock.patch( + # This mock.patch actually patches the mochitest run_test_harness function + "runtests.run_test_harness", + new=mock.MagicMock(), +) +@mock.patch( + # This mock.patch causes mochitest's runtests to be imported instead of + # others in the remote_run + "mochitest.runtests.run_test_harness", + new=mock.MagicMock(), +) +@mock.patch( + "mozperftest.test.functionaltestrunner.mozlog.formatters.MachFormatter.__new__", + new=mock.MagicMock(), +) +@mock.patch( + "mozperftest.test.mochitest.install_requirements_file", new=mock.MagicMock() +) +@mock.patch( + "mozperftest.test.functionaltestrunner.load_class_from_path", new=mock.MagicMock() +) +@mock.patch("moztest.resolve.TestResolver", new=mock.MagicMock()) +@mock.patch("mozperftest.test.mochitest.ON_TRY", new=True) +@mock.patch("mozperftest.utils.ON_TRY", new=True) +@mock.patch("mochitest.mochitest_options.MochitestArgumentParser", new=mock.MagicMock()) +@mock.patch("manifestparser.TestManifest", new=mock.MagicMock()) +def test_mochitest_ci_metrics_missing_flavor(): + if not os.getenv("MOZ_FETCHES_DIR"): + os.environ["MOZ_FETCHES_DIR"] = "fake-path" + mach_cmd, metadata, env = running_env( + tests=[str(EXAMPLE_MOCHITEST_TEST)], + mochitest_extra_args=[], + mochitest_manifest="fake.ini", + ) + + system = env.layers[SYSTEM] + mochitest = env.layers[TEST] + + try: + with pytest.raises(MissingMochitestInformation) as exc: + with system as s, mochitest as m: + m(s(metadata)) + assert "flavor" in exc.value.args[0] + finally: + shutil.rmtree(mach_cmd._mach_context.state_dir) + + res = metadata.get_results() + assert len(res) == 0 diff --git a/python/mozperftest/mozperftest/tests/test_notebookupload.py b/python/mozperftest/mozperftest/tests/test_notebookupload.py new file mode 100644 index 0000000000..c05942c1eb --- /dev/null +++ b/python/mozperftest/mozperftest/tests/test_notebookupload.py @@ -0,0 +1,123 @@ +#!/usr/bin/env python +from unittest import mock + +import mozunit +import pytest + +from mozperftest.environment import METRICS +from mozperftest.metrics.utils import metric_fields +from mozperftest.tests.support import BT_DATA, EXAMPLE_TEST, get_running_env, temp_file +from mozperftest.utils import silence + + +def setup_env(options): + mach_cmd, metadata, env = get_running_env(**options) + runs = [] + + def _run_process(*args, **kw): + runs.append((args, kw)) + + mach_cmd.run_process = _run_process + metrics = env.layers[METRICS] + env.set_arg("tests", [EXAMPLE_TEST]) + metadata.add_result({"results": str(BT_DATA), "name": "browsertime"}) + return metrics, metadata, env + + +@pytest.mark.parametrize("no_filter", [True, False]) +@mock.patch("mozperftest.metrics.notebookupload.PerftestNotebook") +@mock.patch("mozperftest.test.BrowsertimeRunner", new=mock.MagicMock()) +def test_notebookupload_with_filter(notebook, no_filter): + options = { + "notebook-metrics": [], + "notebook-prefix": "", + "notebook": True, + "notebook-analysis": ["scatterplot"], + "notebook-analyze-strings": no_filter, + } + + metrics, metadata, env = setup_env(options) + + with temp_file() as output: + env.set_arg("output", output) + with metrics as m, silence(): + m(metadata) + + if no_filter: + args, kwargs = notebook.call_args_list[0] + assert type(kwargs["data"][0]["data"][0]["value"]) == str + else: + for call in notebook.call_args_list: + args, kwargs = call + for a in args: + for data_dict in a: + for data in data_dict["data"]: + assert type(data["value"]) in (int, float) + + notebook.assert_has_calls( + [mock.call().post_to_iodide(["scatterplot"], start_local_server=True)] + ) + + +@pytest.mark.parametrize("stats", [False, True]) +@mock.patch("mozperftest.metrics.notebookupload.PerftestNotebook") +@mock.patch("mozperftest.test.BrowsertimeRunner", new=mock.MagicMock()) +def test_compare_to_success(notebook, stats): + options = { + "notebook-metrics": [metric_fields("firstPaint")], + "notebook-prefix": "", + "notebook-analysis": [], + "notebook": True, + "notebook-compare-to": [str(BT_DATA.parent)], + "notebook-stats": stats, + } + + metrics, metadata, env = setup_env(options) + + with temp_file() as output: + env.set_arg("output", output) + with metrics as m, silence(): + m(metadata) + + args, kwargs = notebook.call_args_list[0] + + if not stats: + assert len(kwargs["data"]) == 2 + assert kwargs["data"][0]["name"] == "browsertime- newest run" + assert kwargs["data"][1]["name"] == "browsertime-results" + else: + assert any("statistics" in element["subtest"] for element in kwargs["data"]) + + notebook.assert_has_calls( + [mock.call().post_to_iodide(["compare"], start_local_server=True)] + ) + + +@pytest.mark.parametrize("filepath", ["invalidPath", str(BT_DATA)]) +@mock.patch("mozperftest.metrics.notebookupload.PerftestNotebook") +@mock.patch("mozperftest.test.BrowsertimeRunner", new=mock.MagicMock()) +def test_compare_to_invalid_parameter(notebook, filepath): + options = { + "notebook-metrics": [metric_fields("firstPaint")], + "notebook-prefix": "", + "notebook-analysis": [], + "notebook": True, + "notebook-compare-to": [filepath], + } + + metrics, metadata, env = setup_env(options) + + with pytest.raises(Exception) as einfo: + with temp_file() as output: + env.set_arg("output", output) + with metrics as m, silence(): + m(metadata) + + if filepath == "invalidPath": + assert "does not exist" in str(einfo.value) + else: + assert "not a directory" in str(einfo.value) + + +if __name__ == "__main__": + mozunit.main() diff --git a/python/mozperftest/mozperftest/tests/test_perfherder.py b/python/mozperftest/mozperftest/tests/test_perfherder.py new file mode 100644 index 0000000000..7093d6d701 --- /dev/null +++ b/python/mozperftest/mozperftest/tests/test_perfherder.py @@ -0,0 +1,620 @@ +#!/usr/bin/env python +import json +import pathlib + +import jsonschema +import mozunit +import pytest + +from mozperftest.environment import METRICS +from mozperftest.metrics.exceptions import PerfherderValidDataError +from mozperftest.metrics.notebook.transforms.single_json import SingleJsonRetriever +from mozperftest.metrics.utils import metric_fields +from mozperftest.tests.support import ( + BT_DATA, + EXAMPLE_TEST, + HERE, + get_running_env, + temp_file, +) +from mozperftest.utils import silence, temp_dir + + +class PerfherderTransformer(SingleJsonRetriever): + """Used for testing the summarization transforms.""" + + def summary(self, suite): + return 0 + + def subtest_summary(self, subtest): + return -1 + + +def setup_env(options): + mach_cmd, metadata, env = get_running_env(**options) + runs = [] + + def _run_process(*args, **kw): + runs.append((args, kw)) + + mach_cmd.run_process = _run_process + metrics = env.layers[METRICS] + env.set_arg("tests", [EXAMPLE_TEST]) + metadata.add_result({"results": str(BT_DATA), "name": "browsertime"}) + return metrics, metadata, env + + +def test_perfherder(): + options = { + "perfherder": True, + "perfherder-stats": True, + "perfherder-prefix": "", + "perfherder-metrics": [metric_fields("firstPaint")], + "perfherder-timestamp": 1.0, + } + + metrics, metadata, env = setup_env(options) + + with temp_file() as output: + env.set_arg("output", output) + with metrics as m, silence(): + m(metadata) + output_file = metadata.get_output() + with open(output_file) as f: + output = json.loads(f.read()) + + # Check some metadata + assert output["application"]["name"] == "firefox" + assert output["framework"]["name"] == "mozperftest" + assert output["pushTimestamp"] == 1.0 + + # Check some numbers in our data + assert len(output["suites"]) == 1 + assert len(output["suites"][0]["subtests"]) == 10 + assert not any("value" in suite for suite in output["suites"]) + + # Check if only firstPaint metrics were obtained + for subtest in output["suites"][0]["subtests"]: + assert "firstPaint" in subtest["name"] + + +def test_perfherder_simple_names(): + options = { + "perfherder": True, + "perfherder-stats": True, + "perfherder-prefix": "", + "perfherder-metrics": [metric_fields("firstPaint"), metric_fields("resource")], + "perfherder-simplify-names": True, + "perfherder-simplify-exclude": ["statistics"], + } + + metrics, metadata, env = setup_env(options) + + with temp_file() as output: + env.set_arg("output", output) + with metrics as m, silence(): + m(metadata) + output_file = metadata.get_output() + with open(output_file) as f: + output = json.loads(f.read()) + + # Check some metadata + assert output["application"]["name"] == "firefox" + assert output["framework"]["name"] == "mozperftest" + + # Check some numbers in our data + assert len(output["suites"]) == 1 + assert "value" not in output["suites"][0] + assert any(r > 0 for r in output["suites"][0]["subtests"][0]["replicates"]) + + # Check if only firstPaint/resource metrics were obtained and + # that simplifications occurred + assert all( + [ + "firstPaint" in subtest["name"] + or "duration" in subtest["name"] + or "count" in subtest["name"] + for subtest in output["suites"][0]["subtests"] + ] + ) + + found_all = {"firstPaint": False, "count": False, "duration": False} + for subtest in output["suites"][0]["subtests"]: + if subtest["name"] in found_all: + found_all[subtest["name"]] = True + continue + assert any([name in subtest["name"] for name in found_all.keys()]) + # Statistics are not simplified so any metric that isn't + # in the list of known metrics must be a statistic + assert "statistics" in subtest["name"] + + for entry, value in found_all.items(): + assert found_all[entry], f"Failed finding metric simplification for {entry}" + + # Statistics are not simplified by default + assert ( + len( + [ + subtest + for subtest in output["suites"][0]["subtests"] + if "statistics" in subtest["name"] + ] + ) + == 27 + ) + assert ( + len( + [ + subtest + for subtest in output["suites"][0]["subtests"] + if "statistics" not in subtest["name"] + ] + ) + == 3 + ) + + +def test_perfherder_names_simplified_with_no_exclusions(): + options = { + "perfherder": True, + "perfherder-stats": True, + "perfherder-prefix": "", + "perfherder-metrics": [metric_fields("firstPaint"), metric_fields("resource")], + "perfherder-simplify-names": True, + } + + metrics, metadata, env = setup_env(options) + + with temp_file() as output: + env.set_arg("output", output) + with metrics as m, silence(): + m(metadata) + output_file = metadata.get_output() + with open(output_file) as f: + output = json.loads(f.read()) + + # Check some metadata + assert output["application"]["name"] == "firefox" + assert output["framework"]["name"] == "mozperftest" + + # Check some numbers in our data + assert len(output["suites"]) == 1 + assert "value" not in output["suites"][0] + assert any(r > 0 for r in output["suites"][0]["subtests"][0]["replicates"]) + + # In this case, some metrics will be called "median", "mean", etc. + # since those are the simplifications of the first statistics entries + # that were found. + assert not all( + [ + "firstPaint" in subtest["name"] + or "duration" in subtest["name"] + or "count" in subtest["name"] + for subtest in output["suites"][0]["subtests"] + ] + ) + + found_all = {"firstPaint": False, "count": False, "duration": False} + for subtest in output["suites"][0]["subtests"]: + if subtest["name"] in found_all: + found_all[subtest["name"]] = True + continue + + for entry, value in found_all.items(): + assert found_all[entry], f"Failed finding metric simplification for {entry}" + + # Only a portion of the metrics should still have statistics in + # their name due to a naming conflict that only emits a warning + assert ( + len( + [ + subtest + for subtest in output["suites"][0]["subtests"] + if "statistics" in subtest["name"] + ] + ) + == 18 + ) + assert ( + len( + [ + subtest + for subtest in output["suites"][0]["subtests"] + if "statistics" not in subtest["name"] + ] + ) + == 12 + ) + + +def test_perfherder_with_extra_options(): + options = { + "perfherder": True, + "perfherder-stats": True, + "perfherder-prefix": "", + "perfherder-metrics": [ + metric_fields("name:firstPaint,extraOptions:['option']"), + metric_fields("name:resource,extraOptions:['second-option']"), + ], + } + + metrics, metadata, env = setup_env(options) + + with temp_file() as output: + env.set_arg("output", output) + with metrics as m, silence(): + m(metadata) + output_file = metadata.get_output() + with open(output_file) as f: + output = json.loads(f.read()) + + assert len(output["suites"]) == 1 + assert sorted(output["suites"][0]["extraOptions"]) == sorted( + ["option", "second-option"] + ) + + +def test_perfherder_with_alerting(): + options = { + "perfherder": True, + "perfherder-stats": True, + "perfherder-prefix": "", + "perfherder-metrics": [ + metric_fields("name:firstPaint,extraOptions:['option']"), + metric_fields("name:resource,shouldAlert:True"), + ], + } + + metrics, metadata, env = setup_env(options) + + with temp_file() as output: + env.set_arg("output", output) + with metrics as m, silence(): + m(metadata) + output_file = metadata.get_output() + with open(output_file) as f: + output = json.loads(f.read()) + + assert len(output["suites"]) == 1 + assert sorted(output["suites"][0]["extraOptions"]) == sorted(["option"]) + assert all( + [ + subtest["shouldAlert"] + for subtest in output["suites"][0]["subtests"] + if "resource" in subtest["name"] + ] + ) + assert not all( + [ + subtest["shouldAlert"] + for subtest in output["suites"][0]["subtests"] + if "firstPaint" in subtest["name"] + ] + ) + + +def test_perfherder_with_subunits(): + options = { + "perfherder": True, + "perfherder-stats": True, + "perfherder-prefix": "", + "perfherder-metrics": [ + metric_fields("name:firstPaint,extraOptions:['option']"), + metric_fields("name:resource,shouldAlert:True,unit:a-unit"), + ], + } + + metrics, metadata, env = setup_env(options) + + with temp_file() as output: + env.set_arg("output", output) + with metrics as m, silence(): + m(metadata) + output_file = metadata.get_output() + with open(output_file) as f: + output = json.loads(f.read()) + + assert len(output["suites"]) == 1 + assert all( + [ + subtest["unit"] == "a-unit" + for subtest in output["suites"][0]["subtests"] + if "resource" in subtest["name"] + ] + ) + assert all( + [ + subtest["unit"] == "ms" + for subtest in output["suites"][0]["subtests"] + if "firstPaint" in subtest["name"] + ] + ) + + +def test_perfherder_with_supraunits(): + options = { + "perfherder": True, + "perfherder-stats": True, + "perfherder-prefix": "", + "perfherder-metrics": [ + metric_fields("name:browsertime,unit:new-unit"), + metric_fields("name:firstPaint,extraOptions:['option']"), + metric_fields("name:resource,shouldAlert:True,unit:a-unit"), + ], + } + + metrics, metadata, env = setup_env(options) + + with temp_file() as output: + env.set_arg("output", output) + with metrics as m, silence(): + m(metadata) + output_file = metadata.get_output() + with open(output_file) as f: + output = json.loads(f.read()) + + assert len(output["suites"]) == 1 + assert output["suites"][0]["unit"] == "new-unit" + assert all( + [ + subtest["unit"] == "a-unit" + for subtest in output["suites"][0]["subtests"] + if "resource" in subtest["name"] + ] + ) + assert all( + [ + subtest["unit"] == "new-unit" + for subtest in output["suites"][0]["subtests"] + if "firstPaint" in subtest["name"] + ] + ) + + +def test_perfherder_transforms(): + options = { + "perfherder": True, + "perfherder-stats": True, + "perfherder-prefix": "", + "perfherder-metrics": [metric_fields("name:firstPaint")], + "perfherder-transformer": "mozperftest.tests.test_perfherder:PerfherderTransformer", + } + + metrics, metadata, env = setup_env(options) + + with temp_file() as output: + env.set_arg("output", output) + with metrics as m, silence(): + m(metadata) + output_file = metadata.get_output() + with open(output_file) as f: + output = json.loads(f.read()) + + assert len(output["suites"]) == 1 + assert output["suites"][0]["unit"] == "ms" + assert all([subtest["value"] == -1 for subtest in output["suites"][0]["subtests"]]) + assert "value" in output["suites"][0] + assert output["suites"][0]["value"] == 0 + + +def test_perfherder_logcat(): + options = { + "perfherder": True, + "perfherder-prefix": "", + "perfherder-metrics": [metric_fields("TimeToDisplayed")], + } + + metrics, metadata, env = setup_env(options) + metadata.clear_results() + + def processor(groups): + """Parses the time from a displayed time string into milliseconds.""" + return (float(groups[0]) * 1000) + float(groups[1]) + + re_w_group = r".*Displayed.*org\.mozilla\.fennec_aurora.*\+([\d]+)s([\d]+)ms.*" + metadata.add_result( + { + "results": str(HERE / "data" / "home_activity.txt"), + "transformer": "LogCatTimeTransformer", + "transformer-options": { + "first-timestamp": re_w_group, + "processor": processor, + "transform-subtest-name": "TimeToDisplayed", + }, + "name": "LogCat", + } + ) + + with temp_file() as output: + env.set_arg("output", output) + with metrics as m: # , silence(): + m(metadata) + output_file = metadata.get_output() + with open(output_file) as f: + output = json.loads(f.read()) + + # Check some metadata + assert output["application"]["name"] == "firefox" + assert output["framework"]["name"] == "mozperftest" + + # Check some numbers in our data + assert len(output["suites"]) == 1 + assert len(output["suites"][0]["subtests"]) == 1 + assert "value" not in output["suites"][0] + assert any(r > 0 for r in output["suites"][0]["subtests"][0]["replicates"]) + + # Check if only the TimeToDisplayd metric was obtained + for subtest in output["suites"][0]["subtests"]: + assert "TimeToDisplayed" in subtest["name"] + + +def test_perfherder_validation_failure(): + options = {"perfherder": True, "perfherder-prefix": ""} + + metrics, metadata, env = setup_env(options) + + # Perfherder schema has limits on min/max data values. Having + # no metrics in the options will cause a failure because of the + # timestamps that are picked up from browsertime. + with pytest.raises(jsonschema.ValidationError): + with temp_dir() as output: + env.set_arg("output", output) + with metrics as m, silence(): + m(metadata) + + +def test_perfherder_missing_data_failure(): + options = {"perfherder": True, "perfherder-prefix": ""} + + metrics, metadata, env = setup_env(options) + metadata.clear_results() + + with temp_dir() as tmpdir: + nodatajson = pathlib.Path(tmpdir, "baddata.json") + with nodatajson.open("w") as f: + json.dump({"bad data": "here"}, f) + + metadata.add_result({"results": str(nodatajson), "name": "browsertime"}) + + with pytest.raises(PerfherderValidDataError): + with temp_file() as output: + env.set_arg("output", output) + with metrics as m, silence(): + m(metadata) + + +def test_perfherder_metrics_filtering(): + options = { + "perfherder": True, + "perfherder-prefix": "", + "perfherder-metrics": [metric_fields("I shouldn't match a metric")], + } + + metrics, metadata, env = setup_env(options) + metadata.clear_results() + + with temp_dir() as tmpdir: + nodatajson = pathlib.Path(tmpdir, "nodata.json") + with nodatajson.open("w") as f: + json.dump({}, f) + + metadata.add_result({"results": str(nodatajson), "name": "browsertime"}) + + with temp_dir() as output: + env.set_arg("output", output) + with metrics as m, silence(): + m(metadata) + + assert not pathlib.Path(output, "perfherder-data.json").exists() + + +def test_perfherder_exlude_stats(): + options = { + "perfherder": True, + "perfherder-prefix": "", + "perfherder-metrics": [metric_fields("firstPaint")], + } + + metrics, metadata, env = setup_env(options) + + with temp_file() as output: + env.set_arg("output", output) + with metrics as m, silence(): + m(metadata) + output_file = metadata.get_output() + with open(output_file) as f: + output = json.loads(f.read()) + + # Check some numbers in our data + assert len(output["suites"]) == 1 + assert len(output["suites"][0]["subtests"]) == 1 + assert "value" not in output["suites"][0] + assert any(r > 0 for r in output["suites"][0]["subtests"][0]["replicates"]) + + # Check if only firstPaint metric was obtained with 2 replicates + assert len(output["suites"][0]["subtests"][0]["replicates"]) == 2 + assert ( + "browserScripts.timings.firstPaint" + == output["suites"][0]["subtests"][0]["name"] + ) + + +def test_perfherder_app_name(): + options = { + "perfherder": True, + "perfherder-prefix": "", + "perfherder-app": "fenix", + "perfherder-metrics": [metric_fields("firstPaint")], + } + + metrics, metadata, env = setup_env(options) + + with temp_file() as output: + env.set_arg("output", output) + with metrics as m, silence(): + m(metadata) + output_file = metadata.get_output() + with open(output_file) as f: + output = json.loads(f.read()) + + # Make sure that application setting is correct + assert output["application"]["name"] == "fenix" + assert "version" not in output["application"] + + +def test_perfherder_split_by(): + options = { + "perfherder": True, + "perfherder-prefix": "", + "perfherder-app": "fenix", + "perfherder-metrics": [metric_fields("firstPaint")], + "perfherder-split-by": "browserScripts.pageinfo.url", + } + + metrics, metadata, env = setup_env(options) + + with temp_file() as output: + env.set_arg("output", output) + with metrics as m, silence(): + m(metadata) + output_file = metadata.get_output() + with open(output_file) as f: + output = json.loads(f.read()) + + # Sanity check + assert len(output["suites"]) == 1 + + # We should have 2 subtests (1 per URL) + assert len(output["suites"][0]["subtests"]) == 2 + + # Check to make sure that they were properly split + names = [subtest["name"] for subtest in output["suites"][0]["subtests"]] + assert sorted(names) == [ + "browserScripts.timings.firstPaint https://www.mozilla.org/en-US/", + "browserScripts.timings.firstPaint https://www.sitespeed.io/", + ] + for i in range(2): + assert len(output["suites"][0]["subtests"][i]["replicates"]) == 1 + + +def test_perfherder_bad_app_name(): + options = { + "perfherder": True, + "perfherder-prefix": "", + "perfherder-app": "this is not an app", + "perfherder-metrics": [metric_fields("firstPaint")], + } + + metrics, metadata, env = setup_env(options) + + # This will raise an error because the options method + # we use in tests skips the `choices` checks. + with pytest.raises(jsonschema.ValidationError): + with temp_file() as output: + env.set_arg("output", output) + with metrics as m, silence(): + m(metadata) + + +if __name__ == "__main__": + mozunit.main() diff --git a/python/mozperftest/mozperftest/tests/test_perftestetl.py b/python/mozperftest/mozperftest/tests/test_perftestetl.py new file mode 100644 index 0000000000..2c08179293 --- /dev/null +++ b/python/mozperftest/mozperftest/tests/test_perftestetl.py @@ -0,0 +1,106 @@ +import json +import pathlib + +import mozunit +import pytest + +from mozperftest.metrics.notebook.constant import Constant +from mozperftest.metrics.notebook.transformer import Transformer +from mozperftest.metrics.notebook.transforms.single_json import SingleJsonRetriever + + +def test_init(ptetls): + for ptetl in ptetls.values(): + assert isinstance(ptetl.fmt_data, dict) + assert isinstance(ptetl.file_groups, dict) + assert isinstance(ptetl.config, dict) + assert isinstance(ptetl.sort_files, bool) + assert isinstance(ptetl.const, Constant) + assert isinstance(ptetl.transformer, Transformer) + + +def test_parse_file_grouping(ptetls): + def _check_files_created(ptetl, expected_files): + actual_files = set(ptetl.parse_file_grouping(expected_files)) + expected_files = set(expected_files) + + # Check all parsed files are regular files. + assert all([pathlib.Path(file).is_file for file in actual_files]) + # Check parse_file_grouping function returns correct result. + assert actual_files - expected_files == set() + + # If file_grouping is a list of files. + ptetl = ptetls["ptetl_list"] + expected_files = ptetl.file_groups["group_1"] + _check_files_created(ptetl, expected_files) + + # If file_grouping is a directory string. + ptetl = ptetls["ptetl_str"] + expected_path = ptetl.file_groups["group_1"] + expected_files = [ + f.resolve().as_posix() for f in pathlib.Path(expected_path).iterdir() + ] + _check_files_created(ptetl, expected_files) + + +def test_process(ptetls, files): + # Temporary resource files. + files, output = files["resources"], files["output"] + file_1 = files["file_1"] + file_2 = files["file_2"] + + # Create expected output. + expected_output = [ + { + "data": [ + {"value": 101, "xaxis": 1, "file": file_1}, + {"value": 102, "xaxis": 1, "file": file_1}, + {"value": 103, "xaxis": 1, "file": file_1}, + {"value": 201, "xaxis": 2, "file": file_2}, + {"value": 202, "xaxis": 2, "file": file_2}, + {"value": 203, "xaxis": 2, "file": file_2}, + ], + "name": "group_1", + "subtest": "browserScripts.timings.firstPaint", + } + ] + + ptetl = ptetls["ptetl_str"] + + # Set a custom transformer. + ptetl.transformer = Transformer([], SingleJsonRetriever()) + + # Create expected result. + expected_result = { + "data": expected_output, + "file-output": output, + } + + # Check return value. + actual_result = ptetl.process() + assert actual_result == expected_result + + # Check output file. + with pathlib.Path(output).open() as f: + actual_output = json.load(f) + + assert expected_output == actual_output + + +def test_process_fail_artifact_downloading(ptetls, files): + ptetl = ptetls["ptetl_list"] + ptetl.file_groups = {"group-name": {"artifact_downloader_setting": False}} + + # Set a custom transformer. + ptetl.transformer = Transformer([], SingleJsonRetriever()) + with pytest.raises(Exception) as exc_info: + ptetl.process() + + assert ( + str(exc_info.value) + == "Artifact downloader tooling is disabled for the time being." + ) + + +if __name__ == "__main__": + mozunit.main() diff --git a/python/mozperftest/mozperftest/tests/test_perftestnotebook.py b/python/mozperftest/mozperftest/tests/test_perftestnotebook.py new file mode 100644 index 0000000000..58debe9343 --- /dev/null +++ b/python/mozperftest/mozperftest/tests/test_perftestnotebook.py @@ -0,0 +1,75 @@ +#!/usr/bin/env python +from pathlib import Path +from unittest import mock + +import mozunit +import pytest + +from mozperftest.metrics.notebook.constant import Constant + + +def test_init(ptnb, standarized_data): + assert isinstance(ptnb.data, dict) + assert isinstance(ptnb.const, Constant) + + +def test_get_notebook_section(ptnb): + func = "scatterplot" + with (ptnb.const.here / "notebook-sections" / func).open() as f: + assert ptnb.get_notebook_section(func) == f.read() + + +def test_get_notebook_section_unknown_analysis(ptnb): + func = "unknown" + assert ptnb.get_notebook_section(func) == "" + + +@pytest.mark.parametrize("analysis", [["scatterplot"], None]) +def test_post_to_iodide(ptnb, standarized_data, analysis): + opener = mock.mock_open() + + def mocked_open(self, *args, **kwargs): + return opener(self, *args, **kwargs) + + with mock.patch.object(Path, "open", mocked_open), mock.patch( + "mozperftest.metrics.notebook.perftestnotebook.webbrowser.open_new_tab" + ) as browser, mock.patch( + "mozperftest.metrics.notebook.perftestnotebook.HTTPServer" + ) as server: + ptnb.post_to_iodide(analysis=analysis) + + list_of_calls = opener.mock_calls + + header_path = ptnb.const.here / "notebook-sections" / "header" + assert mock.call(header_path) in list_of_calls + index1 = list_of_calls.index(mock.call(header_path)) + assert list_of_calls[index1 + 2] == mock.call().read() + + template_upload_file_path = ptnb.const.here / "template_upload_file.html" + assert mock.call(template_upload_file_path) in list_of_calls + index2 = list_of_calls.index(mock.call(template_upload_file_path)) + assert list_of_calls[index2 + 2] == mock.call().read() + + upload_file_path = ptnb.const.here / "upload_file.html" + assert mock.call(upload_file_path, "w") in list_of_calls + index3 = list_of_calls.index(mock.call(upload_file_path, "w")) + assert list_of_calls[index3 + 2] == mock.call().write("") + + assert index1 < index2 < index3 + + if analysis: + section_path = ptnb.const.here / "notebook-sections" / analysis[0] + assert mock.call(section_path) in list_of_calls + index4 = list_of_calls.index(mock.call(section_path)) + assert index1 < index4 < index2 + else: + assert list_of_calls.count(mock.call().__enter__()) == 3 + + browser.assert_called_with(str(upload_file_path)) + server.assert_has_calls( + [mock.call().serve_forever(), mock.call().server_close()] + ) + + +if __name__ == "__main__": + mozunit.main() diff --git a/python/mozperftest/mozperftest/tests/test_pingserver.py b/python/mozperftest/mozperftest/tests/test_pingserver.py new file mode 100644 index 0000000000..aa485f3a19 --- /dev/null +++ b/python/mozperftest/mozperftest/tests/test_pingserver.py @@ -0,0 +1,38 @@ +#!/usr/bin/env python +import json +import sys +from pathlib import Path + +import mozunit +import requests + +from mozperftest.system.pingserver import PingServer +from mozperftest.tests.support import get_running_env +from mozperftest.utils import ON_TRY, temp_dir + + +def test_ping_server(): + if ON_TRY and sys.platform == "darwin": + # macos slave in the CI are restricted + return + ping_data = {"some": "data"} + with temp_dir() as output: + args = {"verbose": True, "output": output} + mach_cmd, metadata, env = get_running_env(**args) + layer = PingServer(env, mach_cmd) + layer.setup() + try: + metadata = layer.run(metadata) + # simulates a ping + requests.post( + layer.endpoint + "/submit/something", data=json.dumps(ping_data) + ) + finally: + layer.teardown() + + with Path(output, "telemetry.json").open() as f: + assert json.loads(f.read()) == [ping_data] + + +if __name__ == "__main__": + mozunit.main() diff --git a/python/mozperftest/mozperftest/tests/test_profile.py b/python/mozperftest/mozperftest/tests/test_profile.py new file mode 100644 index 0000000000..fc0bf76eb8 --- /dev/null +++ b/python/mozperftest/mozperftest/tests/test_profile.py @@ -0,0 +1,52 @@ +#!/usr/bin/env python +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at http://mozilla.org/MPL/2.0/. +import os +import tempfile +from unittest import mock + +import mozunit + +from mozperftest.system.profile import Profile, ProfileNotFoundError +from mozperftest.tests.support import get_running_env + + +def test_profile(): + mach_cmd, metadata, env = get_running_env() + + with Profile(env, mach_cmd) as profile: + profile(metadata) + profile_dir = env.get_arg("profile-directory") + assert os.path.exists(profile_dir) + + assert not os.path.exists(profile_dir) + + +CALLS = [0] + + +def _return_profile(*args, **kw): + if CALLS[0] == 0: + CALLS[0] = 1 + raise ProfileNotFoundError() + + tempdir = tempfile.mkdtemp() + + return tempdir + + +@mock.patch("mozperftest.system.profile.get_profile", new=_return_profile) +def test_conditionedprofile(): + mach_cmd, metadata, env = get_running_env(profile_conditioned=True) + + with Profile(env, mach_cmd) as profile: + profile(metadata) + profile_dir = env.get_arg("profile-directory") + assert os.path.exists(profile_dir) + + assert not os.path.exists(profile_dir) + + +if __name__ == "__main__": + mozunit.main() diff --git a/python/mozperftest/mozperftest/tests/test_proxy.py b/python/mozperftest/mozperftest/tests/test_proxy.py new file mode 100644 index 0000000000..c971c88b38 --- /dev/null +++ b/python/mozperftest/mozperftest/tests/test_proxy.py @@ -0,0 +1,232 @@ +#!/usr/bin/env python +import json +import os +import shutil +import tempfile +from unittest import mock + +import mozunit +import pytest + +from mozperftest.environment import SYSTEM +from mozperftest.system.proxy import OutputHandler +from mozperftest.tests.support import get_running_env +from mozperftest.utils import silence + +here = os.path.abspath(os.path.dirname(__file__)) +example_dump = os.path.join(here, "..", "system", "example.zip") + + +class FakeOutputHandler: + def finished(self): + pass + + def wait_for_port(self): + return 1234 + + +class FakeOutputHandlerFail: + def finished(self): + pass + + def wait_for_port(self): + return None + + +class ProcHandler: + def __init__(self, *args, **kw): + self.args = args + self.kw = kw + self.pid = 1234 + + def wait(self, *args): + return + + run = wait + + @property + def proc(self): + return self + + +class ProcHandlerError: + def __init__(self, *args, **kw): + self.args = args + self.kw = kw + self.pid = 1234 + + def wait(self, *args): + return 1 + + run = wait + + @property + def proc(self): + return self + + +class FakeDevice: + def create_socket_connection(self, direction, local, remote): + return "A Fake socket" + + +def running_env(): + return get_running_env(proxy=True) + + +def mock_download_file(url, dest): + shutil.copyfile(example_dump, dest) + + +@mock.patch("mozperftest.system.proxy.download_file", mock_download_file) +@mock.patch("mozperftest.system.proxy.ProcessHandler", new=ProcHandler) +@mock.patch("mozperftest.system.proxy.OutputHandler", new=FakeOutputHandlerFail) +@mock.patch("os.kill") +def test_port_error(killer): + mach_cmd, metadata, env = running_env() + system = env.layers[SYSTEM] + with tempfile.TemporaryDirectory() as tmpdir: + recording = os.path.join(tmpdir, "recording.zip") + env.set_arg("proxy-mode", "record") + env.set_arg("proxy-file", recording) + + with system as proxy, pytest.raises(ValueError) as excinfo, silence(): + proxy(metadata) + assert "Unable to retrieve the port number from mozproxy" in str(excinfo.value) + + +@mock.patch("mozperftest.system.proxy.download_file", mock_download_file) +@mock.patch("mozperftest.system.proxy.ProcessHandler", new=ProcHandlerError) +@mock.patch("mozperftest.system.proxy.OutputHandler", new=FakeOutputHandler) +@mock.patch("os.kill") +def test_proxy_error(killer): + mach_cmd, metadata, env = running_env() + system = env.layers[SYSTEM] + with tempfile.TemporaryDirectory() as tmpdir: + recording = os.path.join(tmpdir, "recording.zip") + env.set_arg("proxy-mode", "record") + env.set_arg("proxy-file", recording) + + with pytest.raises(ValueError) as excinfo: + with system as proxy, silence(): + proxy(metadata) + assert "mozproxy terminated early with return code 1" in str(excinfo.value) + + +@mock.patch("mozperftest.system.proxy.download_file", mock_download_file) +@mock.patch("mozperftest.system.proxy.ProcessHandler", new=ProcHandler) +@mock.patch("mozperftest.system.proxy.OutputHandler", new=FakeOutputHandler) +@mock.patch("os.kill") +def test_playback_no_file(killer): + mach_cmd, metadata, env = running_env() + system = env.layers[SYSTEM] + env.set_arg("proxy-mode", "playback") + + with system as proxy, pytest.raises(ValueError) as excinfo, silence(): + proxy(metadata) + assert "Proxy file not provided!!" in str(excinfo.value) + + +@mock.patch("mozperftest.system.proxy.download_file", mock_download_file) +@mock.patch("mozperftest.system.proxy.ProcessHandler", new=ProcHandler) +@mock.patch("mozperftest.system.proxy.OutputHandler", new=FakeOutputHandler) +@mock.patch("os.kill") +def test_playback_no_mode(killer): + mach_cmd, metadata, env = running_env() + system = env.layers[SYSTEM] + env.set_arg("proxy-file", example_dump) + + with system as proxy, pytest.raises(ValueError) as excinfo, silence(): + proxy(metadata) + assert "Proxy mode not provided please provide proxy mode" in str(excinfo.value) + + +@mock.patch("mozperftest.system.proxy.OutputHandler", new=FakeOutputHandler) +@mock.patch("mozperftest.system.proxy.ProcessHandler", new=ProcHandler) +@mock.patch("mozperftest.system.proxy.ADBDevice", new=FakeDevice) +@mock.patch("os.kill") +def test_android_proxy(killer): + mach_cmd, metadata, env = running_env() + metadata.flavor = "mobile-browser" + system = env.layers[SYSTEM] + env.set_arg("android-app-name", "org.mozilla.geckoview_example") + env.set_arg("proxy-mode", "playback") + env.set_arg("proxy-file", example_dump) + + with system as proxy, silence(): + proxy(metadata) + + browser_prefs = metadata.get_options("browser_prefs") + assert browser_prefs["network.proxy.http_port"] == 1234 + + +@mock.patch("mozperftest.system.proxy.OutputHandler", new=FakeOutputHandler) +@mock.patch("mozperftest.system.proxy.ProcessHandler", new=ProcHandler) +@mock.patch("os.kill") +def test_replay(killer): + mach_cmd, metadata, env = running_env() + system = env.layers[SYSTEM] + env.set_arg("proxy-mode", "playback") + env.set_arg("proxy-file", example_dump) + + with system as proxy, silence(): + proxy(metadata) + + browser_prefs = metadata.get_options("browser_prefs") + assert browser_prefs["network.proxy.http_port"] == 1234 + + +@mock.patch("mozperftest.system.proxy.download_file", mock_download_file) +@mock.patch("mozperftest.system.proxy.ProcessHandler", new=ProcHandler) +@mock.patch("mozperftest.system.proxy.OutputHandler", new=FakeOutputHandler) +@mock.patch("os.kill") +def test_replay_url(killer): + mach_cmd, metadata, env = running_env() + system = env.layers[SYSTEM] + env.set_arg("proxy-mode", "playback") + env.set_arg("proxy-file", "http://example.dump") + + with system as proxy, silence(): + proxy(metadata) + + browser_prefs = metadata.get_options("browser_prefs") + assert browser_prefs["network.proxy.http_port"] == 1234 + + +@mock.patch("mozperftest.system.proxy.download_file", mock_download_file) +@mock.patch("mozperftest.system.proxy.ProcessHandler", new=ProcHandler) +@mock.patch("mozperftest.system.proxy.OutputHandler", new=FakeOutputHandler) +@mock.patch("os.kill") +def test_record(killer): + mach_cmd, metadata, env = running_env() + system = env.layers[SYSTEM] + with tempfile.TemporaryDirectory() as tmpdir: + recording = os.path.join(tmpdir, "recording.zip") + env.set_arg("proxy-mode", "record") + env.set_arg("proxy-file", recording) + + with system as proxy, silence(): + proxy(metadata) + + browser_prefs = metadata.get_options("browser_prefs") + assert browser_prefs["network.proxy.http_port"] == 1234 + + +@mock.patch("mozperftest.system.proxy.LOG") +def test_output_handler(logged): + hdlr = OutputHandler() + + hdlr(b"") + hdlr(b"simple line") + hdlr(json.dumps({"not": "expected data"}).encode()) + + hdlr.finished() + assert hdlr.wait_for_port() is None + + # this catches the port + hdlr(json.dumps({"action": "", "message": "Proxy running on port 1234"}).encode()) + assert hdlr.wait_for_port() == 1234 + + +if __name__ == "__main__": + mozunit.main() diff --git a/python/mozperftest/mozperftest/tests/test_runner.py b/python/mozperftest/mozperftest/tests/test_runner.py new file mode 100644 index 0000000000..5efcab59f6 --- /dev/null +++ b/python/mozperftest/mozperftest/tests/test_runner.py @@ -0,0 +1,51 @@ +#!/usr/bin/env python +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at http://mozilla.org/MPL/2.0/. +from unittest import mock + +import mozunit +import pytest +from mozbuild.base import MachCommandBase # noqa + +from mozperftest.runner import main +from mozperftest.utils import silence + + +def test_main(): + with pytest.raises(SystemExit), silence(): + main(["--help"]) + + +def test_tools(): + with mock.patch( + "mozperftest.runner._activate_virtualenvs", return_value="fake_path" + ) as _: + with pytest.raises(SystemExit), silence(): + main(["tools"]) + + +@mock.patch("mozperftest.utils.install_package") +@mock.patch("mozperftest.PerftestToolsArgumentParser") +def test_side_by_side(arg, patched_mozperftest_tools): + with mock.patch( + "mozperftest.runner._activate_virtualenvs", return_value="fake_path" + ) as _, mock.patch( + "mozperftest.runner._create_artifacts_dir", return_value="fake_path" + ) as _, mock.patch( + "mozperftest.runner._save_params", return_value="fake_path" + ) as _, mock.patch( + "sys.modules", return_value=mock.MagicMock() + ) as _: + main( + [ + "tools", + "side-by-side", + "-t", + "fake-test-name", + ] + ) + + +if __name__ == "__main__": + mozunit.main() diff --git a/python/mozperftest/mozperftest/tests/test_script.py b/python/mozperftest/mozperftest/tests/test_script.py new file mode 100644 index 0000000000..8a8e93406a --- /dev/null +++ b/python/mozperftest/mozperftest/tests/test_script.py @@ -0,0 +1,127 @@ +#!/usr/bin/env python +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at http://mozilla.org/MPL/2.0/. +import mozunit +import pytest + +from mozperftest.script import ( + BadOptionTypeError, + MissingFieldError, + ParseError, + ScriptInfo, + ScriptType, +) +from mozperftest.tests.support import ( + EXAMPLE_MOCHITEST_TEST, + EXAMPLE_MOCHITEST_TEST2, + EXAMPLE_TEST, + EXAMPLE_XPCSHELL_TEST, + EXAMPLE_XPCSHELL_TEST2, + HERE, + temp_file, +) + + +def check_options(info): + assert info["options"]["default"]["perfherder"] + assert info["options"]["linux"]["perfherder_metrics"] == [ + {"name": "speed", "unit": "bps_lin"} + ] + assert info["options"]["win"]["perfherder_metrics"] == [ + {"name": "speed", "unit": "bps_win"} + ] + assert info["options"]["mac"]["perfherder_metrics"] == [ + {"name": "speed", "unit": "bps_mac"} + ] + + +def test_scriptinfo_bt(): + info = ScriptInfo(EXAMPLE_TEST) + assert info["author"] == "N/A" + display = str(info) + assert "The description of the example test." in display + assert info.script_type == ScriptType.browsertime + check_options(info) + + +@pytest.mark.parametrize("script", [EXAMPLE_MOCHITEST_TEST, EXAMPLE_MOCHITEST_TEST2]) +def test_scriptinfo_mochitest(script): + info = ScriptInfo(script) + assert info["author"] == "N/A" + + display = str(info) + assert "N/A" in display + assert "Performance Team" in display + assert "Test test" in display + assert info.script_type == ScriptType.mochitest + + assert info["options"]["default"]["manifest"] == "mochitest-common.ini" + assert info["options"]["default"]["manifest_flavor"] == "plain" + assert info["options"]["default"]["perfherder_metrics"] == [ + {"name": "Registration", "unit": "ms"} + ] + + +def test_scriptinfo_mochitest_missing_perfmetadata(): + with temp_file(name="sample.html", content="<html></html>") as temp: + with pytest.raises(ParseError) as exc_info: + ScriptInfo(temp) + assert "MissingPerfMetadata" in str(exc_info.value) + + +@pytest.mark.parametrize("script", [EXAMPLE_XPCSHELL_TEST, EXAMPLE_XPCSHELL_TEST2]) +def test_scriptinfo_xpcshell(script): + info = ScriptInfo(script) + assert info["author"] == "N/A" + + display = str(info) + assert "The description of the example test." in display + assert info.script_type == ScriptType.xpcshell + check_options(info) + + +def test_scriptinfo_failure(): + bad_example = HERE / "data" / "failing-samples" / "perftest_doc_failure_example.js" + with pytest.raises(MissingFieldError): + ScriptInfo(bad_example) + + +def test_parserror(): + exc = Exception("original") + error = ParseError("script", exc) + assert error.exception is exc + assert "original" in str(error) + + +def test_update_args(): + args = {"perfherder_metrics": [{"name": "yey"}]} + info = ScriptInfo(EXAMPLE_TEST) + new_args = info.update_args(**args) + + # arguments should not be overriden + assert new_args["perfherder_metrics"] == [{"name": "yey"}] + + # arguments in platform-specific options should + # override default options + assert new_args["verbose"] + + +def test_update_args_metrics_list_failure(): + args = {"perfherder_metrics": "yey"} + info = ScriptInfo(EXAMPLE_TEST) + + with pytest.raises(BadOptionTypeError): + info.update_args(**args) + + +def test_update_args_metrics_json_failure(): + args = {"perfherder_metrics": ["yey"]} + info = ScriptInfo(EXAMPLE_TEST) + + with pytest.raises(BadOptionTypeError): + info.update_args(**args) + + +if __name__ == "__main__": + mozunit.main() diff --git a/python/mozperftest/mozperftest/tests/test_single_json_transformer.py b/python/mozperftest/mozperftest/tests/test_single_json_transformer.py new file mode 100644 index 0000000000..9509948760 --- /dev/null +++ b/python/mozperftest/mozperftest/tests/test_single_json_transformer.py @@ -0,0 +1,80 @@ +#!/usr/bin/env python +import mozunit + +from mozperftest.metrics.notebook.transformer import Transformer +from mozperftest.metrics.notebook.transforms.single_json import SingleJsonRetriever + + +def test_transform(data): + tfm = SingleJsonRetriever() + + expected_result = [ + { + "data": [ + {"value": 101, "xaxis": 1}, + {"value": 102, "xaxis": 1}, + {"value": 103, "xaxis": 1}, + ], + "subtest": "browserScripts.timings.firstPaint", + } + ] + + actual_result = tfm.transform(data["data_1"]) + + assert actual_result == expected_result + + +def test_merge(data): + tfm = SingleJsonRetriever() + sde = tfm.transform(data["data_1"]) + sde.extend(tfm.transform(data["data_2"])) + + expected_result = [ + { + "data": [ + {"value": 101, "xaxis": 1}, + {"value": 102, "xaxis": 1}, + {"value": 103, "xaxis": 1}, + {"value": 201, "xaxis": 2}, + {"value": 202, "xaxis": 2}, + {"value": 203, "xaxis": 2}, + ], + "subtest": "browserScripts.timings.firstPaint", + } + ] + + actual_result = tfm.merge(sde) + + assert actual_result == expected_result + + +def test_process(files): + files = files["resources"] + file_1 = files["file_1"] + file_2 = files["file_2"] + + tfm = Transformer([], SingleJsonRetriever()) + tfm.files = [file_1, file_2] + + expected_result = [ + { + "data": [ + {"value": 101, "xaxis": 1, "file": file_1}, + {"value": 102, "xaxis": 1, "file": file_1}, + {"value": 103, "xaxis": 1, "file": file_1}, + {"value": 201, "xaxis": 2, "file": file_2}, + {"value": 202, "xaxis": 2, "file": file_2}, + {"value": 203, "xaxis": 2, "file": file_2}, + ], + "subtest": "browserScripts.timings.firstPaint", + "name": "group_1", + } + ] + + actual_result = tfm.process("group_1") + + assert actual_result == expected_result + + +if __name__ == "__main__": + mozunit.main() diff --git a/python/mozperftest/mozperftest/tests/test_transformer.py b/python/mozperftest/mozperftest/tests/test_transformer.py new file mode 100644 index 0000000000..b5323eabe6 --- /dev/null +++ b/python/mozperftest/mozperftest/tests/test_transformer.py @@ -0,0 +1,161 @@ +import mozunit +import pytest +from jsonschema import ValidationError + +from mozperftest.metrics.exceptions import ( + NotebookDuplicateTransformsError, + NotebookInvalidPathError, + NotebookInvalidTransformError, +) +from mozperftest.metrics.notebook.transformer import ( + Transformer, + get_transformer, + get_transformers, +) +from mozperftest.tests.data.perftestetl_plugin import ( + test_transformer_perftestetl_plugin_1, + test_transformer_perftestetl_plugin_2, +) +from mozperftest.tests.support import HERE, get_running_env + +_, metadata, _ = get_running_env() +prefix = "PerftestNotebook" + + +def test_init_failure(): + class TempClass(object): + def temp_fun(): + return 1 + + with pytest.raises(NotebookInvalidTransformError): + Transformer(custom_transformer=TempClass()) + + +def test_files_getter(files): + files = files["resources"] + assert files == Transformer(files, logger=metadata, prefix=prefix).files + + +def test_files_setter(files): + files = files["resources"] + files = list(files.values()) + tfm = Transformer(logger=metadata, prefix=prefix) + tfm.files = files + assert files == tfm.files + + +def test_files_setter_failure(): + tfm = Transformer(logger=metadata, prefix=prefix) + tfm.files = "fail" + assert not tfm.files + + +def test_open_data(data, files): + tfm = Transformer(logger=metadata, prefix=prefix) + + files = files["resources"] + json_1 = files["file_1"] + json_2 = files["file_2"] + txt_3 = files["file_3"] + + # If a json file is open. + assert data["data_1"] == tfm.open_data(json_1) + assert data["data_2"] == tfm.open_data(json_2) + # If an other type file is open. + assert [str(data["data_3"])] == tfm.open_data(txt_3) + + # Test failure + with pytest.raises(Exception): + tfm.open_data("fail") + + +def test_jsonschema_valitate_failure(files): + class BadTransformer: + def transform(self, data): + return {"bad data": "bad data"} + + def merge(self, sde): + return {"bad data": "bad data"} + + files = files["resources"] + file_1 = files["file_1"] + file_2 = files["file_2"] + + tfm = Transformer([], BadTransformer(), logger=metadata, prefix=prefix) + tfm.files = [file_1, file_2] + with pytest.raises(ValidationError): + tfm.process("name") + + +def test_get_transformer(): + path_1 = ( + HERE + / "data" + / "perftestetl_plugin" + / "test_transformer_perftestetl_plugin_1.py" + ) + assert ( + get_transformer(path_1.as_posix()).__name__ + == test_transformer_perftestetl_plugin_1.TestTransformer1.__name__ + ) + + path_2 = ( + "mozperftest.tests.data.perftestetl_plugin." + + "test_transformer_perftestetl_plugin_2:TestTransformer2" + ) + assert ( + get_transformer(path_2).__name__ + == test_transformer_perftestetl_plugin_2.TestTransformer2.__name__ + ) + + +def test_get_transformer_failure(): + path_1 = HERE / "data" / "does-not-exist.py" + with pytest.raises(NotebookInvalidPathError): + get_transformer(path_1.as_posix()) + + path_2 = HERE / "data" / "does-not-exist" + with pytest.raises(ImportError): + get_transformer(path_2.as_posix()) + + path_3 = ( + "mozperftest.tests.data.perftestetl_plugin." + + "test_transformer_perftestetl_plugin_2:TestTransformer3" + ) + with pytest.raises(ImportError): + get_transformer(path_3) + + path_4 = ( + "mozperftest.tests.data.perftestetl_plugin." + + "test_transformer_perftestetl_plugin_3:TestTransformer3" + ) + with pytest.raises(ImportError): + get_transformer(path_4) + + with pytest.raises(NotebookInvalidTransformError): + get_transformer(__file__) + + +def test_get_transformers(): + dirpath = HERE / "data" / "perftestetl_plugin" + tfms = get_transformers(dirpath) + assert test_transformer_perftestetl_plugin_1.TestTransformer1.__name__ in tfms + assert test_transformer_perftestetl_plugin_2.TestTransformer2.__name__ in tfms + + +def test_get_transformers_failure(): + dirpath = HERE / "data" / "does-not-exist" + with pytest.raises(NotebookInvalidPathError): + get_transformers(dirpath) + + dirpath = HERE / "data" / "perftestetl_plugin" / "test_transformer_1.py" + with pytest.raises(NotebookInvalidPathError): + get_transformers(dirpath) + + dirpath = HERE / "data" / "multiple_transforms_error" + with pytest.raises(NotebookDuplicateTransformsError): + get_transformers(dirpath) + + +if __name__ == "__main__": + mozunit.main() diff --git a/python/mozperftest/mozperftest/tests/test_utils.py b/python/mozperftest/mozperftest/tests/test_utils.py new file mode 100644 index 0000000000..ae6de4dc3d --- /dev/null +++ b/python/mozperftest/mozperftest/tests/test_utils.py @@ -0,0 +1,270 @@ +#!/usr/bin/env python +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at http://mozilla.org/MPL/2.0/. +import shutil +import sys +from datetime import date, timedelta +from pathlib import Path +from subprocess import CalledProcessError +from unittest import mock + +import mozunit +import pytest + +from mozperftest.tests.support import EXAMPLE_TESTS_DIR, requests_content, temp_file +from mozperftest.utils import ( + build_test_list, + checkout_python_script, + convert_day, + create_path, + download_file, + get_multi_tasks_url, + get_output_dir, + get_revision_namespace_url, + host_platform, + install_package, + install_requirements_file, + load_class, + load_class_from_path, + silence, +) + + +def test_silence(): + with silence(): + print("HIDDEN") + + +def test_host_platform(): + plat = host_platform() + + # a bit useless... :) + if sys.platform.startswith("darwin"): + assert plat == "darwin" + else: + if sys.maxsize > 2**32: + assert "64" in plat + else: + assert "64" not in plat + + +def get_raise(*args, **kw): + raise Exception() + + +@mock.patch("mozperftest.utils.requests.get", new=get_raise) +def test_download_file_fails(): + with temp_file() as target, silence(), pytest.raises(Exception): + download_file("http://I don't exist", Path(target), retry_sleep=0.1) + + +@mock.patch("mozperftest.utils.requests.get", new=requests_content()) +def test_download_file_success(): + with temp_file() as target: + download_file("http://content", Path(target), retry_sleep=0.1) + with open(target) as f: + assert f.read() == "some content" + + +def _req(package): + class Req: + location = "nowhere" + + @property + def satisfied_by(self): + return self + + def check_if_exists(self, **kw): + pass + + return Req() + + +@mock.patch("pip._internal.req.constructors.install_req_from_line", new=_req) +def test_install_package(): + vem = mock.Mock() + vem.bin_path = "someplace" + with mock.patch("subprocess.check_call") as mock_check_call: + assert install_package(vem, "foo") + mock_check_call.assert_called_once_with( + [ + vem.python_path, + "-m", + "pip", + "install", + "foo", + ] + ) + + +def test_install_requirements_file(): + vem = mock.Mock() + vem.bin_path = "someplace" + with mock.patch("subprocess.check_call") as mock_check_call, mock.patch( + "mozperftest.utils.os" + ): + assert install_requirements_file(vem, "foo") + mock_check_call.assert_called_once_with( + [ + vem.python_path, + "-m", + "pip", + "install", + "--no-deps", + "-r", + "foo", + "--no-index", + "--find-links", + "https://pypi.pub.build.mozilla.org/pub/", + ] + ) + + +@mock.patch("pip._internal.req.constructors.install_req_from_line", new=_req) +def test_install_package_failures(): + vem = mock.Mock() + vem.bin_path = "someplace" + + def check_call(*args): + raise CalledProcessError(1, "") + + with pytest.raises(CalledProcessError): + with mock.patch("subprocess.check_call", new=check_call): + install_package(vem, "foo") + + # we can also absorb the error, and just return False + assert not install_package(vem, "foo", ignore_failure=True) + + +@mock.patch("mozperftest.utils.requests.get", requests_content()) +def test_build_test_list(): + tests = [EXAMPLE_TESTS_DIR, "https://some/location/perftest_one.js"] + try: + files, tmp_dir = build_test_list(tests) + assert len(files) == 2 + finally: + shutil.rmtree(tmp_dir) + + +def test_convert_day(): + day = "2020.06.08" + assert convert_day(day) == day + with pytest.raises(ValueError): + convert_day("2020-06-08") + today = date.today() + assert convert_day("today"), today.strftime("%Y.%m.%d") + yesterday = today - timedelta(days=1) + assert convert_day("yesterday") == yesterday.strftime("%Y.%m.%d") + + +def test_revision_namespace_url(): + route = "FakeBuildRoute" + day = "2020.06.08" + buildurl = get_revision_namespace_url(route, day=day) + assert day in buildurl and route in buildurl + assert buildurl.endswith(".revision") + + +def test_multibuild_url(): + route = "FakeBuildRoute" + day = "2020.06.08" + revision = "deadbeef" + buildurl = get_multi_tasks_url(route, revision, day=day) + assert all(item in buildurl for item in (route, day, revision)) + + with mock.patch("mozperftest.utils.date") as mockeddate: + mockeddate.today.return_value = mockeddate + mockeddate.strftime.return_value = "2020.07.09" + buildurl = get_multi_tasks_url(route, revision, day="today") + assert "2020.07.09" in buildurl and route in buildurl + + with mock.patch("mozperftest.utils.timedelta"): + mockeddate.__sub__.return_value = mockeddate + mockeddate.strftime.return_value = "2020.08.09" + buildurl = get_multi_tasks_url(route, revision) + assert "2020.08.09" in buildurl and route in buildurl + + +class ImportMe: + pass + + +def test_load_class(): + with pytest.raises(ImportError): + load_class("notimportable") + + with pytest.raises(ImportError): + load_class("notim:por:table") + + with pytest.raises(ImportError): + load_class("notim:portable") + + with pytest.raises(ImportError): + load_class("mozperftest.tests.test_utils:NOEXIST") + + klass = load_class("mozperftest.tests.test_utils:ImportMe") + assert klass is ImportMe + + +def test_load_class_from_path(): + with pytest.raises(ImportError) as exc: + load_class_from_path("nonexistent", __file__) + assert "found but it was not a valid class" in exc.value.args[0] + + with pytest.raises(ImportError) as exc: + load_class_from_path("nonexistent", "nonexistent-file") + assert "does not exist." in exc.value.args[0] + + klass = load_class_from_path("ImportMe", __file__) + assert klass.__name__ is ImportMe.__name__ + + +class _Venv: + python_path = sys.executable + + +def test_checkout_python_script(): + with silence() as captured: + assert checkout_python_script(_Venv(), "lib2to3", ["--help"]) + + stdout, stderr = captured + stdout.seek(0) + assert stdout.read() == "=> lib2to3 [OK]\n" + + +def test_run_python_script_failed(): + with silence() as captured: + assert not checkout_python_script(_Venv(), "nothing") + + stdout, stderr = captured + stdout.seek(0) + assert stdout.read().endswith("[FAILED]\n") + + +def test_get_output_dir(): + with temp_file() as temp_dir: + output_dir = get_output_dir(temp_dir) + assert output_dir.exists() + assert output_dir.is_dir() + + output_dir = get_output_dir(output=temp_dir, folder="artifacts") + assert output_dir.exists() + assert output_dir.is_dir() + assert "artifacts" == output_dir.parts[-1] + + +def test_create_path(): + path = Path("path/doesnt/exist").resolve() + if path.exists(): + shutil.rmtree(path.parent.parent) + try: + path = create_path(path) + + assert path.exists() + finally: + shutil.rmtree(path.parent.parent) + + +if __name__ == "__main__": + mozunit.main() diff --git a/python/mozperftest/mozperftest/tests/test_visualmetrics.py b/python/mozperftest/mozperftest/tests/test_visualmetrics.py new file mode 100644 index 0000000000..6a017c00e3 --- /dev/null +++ b/python/mozperftest/mozperftest/tests/test_visualmetrics.py @@ -0,0 +1,103 @@ +#!/usr/bin/env python +import json +import os +from unittest import mock + +import mozunit +import pytest + +from mozperftest.environment import METRICS +from mozperftest.tests.support import ( + BT_DATA_VIDEO, + EXAMPLE_TEST, + get_running_env, + temp_file, +) + +VM_RES = { + "SpeedIndex": 1031, + "FirstVisualChange": 533, + "LastVisualChange": 3166, + "VisualProgress": ( + "0=0, 533=63, 700=63, 733=63, 900=63, 933=63, 1233=54," + "1333=54, 1366=56, 1500=56, 1633=96, 1800=96, 1933=96," + "2133=96, 2200=96, 2366=96, 2533=96, 2566=96, 2600=96," + "2733=96, 2833=96, 2933=96, 3000=96, 3133=96,3166=100" + ), + "videoRecordingStart": 0, +} + + +def get_res(*args, **kw): + return json.dumps(VM_RES) + + +def mocked_executable(): + return ("ok", "ok") + + +@mock.patch("mozperftest.test.browsertime.runner.install_package") +@mock.patch( + "mozperftest.test.noderunner.NodeRunner.verify_node_install", new=lambda x: True +) +@mock.patch( + "mozperftest.test.browsertime.runner.BrowsertimeRunner._setup_node_packages", + new=lambda x, y: None, +) +@mock.patch("mozperftest.metrics.visualmetrics.which", new=lambda path: "ok") +@mock.patch("mozbuild.nodeutil.find_node_executable", new=mocked_executable) +@mock.patch("subprocess.check_output", new=get_res) +def test_visual_metrics(device): + os.environ["VISUALMETRICS_PY"] = "" + mach_cmd, metadata, env = get_running_env( + visualmetrics=True, + perfherder=True, + verbose=True, + tests=[EXAMPLE_TEST], + ) + metrics = env.layers[METRICS] + + metadata.add_result({"results": str(BT_DATA_VIDEO.parent), "name": "browsertime"}) + + with temp_file() as output: + env.set_arg("output", output) + with metrics as m: + metadata = m(metadata) + + output_file = metadata.get_output() + with open(output_file) as f: + output = json.loads(f.read()) + + # Check some metadata + assert output["application"]["name"] == "firefox" + visual_metrics = [i["name"] for i in output["suites"][1]["subtests"]] + assert "VisualProgress96" in visual_metrics + + +@mock.patch("mozperftest.test.browsertime.runner.install_package") +@mock.patch( + "mozperftest.test.noderunner.NodeRunner.verify_node_install", new=lambda x: True +) +@mock.patch( + "mozperftest.test.browsertime.runner.BrowsertimeRunner._setup_node_packages", + new=lambda x, y: None, +) +@mock.patch("mozperftest.metrics.visualmetrics.which", new=lambda path: None) +def test_visual_metrics_no_ffmpeg(device): + os.environ["VISUALMETRICS_PY"] = "" + mach_cmd, metadata, env = get_running_env( + visualmetrics=True, + perfherder=True, + verbose=True, + tests=[EXAMPLE_TEST], + ) + metrics = env.layers[METRICS] + metadata.add_result({"results": str(BT_DATA_VIDEO.parent), "name": "browsertime"}) + + with pytest.raises(FileNotFoundError): + with metrics as m: + metadata = m(metadata) + + +if __name__ == "__main__": + mozunit.main() diff --git a/python/mozperftest/mozperftest/tests/test_visualtools.py b/python/mozperftest/mozperftest/tests/test_visualtools.py new file mode 100644 index 0000000000..9e5af583d4 --- /dev/null +++ b/python/mozperftest/mozperftest/tests/test_visualtools.py @@ -0,0 +1,47 @@ +#!/usr/bin/env python +import os +from unittest import mock + +import mozunit +import pytest + +from mozperftest.test.browsertime.visualtools import get_dependencies, xvfb +from mozperftest.utils import temporary_env + + +@mock.patch( + "mozperftest.test.browsertime.visualtools.find_executable", new=lambda name: "Xvfb" +) +def test_xvfb(*mocked): + with temporary_env(DISPLAY="ME"): + with mock.patch("subprocess.Popen") as mocked, xvfb(): + mocked.assert_called() + assert os.environ["DISPLAY"] == "ME" + + +@mock.patch( + "mozperftest.test.browsertime.visualtools.find_executable", new=lambda name: "Xvfb" +) +def test_xvfb_env(*mocked): + with temporary_env(DISPLAY=None): + with mock.patch("subprocess.Popen") as mocked, xvfb(): + mocked.assert_called() + assert "DISPLAY" not in os.environ + + +@mock.patch( + "mozperftest.test.browsertime.visualtools.find_executable", new=lambda name: None +) +def test_xvfb_none(*mocked): + with pytest.raises(FileNotFoundError), xvfb(): + pass + + +def test_get_dependencies(): + # Making sure we get a list on all supported platforms. + # If we miss one, this raises a KeyError. + get_dependencies() + + +if __name__ == "__main__": + mozunit.main() diff --git a/python/mozperftest/mozperftest/tests/test_webpagetest.py b/python/mozperftest/mozperftest/tests/test_webpagetest.py new file mode 100644 index 0000000000..1c2c51ca0b --- /dev/null +++ b/python/mozperftest/mozperftest/tests/test_webpagetest.py @@ -0,0 +1,271 @@ +import json +import random +from unittest import mock + +import pytest +import requests + +import mozperftest.test.webpagetest as webpagetest +from mozperftest.test.webpagetest import ( + ACCEPTED_STATISTICS, + WPT_API_EXPIRED_MESSAGE, + WPTBrowserSelectionError, + WPTDataProcessingError, + WPTExpiredAPIKeyError, + WPTInvalidConnectionSelection, + WPTInvalidStatisticsError, + WPTInvalidURLError, + WPTLocationSelectionError, + WPTTimeOutError, +) +from mozperftest.tests.support import EXAMPLE_WPT_TEST, get_running_env + +WPT_METRICS = [ + "firstContentfulPaint", + "timeToContentfulPaint", + "visualComplete90", + "firstPaint", + "visualComplete99", + "visualComplete", + "SpeedIndex", + "bytesIn", + "bytesOut", + "TTFB", + "fullyLoadedCPUms", + "fullyLoadedCPUpct", + "domElements", + "domContentLoadedEventStart", + "domContentLoadedEventEnd", + "loadEventStart", + "loadEventEnd", +] + + +class WPTTests: + def __init__(self, log): + self.log = log + + def runTests(self, args): + return True + + +def running_env(**kw): + return get_running_env(flavor="webpagetest", **kw) + + +def init_placeholder_wpt_data(fvonly=False, invalid_results=False): + views = {"firstView": {}} + if not fvonly: + views["repeatView"] = {} + placeholder_data = { + "data": { + "summary": "websitelink.com", + "location": "ec2-us-east-1:Firefox", + "testRuns": 3, + "successfulFVRuns": 3, + "successfulRVRuns": 3, + "fvonly": fvonly, + "average": views, + "standardDeviation": views, + "median": views, + "runs": {"1": {"firstView": {"browserVersion": 101.1}}}, + "url": "testurl.ca", + }, + "webPagetestVersion": 21.0, + } + exclude_metrics = 0 if not invalid_results else 2 + for metric in WPT_METRICS[exclude_metrics:]: + for view in views: + for stat in ACCEPTED_STATISTICS: + placeholder_data["data"][stat][view][metric] = random.randint(0, 10000) + placeholder_data["data"][stat][view][metric] = random.randint(0, 10000) + placeholder_data["data"][stat][view][metric] = random.randint(0, 10000) + return placeholder_data + + +def init_mocked_request( + status_code, WPT_test_status_code=200, WPT_test_status_text="Ok", **kwargs +): + mock_data = { + "data": { + "ec2-us-east-1": {"PendingTests": {"Queued": 3}, "Label": "California"}, + "jsonUrl": "mock_test.com", + "summary": "Just a pageload test", + "url": "testurl.ca", + "remaining": 2000, + }, + "statusCode": WPT_test_status_code, + "statusText": WPT_test_status_text, + } + for key, value in kwargs.items(): + mock_data["data"][key] = value + mock_request = requests.Response() + mock_request.status_code = status_code + mock_request._content = json.dumps(mock_data).encode("utf-8") + return mock_request + + +@mock.patch( + "mozperftest.test.webpagetest.WebPageTest.get_WPT_results", + return_value=init_placeholder_wpt_data(), +) +@mock.patch("mozperftest.utils.get_tc_secret", return_value={"wpt_key": "fake_key"}) +@mock.patch( + "mozperftest.test.webpagetest.WebPageTest.location_queue", return_value=None +) +@mock.patch("requests.get", return_value=init_mocked_request(200)) +@mock.patch("mozperftest.test.webpagetest.WPT_KEY_FILE", "tests/data/WPT_fakekey.txt") +def test_webpagetest_no_issues_mocked_results(*mocked): + mach_cmd, metadata, env = running_env(tests=[str(EXAMPLE_WPT_TEST)]) + test = webpagetest.WebPageTest(env, mach_cmd) + metadata.script["options"]["test_parameters"]["wait_between_requests"] = 1 + metadata.script["options"]["test_parameters"]["first_view_only"] = 0 + metadata.script["options"]["test_parameters"]["test_list"] = ["google.ca"] + test.run(metadata) + + +@mock.patch("mozperftest.utils.get_tc_secret", return_value={"wpt_key": "fake_key"}) +@mock.patch( + "mozperftest.test.webpagetest.WebPageTest.location_queue", return_value=None +) +@mock.patch("requests.get", return_value=init_mocked_request(200)) +@mock.patch("mozperftest.test.webpagetest.WPT_KEY_FILE", "tests/data/WPT_fakekey.txt") +def test_webpagetest_test_invalid_browser(*mocked): + mach_cmd, metadata, env = running_env(tests=[str(EXAMPLE_WPT_TEST)]) + metadata.script["options"]["test_parameters"]["browser"] = "Invalid Browser" + test = webpagetest.WebPageTest(env, mach_cmd) + with pytest.raises(WPTBrowserSelectionError): + test.run(metadata) + + +@mock.patch("mozperftest.utils.get_tc_secret", return_value={"wpt_key": "fake_key"}) +@mock.patch( + "mozperftest.test.webpagetest.WebPageTest.location_queue", return_value=None +) +@mock.patch("requests.get", return_value=init_mocked_request(200)) +@mock.patch("mozperftest.test.webpagetest.WPT_KEY_FILE", "tests/data/WPT_fakekey.txt") +def test_webpagetest_test_invalid_connection(*mocked): + mach_cmd, metadata, env = running_env(tests=[str(EXAMPLE_WPT_TEST)]) + test = webpagetest.WebPageTest(env, mach_cmd) + metadata.script["options"]["test_parameters"]["connection"] = "Invalid Connection" + with pytest.raises(WPTInvalidConnectionSelection): + test.run(metadata) + + +@mock.patch("mozperftest.utils.get_tc_secret", return_value={"wpt_key": "fake_key"}) +@mock.patch( + "mozperftest.test.webpagetest.WebPageTest.location_queue", return_value=None +) +@mock.patch("requests.get", return_value=init_mocked_request(200)) +@mock.patch("mozperftest.test.webpagetest.WPT_KEY_FILE", "tests/data/WPT_fakekey.txt") +def test_webpagetest_test_invalid_url(*mocked): + mach_cmd, metadata, env = running_env(tests=[str(EXAMPLE_WPT_TEST)]) + test = webpagetest.WebPageTest(env, mach_cmd) + metadata.script["options"]["test_list"] = ["InvalidUrl"] + with pytest.raises(WPTInvalidURLError): + test.run(metadata) + + +@mock.patch("mozperftest.utils.get_tc_secret", return_value={"wpt_key": "fake_key"}) +@mock.patch( + "mozperftest.test.webpagetest.WebPageTest.location_queue", return_value=None +) +@mock.patch("requests.get", return_value=init_mocked_request(200)) +@mock.patch("mozperftest.test.webpagetest.WPT_KEY_FILE", "tests/data/WPT_fakekey.txt") +def test_webpagetest_test_invalid_statistic(*mocked): + mach_cmd, metadata, env = running_env(tests=[str(EXAMPLE_WPT_TEST)]) + test = webpagetest.WebPageTest(env, mach_cmd) + metadata.script["options"]["test_parameters"]["statistics"] = ["Invalid Statistic"] + with pytest.raises(WPTInvalidStatisticsError): + test.run(metadata) + assert True + + +@mock.patch("requests.get", return_value=init_mocked_request(200)) +@mock.patch("mozperftest.utils.get_tc_secret", return_value={"wpt_key": "fake_key"}) +@mock.patch( + "mozperftest.test.webpagetest.WebPageTest.request_with_timeout", + return_value={"data": {}}, +) +@mock.patch("mozperftest.test.webpagetest.WPT_KEY_FILE", "tests/data/WPT_fakekey.txt") +def test_webpagetest_test_invalid_location(*mocked): + mach_cmd, metadata, env = running_env(tests=[str(EXAMPLE_WPT_TEST)]) + test = webpagetest.WebPageTest(env, mach_cmd) + metadata.script["options"]["test_parameters"]["location"] = "Invalid Location" + with pytest.raises(WPTLocationSelectionError): + test.run(metadata) + + +@mock.patch("requests.get", return_value=init_mocked_request(200, 101)) +@mock.patch("mozperftest.utils.get_tc_secret", return_value={"wpt_key": "fake_key"}) +@mock.patch( + "mozperftest.test.webpagetest.WebPageTest.location_queue", return_value=None +) +@mock.patch("mozperftest.test.webpagetest.WPT_KEY_FILE", "tests/data/WPT_fakekey.txt") +def test_webpagetest_test_timeout(*mocked): + mach_cmd, metadata, env = running_env(tests=[str(EXAMPLE_WPT_TEST)]) + test = webpagetest.WebPageTest(env, mach_cmd) + metadata.script["options"]["test_parameters"]["timeout_limit"] = 2 + metadata.script["options"]["test_parameters"]["wait_between_requests"] = 1 + with pytest.raises(WPTTimeOutError): + test.run(metadata) + assert True + + +@mock.patch( + "requests.get", + return_value=init_mocked_request( + 200, testRuns=3, successfulFVRuns=3, fvonly=True, location="BadLocation" + ), +) +@mock.patch("mozperftest.utils.get_tc_secret", return_value={"wpt_key": "fake_key"}) +@mock.patch( + "mozperftest.test.webpagetest.WebPageTest.location_queue", return_value=None +) +@mock.patch("mozperftest.test.webpagetest.WPT_KEY_FILE", "tests/data/WPT_fakekey.txt") +def test_webpagetest_test_wrong_browserlocation(*mocked): + mach_cmd, metadata, env = running_env(tests=[str(EXAMPLE_WPT_TEST)]) + metadata.script["options"]["test_list"] = ["google.ca"] + metadata.script["options"]["test_parameters"]["wait_between_requests"] = 1 + test = webpagetest.WebPageTest(env, mach_cmd) + with pytest.raises(WPTBrowserSelectionError): + test.run(metadata) + + +@mock.patch( + "mozperftest.test.webpagetest.WebPageTest.get_WPT_results", + return_value=init_placeholder_wpt_data(invalid_results=True), +) +@mock.patch("mozperftest.utils.get_tc_secret", return_value={"wpt_key": "fake_key"}) +@mock.patch( + "mozperftest.test.webpagetest.WebPageTest.location_queue", return_value=None +) +@mock.patch("requests.get", return_value=init_mocked_request(200)) +@mock.patch("mozperftest.test.webpagetest.WPT_KEY_FILE", "tests/data/WPT_fakekey.txt") +def test_webpagetest_test_metric_not_found(*mocked): + mach_cmd, metadata, env = running_env(tests=[str(EXAMPLE_WPT_TEST)]) + metadata.script["options"]["test_list"] = ["google.ca"] + metadata.script["options"]["test_parameters"]["wait_between_requests"] = 1 + test = webpagetest.WebPageTest(env, mach_cmd) + with pytest.raises(WPTDataProcessingError): + test.run(metadata) + + +@mock.patch("mozperftest.utils.get_tc_secret", return_value={"wpt_key": "fake_key"}) +@mock.patch( + "mozperftest.test.webpagetest.WebPageTest.location_queue", return_value=None +) +@mock.patch( + "requests.get", + return_value=init_mocked_request( + 200, WPT_test_status_code=400, WPT_test_status_text=WPT_API_EXPIRED_MESSAGE + ), +) +@mock.patch("mozperftest.test.webpagetest.WPT_KEY_FILE", "tests/data/WPT_fakekey.txt") +def test_webpagetest_test_expired_api_key(*mocked): + mach_cmd, metadata, env = running_env(tests=[str(EXAMPLE_WPT_TEST)]) + metadata.script["options"]["test_list"] = ["google.ca"] + metadata.script["options"]["test_parameters"]["wait_between_requests"] = 1 + test = webpagetest.WebPageTest(env, mach_cmd) + with pytest.raises(WPTExpiredAPIKeyError): + test.run(metadata) diff --git a/python/mozperftest/mozperftest/tests/test_xpcshell.py b/python/mozperftest/mozperftest/tests/test_xpcshell.py new file mode 100644 index 0000000000..efdb4a5387 --- /dev/null +++ b/python/mozperftest/mozperftest/tests/test_xpcshell.py @@ -0,0 +1,165 @@ +import json +import shutil +from unittest import mock + +import pytest + +from mozperftest import utils +from mozperftest.environment import METRICS, SYSTEM, TEST +from mozperftest.test import xpcshell +from mozperftest.test.xpcshell import XPCShellTestError +from mozperftest.tests.support import ( + EXAMPLE_XPCSHELL_TEST, + MOZINFO, + get_running_env, + temp_file, +) + + +class XPCShellTests: + def __init__(self, log): + self.log = log + + def runTests(self, args): + self.log.suite_start("suite start") + self.log.test_start("test start") + self.log.process_output("1234", "line", "command") + self.log.log_raw({"action": "something"}) + self.log.log_raw({"action": "log", "message": "message"}) + + # these are the metrics sent by the scripts + self.log.log_raw( + { + "action": "log", + "message": '"perfMetrics"', + "extra": {"metrics1": 1, "metrics2": 2}, + } + ) + + self.log.log_raw( + {"action": "log", "message": '"perfMetrics"', "extra": {"metrics3": 3}} + ) + + self.log.test_end("test end") + self.log.suite_end("suite end") + return True + + +class XPCShellTestsFail(XPCShellTests): + def runTests(self, args): + return False + + +class XPCShellTestsNoPerfMetrics: + def __init__(self, log): + self.log = log + + def runTests(self, args): + self.log.suite_start("suite start") + self.log.test_start("test start") + self.log.process_output("1234", "line", "command") + self.log.log_raw({"action": "something"}) + self.log.log_raw({"action": "log", "message": "message"}) + + self.log.test_end("test end") + self.log.suite_end("suite end") + return True + + +def running_env(**kw): + return get_running_env(flavor="xpcshell", xpcshell_mozinfo=MOZINFO, **kw) + + +@mock.patch("runxpcshelltests.XPCShellTests", new=XPCShellTests) +def test_xpcshell_metrics(*mocked): + mach_cmd, metadata, env = running_env(tests=[str(EXAMPLE_XPCSHELL_TEST)]) + + sys = env.layers[SYSTEM] + xpcshell = env.layers[TEST] + + try: + with sys as s, xpcshell as x: + x(s(metadata)) + finally: + shutil.rmtree(mach_cmd._mach_context.state_dir) + + res = metadata.get_results() + assert len(res) == 1 + assert res[0]["name"] == "test_xpcshell.js" + results = res[0]["results"] + + assert results[0]["name"] == "metrics1" + assert results[0]["values"] == [1] + + +def _test_xpcshell_fail(err, *mocked): + mach_cmd, metadata, env = running_env(tests=[str(EXAMPLE_XPCSHELL_TEST)]) + sys = env.layers[SYSTEM] + xpcshell = env.layers[TEST] + try: + with sys as s, xpcshell as x, pytest.raises(err): + x(s(metadata)) + finally: + shutil.rmtree(mach_cmd._mach_context.state_dir) + + +@mock.patch("runxpcshelltests.XPCShellTests", new=XPCShellTestsFail) +def test_xpcshell_metrics_fail(*mocked): + return _test_xpcshell_fail(XPCShellTestError, mocked) + + +@mock.patch("runxpcshelltests.XPCShellTests", new=XPCShellTestsNoPerfMetrics) +def test_xpcshell_no_perfmetrics(*mocked): + return _test_xpcshell_fail(utils.NoPerfMetricsError, *mocked) + + +@mock.patch("runxpcshelltests.XPCShellTests", new=XPCShellTests) +def test_xpcshell_perfherder(*mocked): + return _test_xpcshell_perfherder(*mocked) + + +@mock.patch("runxpcshelltests.XPCShellTests", new=XPCShellTests) +def test_xpcshell_perfherder_on_try(*mocked): + old = utils.ON_TRY + utils.ON_TRY = xpcshell.ON_TRY = not utils.ON_TRY + + try: + return _test_xpcshell_perfherder(*mocked) + finally: + utils.ON_TRY = old + xpcshell.ON_TRY = old + + +def _test_xpcshell_perfherder(*mocked): + mach_cmd, metadata, env = running_env( + perfherder=True, xpcshell_cycles=10, tests=[str(EXAMPLE_XPCSHELL_TEST)] + ) + + sys = env.layers[SYSTEM] + xpcshell = env.layers[TEST] + metrics = env.layers[METRICS] + + with temp_file() as output: + env.set_arg("output", output) + try: + with sys as s, xpcshell as x, metrics as m: + m(x(s(metadata))) + finally: + shutil.rmtree(mach_cmd._mach_context.state_dir) + + output_file = metadata.get_output() + with open(output_file) as f: + output = json.loads(f.read()) + + # Check some metadata + assert output["application"]["name"] == "firefox" + assert output["framework"]["name"] == "mozperftest" + + # Check some numbers in our data + assert len(output["suites"]) == 1 + assert len(output["suites"][0]["subtests"]) == 3 + assert "value" not in output["suites"][0] + assert any(r > 0 for r in output["suites"][0]["subtests"][0]["replicates"]) + + for subtest in output["suites"][0]["subtests"]: + assert subtest["name"].startswith("metrics") diff --git a/python/mozperftest/mozperftest/tools.py b/python/mozperftest/mozperftest/tools.py new file mode 100644 index 0000000000..ab8af66ea7 --- /dev/null +++ b/python/mozperftest/mozperftest/tools.py @@ -0,0 +1,148 @@ +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at http://mozilla.org/MPL/2.0/. +import json +import os +import shutil +import tempfile +from pathlib import Path + + +class PerformanceChangeDetected(Exception): + """Raised when a performance change is detected. + + This failure happens with regressions, and improvements. There + is no unique failure for each of them. + + TODO: We eventually need to be able to distinguish between these. + To do so, we would need to incorporate the "lower_is_better" settings + into the detection tooling. + """ + + pass + + +def run_side_by_side(artifacts, kwargs): + from mozperftest_tools.side_by_side import SideBySide + + output_specified = None + if "output" in kwargs: + output_specified = kwargs.pop("output") + + if output_specified: + s = SideBySide(str(output_specified)) + s.run(**kwargs) + print(f"Results can be found in {output_specified}") + else: + tempdir = tempfile.mkdtemp() + s = SideBySide(str(tempdir)) + s.run(**kwargs) + try: + for file in os.listdir(tempdir): + if ( + file.endswith(".mp4") + or file.endswith(".gif") + or file.endswith(".json") + ): + print(f"Copying from {tempdir}/{file} to {artifacts}") + shutil.copy(Path(tempdir, file), artifacts) + finally: + shutil.rmtree(tempdir) + + +def _gather_task_names(kwargs): + task_names = kwargs.get("task_names", []) + if len(task_names) == 0: + if kwargs.get("test_name", None) is None: + raise Exception("No test, or task names given!") + if kwargs.get("platform", None) is None: + raise Exception("No platform, or task names given!") + task_names.append(kwargs["platform"] + "-" + kwargs["test_name"]) + return task_names + + +def _get_task_splitter(task): + splitter = "/opt-" + if splitter not in task: + splitter = "/" + task.split("/")[-1].split("-")[0] + "-" + return splitter + + +def _format_changes_to_str(all_results): + changes_detected = None + for task, results in all_results.items(): + for pltype, metrics in results["metrics-with-changes"].items(): + for metric, changes in metrics.items(): + for revision, diffs in changes.items(): + if changes_detected is None: + changes_detected = "REVISION PL_TYPE METRIC %-DIFFERENCE\n" + changes_detected += f"{revision} {pltype} {metric} {str(diffs)}\n" + return changes_detected + + +def run_change_detector(artifacts, kwargs): + from mozperftest_tools.regression_detector import ChangeDetector + + tempdir = tempfile.mkdtemp() + detector = ChangeDetector(tempdir) + + all_results = {} + results_path = Path(artifacts, "results.json") + try: + for task in _gather_task_names(kwargs): + splitter = _get_task_splitter(task) + + platform, test_name = task.split(splitter) + platform += splitter[:-1] + + new_test_name = test_name + new_platform_name = platform + if kwargs["new_test_name"] is not None: + new_test_name = kwargs["new_test_name"] + if kwargs["new_platform"] is not None: + new_platform_name = kwargs["new_platform_name"] + + all_changed_revisions, changed_metric_revisions = detector.detect_changes( + test_name=test_name, + new_test_name=new_test_name, + platform=platform, + new_platform=new_platform_name, + base_revision=kwargs["base_revision"], + new_revision=kwargs["new_revision"], + base_branch=kwargs["base_branch"], + new_branch=kwargs["new_branch"], + # Depth of -1 means auto-computed (everything in between the two given revisions), + # None is direct comparisons, anything else uses the new_revision as a start + # and goes backwards from there. + depth=kwargs.get("depth", None), + skip_download=False, + overwrite=False, + ) + + # The task names are unique, so we don't need to worry about + # them overwriting each other + all_results[task] = {} + all_results[task]["revisions-with-changes"] = list(all_changed_revisions) + all_results[task]["metrics-with-changes"] = changed_metric_revisions + + changes_detected = _format_changes_to_str(all_results) + if changes_detected is not None: + print(changes_detected) + raise PerformanceChangeDetected( + "[ERROR] A significant performance change was detected in your patch! " + "See the logs above, or the results.json artifact that was produced for " + "more information." + ) + + finally: + shutil.rmtree(tempdir) + + print(f"Saving change detection results to {str(results_path)}") + with results_path.open("w") as f: + json.dump(all_results, f, indent=4) + + +TOOL_RUNNERS = { + "side-by-side": run_side_by_side, + "change-detector": run_change_detector, +} diff --git a/python/mozperftest/mozperftest/utils.py b/python/mozperftest/mozperftest/utils.py new file mode 100644 index 0000000000..d1ecc7646d --- /dev/null +++ b/python/mozperftest/mozperftest/utils.py @@ -0,0 +1,634 @@ +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at http://mozilla.org/MPL/2.0/. +import contextlib +import functools +import importlib +import inspect +import logging +import os +import pathlib +import re +import shlex +import shutil +import subprocess +import sys +import tempfile +from collections import defaultdict +from datetime import date, datetime, timedelta +from io import StringIO +from pathlib import Path + +import requests +from redo import retry +from requests.packages.urllib3.util.retry import Retry + +RETRY_SLEEP = 10 +API_ROOT = "https://firefox-ci-tc.services.mozilla.com/api/index/v1" +MULTI_REVISION_ROOT = f"{API_ROOT}/namespaces" +MULTI_TASK_ROOT = f"{API_ROOT}/tasks" +ON_TRY = "MOZ_AUTOMATION" in os.environ +DOWNLOAD_TIMEOUT = 30 +METRICS_MATCHER = re.compile(r"(perfMetrics\s.*)") +PRETTY_APP_NAMES = { + "org.mozilla.fenix": "fenix", + "org.mozilla.firefox": "fenix", + "org.mozilla.geckoview_example": "geckoview", +} + + +class NoPerfMetricsError(Exception): + """Raised when perfMetrics were not found, or were not output + during a test run.""" + + def __init__(self, flavor): + super().__init__( + f"No perftest results were found in the {flavor} test. Results must be " + 'reported using:\n info("perfMetrics", { metricName: metricValue });' + ) + + +class LogProcessor: + def __init__(self, matcher): + self.buf = "" + self.stdout = sys.__stdout__ + self.matcher = matcher + self._match = [] + + @property + def match(self): + return self._match + + def write(self, buf): + while buf: + try: + newline_index = buf.index("\n") + except ValueError: + # No newline, wait for next call + self.buf += buf + break + + # Get data up to next newline and combine with previously buffered data + data = self.buf + buf[: newline_index + 1] + buf = buf[newline_index + 1 :] + + # Reset buffer then output line + self.buf = "" + if data.strip() == "": + continue + self.stdout.write(data.strip("\n") + "\n") + + # Check if a temporary commit wa created + match = self.matcher.match(data) + if match: + # Last line found is the revision we want + self._match.append(match.group(1)) + + def flush(self): + pass + + +@contextlib.contextmanager +def silence(layer=None): + if layer is None: + to_patch = (MachLogger,) + else: + to_patch = (MachLogger, layer) + + meths = ("info", "debug", "warning", "error", "log") + patched = defaultdict(dict) + + oldout, olderr = sys.stdout, sys.stderr + sys.stdout, sys.stderr = StringIO(), StringIO() + + def _vacuum(*args, **kw): + sys.stdout.write(str(args)) + + for obj in to_patch: + for meth in meths: + if not hasattr(obj, meth): + continue + patched[obj][meth] = getattr(obj, meth) + setattr(obj, meth, _vacuum) + + stdout = stderr = None + try: + sys.stdout.buffer = sys.stdout + sys.stderr.buffer = sys.stderr + sys.stdout.fileno = sys.stderr.fileno = lambda: -1 + try: + yield sys.stdout, sys.stderr + except Exception: + sys.stdout.seek(0) + stdout = sys.stdout.read() + sys.stderr.seek(0) + stderr = sys.stderr.read() + raise + finally: + sys.stdout, sys.stderr = oldout, olderr + for obj, meths in patched.items(): + for name, old_func in meths.items(): + try: + setattr(obj, name, old_func) + except Exception: + pass + if stdout is not None: + print(stdout) + if stderr is not None: + print(stderr) + + +def simple_platform(): + plat = host_platform() + + if plat.startswith("win"): + return "win" + elif plat.startswith("linux"): + return "linux" + else: + return "mac" + + +def host_platform(): + is_64bits = sys.maxsize > 2**32 + + if sys.platform.startswith("win"): + if is_64bits: + return "win64" + elif sys.platform.startswith("linux"): + if is_64bits: + return "linux64" + elif sys.platform.startswith("darwin"): + return "darwin" + + raise ValueError(f"platform not yet supported: {sys.platform}") + + +class MachLogger: + """Wrapper around the mach logger to make logging simpler.""" + + def __init__(self, mach_cmd): + self._logger = mach_cmd.log + + @property + def log(self): + return self._logger + + def info(self, msg, name="mozperftest", **kwargs): + self._logger(logging.INFO, name, kwargs, msg) + + def debug(self, msg, name="mozperftest", **kwargs): + self._logger(logging.DEBUG, name, kwargs, msg) + + def warning(self, msg, name="mozperftest", **kwargs): + self._logger(logging.WARNING, name, kwargs, msg) + + def error(self, msg, name="mozperftest", **kwargs): + self._logger(logging.ERROR, name, kwargs, msg) + + +def install_package(virtualenv_manager, package, ignore_failure=False): + """Installs a package using the virtualenv manager. + + Makes sure the package is really installed when the user already has it + in their local installation. + + Returns True on success, or re-raise the error. If ignore_failure + is set to True, ignore the error and return False + """ + from pip._internal.req.constructors import install_req_from_line + + # Ensure that we are looking in the right places for packages. This + # is required in CI because pip installs in an area that is not in + # the search path. + venv_site_lib = str(Path(virtualenv_manager.bin_path, "..", "lib").resolve()) + venv_site_packages = str( + Path( + venv_site_lib, + f"python{sys.version_info.major}.{sys.version_info.minor}", + "site-packages", + ) + ) + if venv_site_packages not in sys.path and ON_TRY: + sys.path.insert(0, venv_site_packages) + + req = install_req_from_line(package) + req.check_if_exists(use_user_site=False) + # already installed, check if it's in our venv + if req.satisfied_by is not None: + site_packages = os.path.abspath(req.satisfied_by.location) + if site_packages.startswith(venv_site_lib): + # already installed in this venv, we can skip + return True + with silence(): + try: + subprocess.check_call( + [virtualenv_manager.python_path, "-m", "pip", "install", package] + ) + return True + except Exception: + if not ignore_failure: + raise + return False + + +def install_requirements_file( + virtualenv_manager, requirements_file, ignore_failure=False +): + """Installs a package using the virtualenv manager. + + Makes sure the package is really installed when the user already has it + in their local installation. + + Returns True on success, or re-raise the error. If ignore_failure + is set to True, ignore the error and return False + """ + + # Ensure that we are looking in the right places for packages. This + # is required in CI because pip installs in an area that is not in + # the search path. + venv_site_lib = str(Path(virtualenv_manager.bin_path, "..", "lib").resolve()) + venv_site_packages = Path( + venv_site_lib, + f"python{sys.version_info.major}.{sys.version_info.minor}", + "site-packages", + ) + if not venv_site_packages.exists(): + venv_site_packages = Path( + venv_site_lib, + "site-packages", + ) + + venv_site_packages = str(venv_site_packages) + if venv_site_packages not in sys.path and ON_TRY: + sys.path.insert(0, venv_site_packages) + + with silence(): + cwd = os.getcwd() + try: + os.chdir(Path(requirements_file).parent) + subprocess.check_call( + [ + virtualenv_manager.python_path, + "-m", + "pip", + "install", + "--no-deps", + "-r", + requirements_file, + "--no-index", + "--find-links", + "https://pypi.pub.build.mozilla.org/pub/", + ] + ) + return True + except Exception: + if not ignore_failure: + raise + finally: + os.chdir(cwd) + return False + + +# on try, we create tests packages where tests, like +# xpcshell tests, don't have the same path. +# see - python/mozbuild/mozbuild/action/test_archive.py +# this mapping will map paths when running there. +# The key is the source path, and the value the ci path +_TRY_MAPPING = { + Path("netwerk"): Path("xpcshell", "tests", "netwerk"), + Path("dom"): Path("mochitest", "tests", "dom"), +} + + +def build_test_list(tests): + """Collects tests given a list of directories, files and URLs. + + Returns a tuple containing the list of tests found and a temp dir for tests + that were downloaded from an URL. + """ + temp_dir = None + + if isinstance(tests, str): + tests = [tests] + res = [] + for test in tests: + if test.startswith("http"): + if temp_dir is None: + temp_dir = tempfile.mkdtemp() + target = Path(temp_dir, test.split("/")[-1]) + download_file(test, target) + res.append(str(target)) + continue + + p_test = Path(test) + if ON_TRY and not p_test.resolve().exists(): + # until we have pathlib.Path.is_relative_to() (3.9) + for src_path, ci_path in _TRY_MAPPING.items(): + src_path, ci_path = str(src_path), str(ci_path) # noqa + if test.startswith(src_path): + p_test = Path(test.replace(src_path, ci_path)) + break + + resolved_test = p_test.resolve() + + if resolved_test.is_file(): + res.append(str(resolved_test)) + elif resolved_test.is_dir(): + for file in resolved_test.rglob("perftest_*.js"): + res.append(str(file)) + else: + raise FileNotFoundError(str(resolved_test)) + res.sort() + return res, temp_dir + + +def download_file(url, target, retry_sleep=RETRY_SLEEP, attempts=3): + """Downloads a file, given an URL in the target path. + + The function will attempt several times on failures. + """ + + def _download_file(url, target): + req = requests.get(url, stream=True, timeout=30) + target_dir = target.parent.resolve() + if str(target_dir) != "": + target_dir.mkdir(exist_ok=True) + + with target.open("wb") as f: + for chunk in req.iter_content(chunk_size=1024): + if not chunk: + continue + f.write(chunk) + f.flush() + return target + + return retry( + _download_file, + args=(url, target), + attempts=attempts, + sleeptime=retry_sleep, + jitter=0, + ) + + +@contextlib.contextmanager +def temporary_env(**env): + old = {} + for key, value in env.items(): + old[key] = os.environ.get(key) + if value is None and key in os.environ: + del os.environ[key] + elif value is not None: + os.environ[key] = value + try: + yield + finally: + for key, value in old.items(): + if value is None and key in os.environ: + del os.environ[key] + elif value is not None: + os.environ[key] = value + + +def convert_day(day): + if day in ("yesterday", "today"): + curr = date.today() + if day == "yesterday": + curr = curr - timedelta(1) + day = curr.strftime("%Y.%m.%d") + else: + # verify that the user provided string is in the expected format + # if it can't parse it, it'll raise a value error + datetime.strptime(day, "%Y.%m.%d") + + return day + + +def get_revision_namespace_url(route, day="yesterday"): + """Builds a URL to obtain all the namespaces of a given build route for a single day.""" + day = convert_day(day) + return f"""{MULTI_REVISION_ROOT}/{route}.{day}.revision""" + + +def get_multi_tasks_url(route, revision, day="yesterday"): + """Builds a URL to obtain all the tasks of a given build route for a single day. + + If previous is true, then we get builds from the previous day, + otherwise, we look at the current day. + """ + day = convert_day(day) + return f"""{MULTI_TASK_ROOT}/{route}.{day}.revision.{revision}""" + + +def strtobool(val): + if isinstance(val, (bool, int)): + return bool(val) + if not isinstance(bool, str): + raise ValueError(val) + val = val.lower() + if val in ("y", "yes", "t", "true", "on", "1"): + return 1 + elif val in ("n", "no", "f", "false", "off", "0"): + return 0 + else: + raise ValueError("invalid truth value %r" % (val,)) + + +@contextlib.contextmanager +def temp_dir(): + tempdir = tempfile.mkdtemp() + try: + yield tempdir + finally: + shutil.rmtree(tempdir) + + +def load_class(path): + """Loads a class given its path and returns it. + + The path is a string of the form `package.module:class` that points + to the class to be imported. + + If if can't find it, or if the path is malformed, + an ImportError is raised. + """ + if ":" not in path: + raise ImportError(f"Malformed path '{path}'") + elmts = path.split(":") + if len(elmts) != 2: + raise ImportError(f"Malformed path '{path}'") + mod_name, klass_name = elmts + try: + mod = importlib.import_module(mod_name) + except ModuleNotFoundError: + raise ImportError(f"Can't find '{mod_name}'") + try: + klass = getattr(mod, klass_name) + except AttributeError: + raise ImportError(f"Can't find '{klass_name}' in '{mod_name}'") + return klass + + +def load_class_from_path(klass_name, path): + """This function returns a Transformer class with the given path. + + :param str path: The path points to the custom transformer. + :param bool ret_members: If true then return inspect.getmembers(). + :return Transformer if not ret_members else inspect.getmembers(). + """ + file = pathlib.Path(path) + + if not file.exists(): + raise ImportError(f"The class path {path} does not exist.") + + # Importing a source file directly + spec = importlib.util.spec_from_file_location(name=file.name, location=path) + module = importlib.util.module_from_spec(spec) + spec.loader.exec_module(module) + + members = inspect.getmembers( + module, + lambda c: inspect.isclass(c) and c.__name__ == klass_name, + ) + + if not members: + raise ImportError(f"The path {path} was found but it was not a valid class.") + + return members[0][-1] + + +def run_script(cmd, cmd_args=None, verbose=False, display=False, label=None): + """Used to run a command in a subprocess.""" + if isinstance(cmd, str): + cmd = shlex.split(cmd) + try: + joiner = shlex.join + except AttributeError: + # Python < 3.8 + joiner = subprocess.list2cmdline + + if label is None: + label = joiner(cmd) + sys.stdout.write(f"=> {label} ") + if cmd_args is None: + args = cmd + else: + args = cmd + list(cmd_args) + sys.stdout.flush() + try: + if verbose: + sys.stdout.write(f"\nRunning {' '.join(args)}\n") + sys.stdout.flush() + output = subprocess.check_output(args) + if display: + sys.stdout.write("\n") + for line in output.split(b"\n"): + sys.stdout.write(line.decode("utf8") + "\n") + sys.stdout.write("[OK]\n") + sys.stdout.flush() + return True, output + except subprocess.CalledProcessError as e: + for line in e.output.split(b"\n"): + sys.stdout.write(line.decode("utf8") + "\n") + sys.stdout.write("[FAILED]\n") + sys.stdout.flush() + return False, e + + +def run_python_script( + virtualenv_manager, + module, + module_args=None, + verbose=False, + display=False, + label=None, +): + """Used to run a Python script in isolation.""" + if label is None: + label = module + cmd = [virtualenv_manager.python_path, "-m", module] + return run_script(cmd, module_args, verbose=verbose, display=display, label=label) + + +def checkout_script(cmd, cmd_args=None, verbose=False, display=False, label=None): + return run_script(cmd, cmd_args, verbose, display, label)[0] + + +def checkout_python_script( + virtualenv_manager, + module, + module_args=None, + verbose=False, + display=False, + label=None, +): + return run_python_script( + virtualenv_manager, module, module_args, verbose, display, label + )[0] + + +_URL = ( + "{0}/secrets/v1/secret/project" + "{1}releng{1}gecko{1}build{1}level-{2}{1}conditioned-profiles" +) +_WPT_URL = "{0}/secrets/v1/secret/project/perftest/gecko/level-{1}/perftest-login" +_DEFAULT_SERVER = "https://firefox-ci-tc.services.mozilla.com" + + +@functools.lru_cache() +def get_tc_secret(wpt=False): + """Returns the Taskcluster secret. + + Raises an OSError when not running on try + """ + if not ON_TRY: + raise OSError("Not running in Taskcluster") + session = requests.Session() + retry = Retry(total=5, backoff_factor=0.1, status_forcelist=[500, 502, 503, 504]) + http_adapter = requests.adapters.HTTPAdapter(max_retries=retry) + session.mount("https://", http_adapter) + session.mount("http://", http_adapter) + secrets_url = _URL.format( + os.environ.get("TASKCLUSTER_PROXY_URL", _DEFAULT_SERVER), + "%2F", + os.environ.get("MOZ_SCM_LEVEL", "1"), + ) + if wpt: + secrets_url = _WPT_URL.format( + os.environ.get("TASKCLUSTER_PROXY_URL", _DEFAULT_SERVER), + os.environ.get("MOZ_SCM_LEVEL", "1"), + ) + res = session.get(secrets_url, timeout=DOWNLOAD_TIMEOUT) + res.raise_for_status() + return res.json()["secret"] + + +def get_output_dir(output, folder=None): + if output is None: + raise Exception("Output path was not provided.") + + result_dir = Path(output) + if folder is not None: + result_dir = Path(result_dir, folder) + + result_dir.mkdir(parents=True, exist_ok=True) + result_dir = result_dir.resolve() + + return result_dir + + +def create_path(path): + if path.exists(): + return path + else: + create_path(path.parent) + path.mkdir(exist_ok=True) + return path + + +def get_pretty_app_name(app): + # XXX See bug 1712337, we need a singluar point of entry + # for the binary to allow us to get the version/app info + # so that we can get a pretty name on desktop. + return PRETTY_APP_NAMES[app] diff --git a/python/mozperftest/perfdocs/config.yml b/python/mozperftest/perfdocs/config.yml new file mode 100644 index 0000000000..049d004682 --- /dev/null +++ b/python/mozperftest/perfdocs/config.yml @@ -0,0 +1,49 @@ +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at http://mozilla.org/MPL/2.0/. +--- +name: mozperftest +manifest: None +static-only: False +suites: + netwerk/test/perf: + description: "Performance tests from the 'network/test/perf' folder." + tests: + youtube-scroll: "" + facebook-scroll: "" + cloudflare: "" + controlled: "" + g-search: "" + g-image: "" + lq-fetch: "" + youtube-noscroll: "" + netwerk/test/unit: + description: "Performance tests from the 'netwerk/test/unit' folder." + tests: + http3 raw: "" + testing/performance: + description: "Performance tests from the 'testing/performance' folder." + tests: + Politico Link: "" + BBC Link: "" + JSConf (cold): "" + Facebook: "" + YouTube Link: "" + pageload: "" + JSConf (warm): "" + perfstats: "" + webpagetest-firefox: "" + webpagetest-chrome: "" + android-startup: "" + + browser/base/content/test: + description: "Performance tests from the 'browser/base/content/test' folder." + tests: + Dom-size: "" + + dom/serviceworkers/test/performance: + description: "Performance tests running through Mochitest for Service Workers" + tests: + "Service Worker Caching": "" + "Service Worker Fetch": "" + "Service Worker Registration": "" diff --git a/python/mozperftest/perfdocs/developing.rst b/python/mozperftest/perfdocs/developing.rst new file mode 100644 index 0000000000..97125d8729 --- /dev/null +++ b/python/mozperftest/perfdocs/developing.rst @@ -0,0 +1,154 @@ +Developing in mozperftest +========================= + +Architecture overview +--------------------- + +`mozperftest` implements a mach command that is a thin wrapper on the +top of `runner.py`, which allows us to run the tool without having to go through +a mach call. Command arguments are prepared in `argparser.py` and then made +available for the runner. + +The runner creates a `MachEnvironment` instance (see `environment.py`) and a +`Metadata` instance (see `metadata.py`). These two objects are shared during the +whole test and used to share data across all parts. + +The runner then calls `MachEnvironment.run`, which is in charge of running the test. +The `MachEnvironment` instance runs a sequence of **layers**. + +Layers are classes responsible of one single aspect of a performance test. They +are organized in three categories: + +- **system**: anything that sets up and tears down some resources or services + on the system. Existing system layers: **android**, **proxy** +- **test**: layers that are in charge of running a test to collect metrics. + Existing test layers: **browsertime** and **androidlog** +- **metrics**: all layers that process the metrics to turn them into usable + metrics. Existing system layers: **perfherder** and **console** + +The MachEnvironment instance collects a series of layers for each category and +runs them sequentially. + +The goal of this organization is to allow adding new performance tests runners +that will be based on a specific combination of layers. To avoid messy code, +we need to make sure that each layer represents a single aspect of the process +and that is completely independent from other layers (besides sharing the data +through the common environment.) + +For instance, we could use `perftest` to run a C++ benchmark by implementing a +new **test** layer. + + +Layer +----- + +A layer is a class that inherits from `mozperftest.layers.Layer` and implements +a few methods and class variables. + +List of methods and variables: + +- `name`: name of the layer (class variable, mandatory) +- `activated`: boolean to activate by default the layer (class variable, False) +- `user_exception`: will trigger the `on_exception` hook when an exception occurs +- `arguments`: dict containing arguments. Each argument is following + the `argparser` standard +- `run(self, medatata)`: called to execute the layer +- `setup(self)`: called when the layer is about to be executed +- `teardown(self)`: called when the layer is exiting + +Example:: + + class EmailSender(Layer): + """Sends an email with the results + """ + name = "email" + activated = False + + arguments = { + "recipient": { + "type": str, + "default": "tarek@mozilla.com", + "help": "Recipient", + }, + } + + def setup(self): + self.server = smtplib.SMTP(smtp_server,port) + + def teardown(self): + self.server.quit() + + def __call__(self, metadata): + self.server.send_email(self.get_arg("recipient"), metadata.results()) + + +It can then be added to one of the top functions that are used to create a list +of layers for each category: + +- **mozperftest.metrics.pick_metrics** for the metrics category +- **mozperftest.system.pick_system** for the system category +- **mozperftest.test.pick_browser** for the test category + +And also added in each `get_layers` function in each of those category. +The `get_layers` functions are invoked when building the argument parser. + +In our example, adding the `EmailSender` layer will add two new options: + +- **--email** a flag to activate the layer +- **--email-recipient** + + +Important layers +---------------- + +**mozperftest** can be used to run performance tests against browsers using the +**browsertime** test layer. It leverages the `browsertime.js +<https://www.sitespeed.io/documentation/browsertime/>`_ framework and provides +a full integration into Mozilla's build and CI systems. + +Browsertime uses the selenium webdriver client to drive the browser, and +provides some metrics to measure performance during a user journey. + + +Coding style +------------ + +For the coding style, we want to: + +- Follow `PEP 257 <https://www.python.org/dev/peps/pep-0257/>`_ for docstrings +- Avoid complexity as much as possible +- Use modern Python 3 code (for instance `pathlib` instead of `os.path`) +- Avoid dependencies on Mozilla build projects and frameworks as much as possible + (mozharness, mozbuild, etc), or make sure they are isolated and documented + + +Landing patches +--------------- + +.. warning:: + + It is mandatory for each patch to have a test. Any change without a test + will be rejected. + +Before landing a patch for mozperftest, make sure you run `perftest-test`:: + + % ./mach perftest-test + => black [OK] + => flake8 [OK] + => remove old coverage data [OK] + => running tests [OK] + => coverage + Name Stmts Miss Cover Missing + ------------------------------------------------------------------------------------------ + mozperftest/metrics/notebook/analyzer.py 29 20 31% 26-36, 39-42, 45-51 + ... + mozperftest/system/proxy.py 37 0 100% + ------------------------------------------------------------------------------------------ + TOTAL 1614 240 85% + + [OK] + +The command will run `black`, `flake8` and also make sure that the test coverage has not regressed. + +You can use the `-s` option to bypass flake8/black to speed up your workflow, but make +sure you do a full tests run. You can also pass the name of one single test module. diff --git a/python/mozperftest/perfdocs/index.rst b/python/mozperftest/perfdocs/index.rst new file mode 100644 index 0000000000..8c313197b3 --- /dev/null +++ b/python/mozperftest/perfdocs/index.rst @@ -0,0 +1,20 @@ +=========== +Mozperftest +=========== + +**Mozperftest** can be used to run performance tests. + + +.. toctree:: + + running + tools + writing + developing + vision + +The following documents all testing we have for mozperftest. +If the owner does not specify the Usage and Description, it's marked N/A. + +{documentation} +If you have any questions, please see this `wiki page <https://wiki.mozilla.org/TestEngineering/Performance#Where_to_find_us>`_. diff --git a/python/mozperftest/perfdocs/running.rst b/python/mozperftest/perfdocs/running.rst new file mode 100644 index 0000000000..ed8d9947a9 --- /dev/null +++ b/python/mozperftest/perfdocs/running.rst @@ -0,0 +1,51 @@ +Running a performance test +========================== + +You can run `perftest` locally or in Mozilla's CI + +Running locally +--------------- + +Running a test is as simple as calling it using `mach perftest` in a mozilla-central source +checkout:: + + $ ./mach perftest + +The `mach` command will bootstrap the installation of all required tools for the +framework to run, and display a selection screen to pick a test. Once the +selection is done, the performance test will run locally. + +If you know what test you want to run, you can use its path explicitly:: + + $ ./mach perftest perftest_script.js + +`mach perftest` comes with numerous options, and the test script should provide +decent defaults so you don't have to bother with them. If you need to tweak some +options, you can use `./mach perftest --help` to learn about them. + + +Running in the CI +----------------- + +.. warning:: + + If you are looking for how to run performance tests in CI and ended up here, you might want to checkout :ref:`Mach Try Perf`. + +.. warning:: + + If you plan to run tests often in the CI for android, you should contact the android + infra team to make sure there's availability in our pool of devices. + +You can run in the CI directly from the `mach perftest` command by adding the `--push-to-try` option +to your locally working perftest call. + +This call will run the fuzzy selector and then send the job into our CI:: + + $ ./mach perftest --push-to-try + +We have phones on bitbar that can run your android tests. Tests are fairly fast +to run in the CI because they use sparse profiles. Depending on the +availability of workers, once the task starts, it takes around 15mn to start +the test. + + diff --git a/python/mozperftest/perfdocs/tools.rst b/python/mozperftest/perfdocs/tools.rst new file mode 100644 index 0000000000..4bb975e9f9 --- /dev/null +++ b/python/mozperftest/perfdocs/tools.rst @@ -0,0 +1,21 @@ +Running a performance tool +========================== + +You can run `perftest-tools` locally. + +Running locally +--------------- + +You can run `mach perftest-tools` in a mozilla-central source +checkout:: + + $ ./mach perftest-tools side-by-side --help + +The `mach` command will bootstrap the installation of all required dependencies for the +side-by-side tool to run. + +The following arguments are required: `-t/--test-name`, `--base-revision`, `--new-revision`, +`--base-platform` + +The `--help` argument will explain more about what arguments you need to +run in order to use the tool. diff --git a/python/mozperftest/perfdocs/vision.rst b/python/mozperftest/perfdocs/vision.rst new file mode 100644 index 0000000000..64a1f4f92b --- /dev/null +++ b/python/mozperftest/perfdocs/vision.rst @@ -0,0 +1,66 @@ +Vision +====== + +The `mozperftest` project was created with the intention to replace all +existing performance testing frameworks that exist in the mozilla central +source tree with a single one, and make performance tests a standardized, first-class +citizen, alongside mochitests and xpcshell tests. + +We want to give the ability to any developer to write performance tests in +their component, both locally and in the CI, exactly like how they would do with +`xpcshell` tests and `mochitests`. + +Historically, we have `Talos`, that provided a lot of different tests, from +micro-benchmarks to page load tests. From there we had `Raptor`, that was a +fork of Talos, focusing on page loads only. Then `mach browsertime` was added, +which was a wrapper around the `browsertime` tool. + +All those frameworks besides `mach browsertime` were mainly focusing on working +well in the CI, and were hard to use locally. `mach browsertime` worked locally but +not on all platforms and was specific to the browsertime framework. + +`mozperftest` currently provides the `mach perftest` command, that will scan +for all tests that are declared in ini files such as +https://searchfox.org/mozilla-central/source/netwerk/test/perf/perftest.toml and +registered under **PERFTESTS_MANIFESTS** in `moz.build` files such as +https://searchfox.org/mozilla-central/source/netwerk/test/moz.build#17 + +If you launch `./mach perftest` without any parameters, you will get a full list +of available tests, and you can pick and run one. Adding `--push-to-try` will +run it on try. + +The framework loads perf tests and read its metadata, that can be declared +within the test. We have a parser that is currently able to recognize and load +**xpcshell** tests and **browsertime** tests, and a runner for each one of those. + +But the framework can be extended to support more formats. We would like to add +support for **jsshell** and any other format we have in m-c. + +A performance test is a script that perftest runs, and that returns metrics we +can use. Right now we consume those metrics directly in the console, and +also in perfherder, but other formats could be added. For instance, there's +a new **influxdb** output that has been added, to push the data in an **influxdb** +time series database. + +What is important is to make sure performance tests belong to the component it's +testing in the source tree. We've learned with Talos that grouping all performance +tests in a single place is problematic because there's no sense of ownership from +developers once it's added there. It becomes the perf team problem. If the tests +stay in each component alongside mochitests and xpcshell tests, the component +maintainers will own and maintain it. + + +Next steps +---------- + +We want to rewrite all Talos and Raptor tests into perftest. For Raptor, we need +to have the ability to use proxy records, which is a work in progress. From there, +running a **raptor** test will be a simple, one liner browsertime script. + +For Talos, we'll need to refactor the existing micro-benchmarks into xpchsell tests, +and if that does not suffice, create a new runner. + +For JS benchmarks, once the **jsshell** runner is added into perftest, it will be +straightforward. + + diff --git a/python/mozperftest/perfdocs/writing.rst b/python/mozperftest/perfdocs/writing.rst new file mode 100644 index 0000000000..232c17eedd --- /dev/null +++ b/python/mozperftest/perfdocs/writing.rst @@ -0,0 +1,228 @@ +Performance scripts +=================== + +Performance scripts are programs that drive the browser to run a specific +benchmark (like a page load or a lower level call) and produce metrics. + +We support two flavors right now in `perftest` (but it's easy to add +new ones): + +- **xpcshell** a classical xpcshell test, turned into a performance test +- **browsertime** a browsertime script, which runs a full browser and controls + it via a Selenium client. +- **mochitest** a classical mochitest test, turned into a performance test + +In order to qualify as performance tests, both flavors require metadata. + +For our supported flavors that are both Javascript modules, those are +provided in a `perfMetadata` mapping variable in the module, or in +the `module.exports` variable when using Node. + +This is the list of fields: + +- **owner**: name of the owner (person or team) [mandatory] +- **author**: author of the test +- **name**: name of the test [mandatory] +- **description**: short description [mandatory] +- **longDescription**: longer description +- **options**: options used to run the test +- **supportedBrowsers**: list of supported browsers (or "Any") +- **supportedPlatforms**: list of supported platforms (or "Any") +- **tags** a list of tags that describe the test + +Tests are registered using tests manifests and the **PERFTESTS_MANIFESTS** +variable in `moz.build` files - it's good practice to name this file +`perftest.toml`. + +Example of such a file: https://searchfox.org/mozilla-central/source/testing/performance/perftest.toml + + +xpcshell +-------- + +`xpcshell` tests are plain xpcshell tests, with two more things: + +- the `perfMetadata` variable, as described in the previous section +- calls to `info("perfMetrics", ...)` to send metrics to the `perftest` framework. + +Here's an example of such a metrics call:: + + # compute some speed metrics + let speed = 12345; + info("perfMetrics", JSON.stringify({ speed })); + + +Mochitest +--------- + +Similar to ``xpcshell`` tests, these are standard ``mochitest`` tests with some extra things: + +- the ``perfMetadata`` variable, as described in the previous section +- calls to ``info("perfMetrics", ...)`` to send metrics to the ``perftest`` framework + +Note that the ``perfMetadata`` variable can exist in any ``<script>...</script>`` element in the Mochitest HTML test file. The ``perfMetadata`` variable also needs a couple additional settings in Mochitest tests. These are the ``manifest``, and ``manifest_flavor`` options:: + + var perfMetadata = { + owner: "Performance Team", + name: "Test test", + description: "N/A", + options: { + default: { + perfherder: true, + perfherder_metrics: [ + { name: "Registration", unit: "ms" }, + ], + manifest: "perftest.toml", + manifest_flavor: "plain", + extra_args: [ + "headless", + ] + }, + }, + }; + +The ``extra_args`` setting provides an area to provide custom Mochitest command-line arguments for this test. + +Here's an example of a call that will produce metrics:: + + # compute some speed metrics + let speed = 12345; + info("perfMetrics", JSON.stringify({ speed })); + +Existing Mochitest unit tests can be modified with these to be compatible with mozperftest, but note that some issues exist when doing this: + +- unittest issues with mochitest tests running on hardware +- multiple configurations of a test running in a single manifest + +At the top of this document, you can find some information about the recommended approach for adding a new manifest dedicated to running performance tests. + +Locally, mozperftest uses ``./mach test`` to run your test. Always ensure that your test works in ``./mach test`` before attempting to run it through ``./mach perftest``. In CI, we use a custom "remote" run that runs Mochitest directly, skipping ``./mach test``. + +If everything is setup correctly, running a performance test locally will be as simple as this:: + + ./mach perftest <path/to/my/mochitest-test.html> + + +Browsertime +----------- + +With the browsertime layer, performance scenarios are Node modules that +implement at least one async function that will be called by the framework once +the browser has started. The function gets a webdriver session and can interact +with the browser. + +You can write complex, interactive scenarios to simulate a user journey, +and collect various metrics. + +Full documentation is available `here <https://www.sitespeed.io/documentation/sitespeed.io/scripting/>`_ + +The mozilla-central repository has a few performance tests script in +`testing/performance` and more should be added in components in the future. + +By convention, a performance test is prefixed with **perftest_** to be +recognized by the `perftest` command. + +A performance test implements at least one async function published in node's +`module.exports` as `test`. The function receives two objects: + +- **context**, which contains: + + - **options** - All the options sent from the CLI to Browsertime + - **log** - an instance to the log system so you can log from your navigation script + - **index** - the index of the runs, so you can keep track of which run you are currently on + - **storageManager** - The Browsertime storage manager that can help you read/store files to disk + - **selenium.webdriver** - The Selenium WebDriver public API object + - **selenium.driver** - The instantiated version of the WebDriver driving the current version of the browser + +- **command** provides API to interact with the browser. It's a wrapper + around the selenium client `Full documentation here <https://www.sitespeed.io/documentation/sitespeed.io/scripting/#commands>`_ + + +Below is an example of a test that visits the BBC homepage and clicks on a link. + +.. sourcecode:: javascript + + "use strict"; + + async function setUp(context) { + context.log.info("setUp example!"); + } + + async function test(context, commands) { + await commands.navigate("https://www.bbc.com/"); + + // Wait for browser to settle + await commands.wait.byTime(10000); + + // Start the measurement + await commands.measure.start("pageload"); + + // Click on the link and wait for page complete check to finish. + await commands.click.byClassNameAndWait("block-link__overlay-link"); + + // Stop and collect the measurement + await commands.measure.stop(); + } + + async function tearDown(context) { + context.log.info("tearDown example!"); + } + + module.exports = { + setUp, + test, + tearDown, + owner: "Performance Team", + test_name: "BBC", + description: "Measures pageload performance when clicking on a link from the bbc.com", + supportedBrowsers: "Any", + supportePlatforms: "Any", + }; + + +Besides the `test` function, scripts can implement a `setUp` and a `tearDown` function to run +some code before and after the test. Those functions will be called just once, whereas +the `test` function might be called several times (through the `iterations` option) + + +Hooks +----- + +A Python module can be used to run functions during a run lifecycle. Available hooks are: + +- **before_iterations(args)** runs before everything is started. Gets the args, which + can be changed. The **args** argument also contains a **virtualenv** variable that + can be used for installing Python packages (e.g. through `install_package <https://searchfox.org/mozilla-central/source/python/mozperftest/mozperftest/utils.py#115-144>`_). +- **before_runs(env)** runs before the test is launched. Can be used to + change the running environment. +- **after_runs(env)** runs after the test is done. +- **on_exception(env, layer, exception)** called on any exception. Provides the + layer in which the exception occurred, and the exception. If the hook returns `True` + the exception is ignored and the test resumes. If the hook returns `False`, the + exception is ignored and the test ends immediately. The hook can also re-raise the + exception or raise its own exception. + +In the example below, the `before_runs` hook is setting the options on the fly, +so users don't have to provide them in the command line:: + + from mozperftest.browser.browsertime import add_options + + url = "'https://www.example.com'" + + common_options = [("processStartTime", "true"), + ("firefox.disableBrowsertimeExtension", "true"), + ("firefox.android.intentArgument", "'-a'"), + ("firefox.android.intentArgument", "'android.intent.action.VIEW'"), + ("firefox.android.intentArgument", "'-d'"), + ("firefox.android.intentArgument", url)] + + + def before_runs(env, **kw): + add_options(env, common_options) + + +To use this hook module, it can be passed to the `--hooks` option:: + + $ ./mach perftest --hooks hooks.py perftest_example.js + + diff --git a/python/mozperftest/setup.cfg b/python/mozperftest/setup.cfg new file mode 100644 index 0000000000..2a9acf13da --- /dev/null +++ b/python/mozperftest/setup.cfg @@ -0,0 +1,2 @@ +[bdist_wheel] +universal = 1 diff --git a/python/mozperftest/setup.py b/python/mozperftest/setup.py new file mode 100644 index 0000000000..75ebab9305 --- /dev/null +++ b/python/mozperftest/setup.py @@ -0,0 +1,37 @@ +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this file, +# You can obtain one at http://mozilla.org/MPL/2.0/. + +from setuptools import setup + +PACKAGE_NAME = "mozperftest" +PACKAGE_VERSION = "0.2" + +deps = [ + "regex", + "jsonschema", + "attr", + "mozlog >= 6.0", + "mozdevice >= 4.0.0", + "mozproxy", + "mozinfo", + "mozfile", + "mozperftest-tools", +] + +setup( + name=PACKAGE_NAME, + version=PACKAGE_VERSION, + description="Mozilla's mach perftest command", + classifiers=["Programming Language :: Python :: 3.6"], + # Get strings from http://pypi.python.org/pypi?%3Aaction=list_classifiers + keywords="", + author="Mozilla Performance Test Engineering Team", + author_email="tools@lists.mozilla.org", + url="https://hg.mozilla.org/mozilla-central/file/tip/python/mozperftest", + license="MPL", + packages=["mozperftest"], + include_package_data=True, + zip_safe=False, + install_requires=deps, +) |