blob: b1de4882aa90fdd98886011f7eb233bb2648cd8d [file] [log] [blame]
// Copyright 2016 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#ifndef COMPONENTS_TEST_RUNNER_LAYOUT_DUMP_FLAGS_H_
#define COMPONENTS_TEST_RUNNER_LAYOUT_DUMP_FLAGS_H_
#include <string>
#include "base/logging.h"
#include "base/macros.h"
#include "base/values.h"
#include "components/test_runner/test_runner_export.h"
#include "components/test_runner/tracked_dictionary.h"
namespace test_runner {
// TODO(lukasza): Rename to LayoutTestRuntimeFlags.
class TEST_RUNNER_EXPORT LayoutDumpFlags {
public:
// Creates default flags (see also the Reset method).
LayoutDumpFlags();
// Resets all the values to their defaults.
void Reset();
TrackedDictionary& tracked_dictionary() { return dict_; }
const TrackedDictionary& tracked_dictionary() const { return dict_; }
#define DEFINE_BOOL_LAYOUT_DUMP_FLAG(name) \
bool name() const { \
bool result; \
bool found = dict_.current_values().GetBoolean(#name, &result); \
DCHECK(found); \
return result; \
} \
void set_##name(bool new_value) { dict_.SetBoolean(#name, new_value); }
// If true, the test_shell will generate pixel results in DumpAsText mode.
DEFINE_BOOL_LAYOUT_DUMP_FLAG(generate_pixel_results)
// If true, the test_shell will produce a plain text dump rather than a
// text representation of the renderer.
DEFINE_BOOL_LAYOUT_DUMP_FLAG(dump_as_text)
// If true and if dump_as_text_ is true, the test_shell will recursively
// dump all frames as plain text.
DEFINE_BOOL_LAYOUT_DUMP_FLAG(dump_child_frames_as_text)
// If true, the test_shell will produce a dump of the DOM rather than a text
// representation of the renderer.
DEFINE_BOOL_LAYOUT_DUMP_FLAG(dump_as_markup)
// If true and if dump_as_markup_ is true, the test_shell will recursively
// produce a dump of the DOM rather than a text representation of the
// renderer.
DEFINE_BOOL_LAYOUT_DUMP_FLAG(dump_child_frames_as_markup)
// If true, the test_shell will print out the child frame scroll offsets as
// well.
DEFINE_BOOL_LAYOUT_DUMP_FLAG(dump_child_frame_scroll_positions)
// If true, layout is to target printed pages.
DEFINE_BOOL_LAYOUT_DUMP_FLAG(is_printing)
// If true, don't dump output until notifyDone is called.
DEFINE_BOOL_LAYOUT_DUMP_FLAG(wait_until_done)
#undef DEFINE_BOOL_LAYOUT_DUMP_FLAG
// Reports whether recursing over child frames is necessary.
bool dump_child_frames() const {
if (dump_as_text())
return dump_child_frames_as_text();
else if (dump_as_markup())
return dump_child_frames_as_markup();
else
return dump_child_frame_scroll_positions();
}
private:
TrackedDictionary dict_;
DISALLOW_COPY_AND_ASSIGN(LayoutDumpFlags);
};
} // namespace test_runner
#endif // COMPONENTS_TEST_RUNNER_LAYOUT_DUMP_FLAGS_H_