| OLD | NEW |
| (Empty) |
| 1 // Copyright 2016 The Chromium Authors. All rights reserved. | |
| 2 // Use of this source code is governed by a BSD-style license that can be | |
| 3 // found in the LICENSE file. | |
| 4 | |
| 5 #ifndef COMPONENTS_TEST_RUNNER_LAYOUT_TEST_RUNTIME_FLAGS_H_ | |
| 6 #define COMPONENTS_TEST_RUNNER_LAYOUT_TEST_RUNTIME_FLAGS_H_ | |
| 7 | |
| 8 #include <string> | |
| 9 | |
| 10 #include "base/logging.h" | |
| 11 #include "base/macros.h" | |
| 12 #include "base/values.h" | |
| 13 #include "components/test_runner/test_runner_export.h" | |
| 14 #include "components/test_runner/tracked_dictionary.h" | |
| 15 | |
| 16 namespace test_runner { | |
| 17 | |
| 18 // LayoutTestRuntimeFlags stores flags controlled by layout tests at runtime | |
| 19 // (i.e. by calling testRunner.dumpAsText() or testRunner.waitUntilDone()). | |
| 20 // Changes to the flags are tracked (to help replicate them across renderers). | |
| 21 class TEST_RUNNER_EXPORT LayoutTestRuntimeFlags { | |
| 22 public: | |
| 23 // Creates default flags (see also the Reset method). | |
| 24 LayoutTestRuntimeFlags(); | |
| 25 | |
| 26 // Resets all the values to their defaults. | |
| 27 void Reset(); | |
| 28 | |
| 29 TrackedDictionary& tracked_dictionary() { return dict_; } | |
| 30 | |
| 31 #define DEFINE_BOOL_LAYOUT_TEST_RUNTIME_FLAG(name) \ | |
| 32 bool name() const { \ | |
| 33 bool result; \ | |
| 34 bool found = dict_.current_values().GetBoolean(#name, &result); \ | |
| 35 DCHECK(found); \ | |
| 36 return result; \ | |
| 37 } \ | |
| 38 void set_##name(bool new_value) { dict_.SetBoolean(#name, new_value); } | |
| 39 | |
| 40 #define DEFINE_STRING_LAYOUT_TEST_RUNTIME_FLAG(name) \ | |
| 41 std::string name() const { \ | |
| 42 std::string result; \ | |
| 43 bool found = dict_.current_values().GetString(#name, &result); \ | |
| 44 DCHECK(found); \ | |
| 45 return result; \ | |
| 46 } \ | |
| 47 void set_##name(const std::string& new_value) { \ | |
| 48 dict_.SetString(#name, new_value); \ | |
| 49 } | |
| 50 | |
| 51 // If true, the test_shell will generate pixel results in DumpAsText mode. | |
| 52 DEFINE_BOOL_LAYOUT_TEST_RUNTIME_FLAG(generate_pixel_results) | |
| 53 | |
| 54 // If true, the test_shell will produce a plain text dump rather than a | |
| 55 // text representation of the renderer. | |
| 56 DEFINE_BOOL_LAYOUT_TEST_RUNTIME_FLAG(dump_as_text) | |
| 57 | |
| 58 // If true and if dump_as_text_ is true, the test_shell will recursively | |
| 59 // dump all frames as plain text. | |
| 60 DEFINE_BOOL_LAYOUT_TEST_RUNTIME_FLAG(dump_child_frames_as_text) | |
| 61 | |
| 62 // If true, the test_shell will produce a dump of the DOM rather than a text | |
| 63 // representation of the renderer. | |
| 64 DEFINE_BOOL_LAYOUT_TEST_RUNTIME_FLAG(dump_as_markup) | |
| 65 | |
| 66 // If true and if dump_as_markup_ is true, the test_shell will recursively | |
| 67 // produce a dump of the DOM rather than a text representation of the | |
| 68 // renderer. | |
| 69 DEFINE_BOOL_LAYOUT_TEST_RUNTIME_FLAG(dump_child_frames_as_markup) | |
| 70 | |
| 71 // If true, the test_shell will print out the child frame scroll offsets as | |
| 72 // well. | |
| 73 DEFINE_BOOL_LAYOUT_TEST_RUNTIME_FLAG(dump_child_frame_scroll_positions) | |
| 74 | |
| 75 // If true, layout is to target printed pages. | |
| 76 DEFINE_BOOL_LAYOUT_TEST_RUNTIME_FLAG(is_printing) | |
| 77 | |
| 78 // If true, don't dump output until notifyDone is called. | |
| 79 DEFINE_BOOL_LAYOUT_TEST_RUNTIME_FLAG(wait_until_done) | |
| 80 | |
| 81 // If true, ends the test when a URL is loaded externally via | |
| 82 // WebFrameClient::loadURLExternally(). | |
| 83 DEFINE_BOOL_LAYOUT_TEST_RUNTIME_FLAG(wait_until_external_url_load) | |
| 84 | |
| 85 // Causes navigation actions just printout the intended navigation instead | |
| 86 // of taking you to the page. This is used for cases like mailto, where you | |
| 87 // don't actually want to open the mail program. | |
| 88 DEFINE_BOOL_LAYOUT_TEST_RUNTIME_FLAG(policy_delegate_enabled) | |
| 89 | |
| 90 // Toggles the behavior of the policy delegate. If true, then navigations | |
| 91 // will be allowed. Otherwise, they will be ignored (dropped). | |
| 92 DEFINE_BOOL_LAYOUT_TEST_RUNTIME_FLAG(policy_delegate_is_permissive) | |
| 93 | |
| 94 // If true, the policy delegate will signal layout test completion. | |
| 95 DEFINE_BOOL_LAYOUT_TEST_RUNTIME_FLAG(policy_delegate_should_notify_done) | |
| 96 | |
| 97 // If true, the test_shell will draw the bounds of the current selection rect | |
| 98 // taking possible transforms of the selection rect into account. | |
| 99 DEFINE_BOOL_LAYOUT_TEST_RUNTIME_FLAG(dump_selection_rect) | |
| 100 | |
| 101 // If true, the test_shell will dump the drag image as pixel results. | |
| 102 DEFINE_BOOL_LAYOUT_TEST_RUNTIME_FLAG(dump_drag_image) | |
| 103 | |
| 104 // Contents of Accept-Language HTTP header requested by the test. | |
| 105 DEFINE_STRING_LAYOUT_TEST_RUNTIME_FLAG(accept_languages) | |
| 106 | |
| 107 // Flags influencing behavior of MockContentSettingsClient. | |
| 108 DEFINE_BOOL_LAYOUT_TEST_RUNTIME_FLAG(images_allowed) | |
| 109 DEFINE_BOOL_LAYOUT_TEST_RUNTIME_FLAG(scripts_allowed) | |
| 110 DEFINE_BOOL_LAYOUT_TEST_RUNTIME_FLAG(storage_allowed) | |
| 111 DEFINE_BOOL_LAYOUT_TEST_RUNTIME_FLAG(plugins_allowed) | |
| 112 DEFINE_BOOL_LAYOUT_TEST_RUNTIME_FLAG(running_insecure_content_allowed) | |
| 113 DEFINE_BOOL_LAYOUT_TEST_RUNTIME_FLAG( | |
| 114 dump_web_content_settings_client_callbacks) | |
| 115 DEFINE_BOOL_LAYOUT_TEST_RUNTIME_FLAG(autoplay_allowed) | |
| 116 | |
| 117 // If true, the test_shell will write a descriptive line for each editing | |
| 118 // command. | |
| 119 DEFINE_BOOL_LAYOUT_TEST_RUNTIME_FLAG(dump_editting_callbacks) | |
| 120 | |
| 121 // If true, the test_shell will output a descriptive line for each frame | |
| 122 // load callback. | |
| 123 DEFINE_BOOL_LAYOUT_TEST_RUNTIME_FLAG(dump_frame_load_callbacks) | |
| 124 | |
| 125 // If true, the test_shell will output a descriptive line for each | |
| 126 // PingLoader dispatched. | |
| 127 DEFINE_BOOL_LAYOUT_TEST_RUNTIME_FLAG(dump_ping_loader_callbacks) | |
| 128 | |
| 129 // If true, the test_shell will output a line of the user gesture status | |
| 130 // text for some frame load callbacks. | |
| 131 DEFINE_BOOL_LAYOUT_TEST_RUNTIME_FLAG( | |
| 132 dump_user_gesture_in_frame_load_callbacks) | |
| 133 | |
| 134 // If true, the test_shell will output a descriptive line for each resource | |
| 135 // load callback. | |
| 136 DEFINE_BOOL_LAYOUT_TEST_RUNTIME_FLAG(dump_resource_load_callbacks) | |
| 137 | |
| 138 // If true, the test_shell will output the MIME type for each resource that | |
| 139 // was loaded. | |
| 140 DEFINE_BOOL_LAYOUT_TEST_RUNTIME_FLAG(dump_resource_response_mime_types) | |
| 141 | |
| 142 // If true, content_shell will dump the default navigation policy passed to | |
| 143 // WebFrameClient::decidePolicyForNavigation. | |
| 144 DEFINE_BOOL_LAYOUT_TEST_RUNTIME_FLAG(dump_navigation_policy) | |
| 145 | |
| 146 // If true, output a message when the page title is changed. | |
| 147 DEFINE_BOOL_LAYOUT_TEST_RUNTIME_FLAG(dump_title_changes) | |
| 148 | |
| 149 // If true, the test_shell will print out the icon change notifications. | |
| 150 DEFINE_BOOL_LAYOUT_TEST_RUNTIME_FLAG(dump_icon_changes) | |
| 151 | |
| 152 // If true, the console messages produced by the page will | |
| 153 // be part of test output. | |
| 154 DEFINE_BOOL_LAYOUT_TEST_RUNTIME_FLAG(dump_console_messages) | |
| 155 | |
| 156 // Desired return value of WebFrameClient::runModalBeforeUnloadDialog. | |
| 157 DEFINE_BOOL_LAYOUT_TEST_RUNTIME_FLAG( | |
| 158 stay_on_page_after_handling_before_unload) | |
| 159 | |
| 160 // Indicates if the test already tracks a top loading frame (in any of the | |
| 161 // renderer processes). This flag is trying to prevent different renderer | |
| 162 // processes from tracking different top loading frames (i.e. main frame in | |
| 163 // one renderer and an OOPIF in another renderer). | |
| 164 DEFINE_BOOL_LAYOUT_TEST_RUNTIME_FLAG(have_top_loading_frame) | |
| 165 | |
| 166 // If true, new windows can be opened via javascript or by plugins. By | |
| 167 // default, set to false and can be toggled to true using | |
| 168 // setCanOpenWindows(). | |
| 169 DEFINE_BOOL_LAYOUT_TEST_RUNTIME_FLAG(can_open_windows) | |
| 170 | |
| 171 // If true, output a descriptive line each time WebViewClient::createView | |
| 172 // is invoked. | |
| 173 DEFINE_BOOL_LAYOUT_TEST_RUNTIME_FLAG(dump_create_view) | |
| 174 | |
| 175 // If true, the test_shell will dump all changes to window.status. | |
| 176 DEFINE_BOOL_LAYOUT_TEST_RUNTIME_FLAG(dump_window_status_changes) | |
| 177 | |
| 178 // If true, the test_shell will output descriptive test for spellcheck | |
| 179 // execution. | |
| 180 DEFINE_BOOL_LAYOUT_TEST_RUNTIME_FLAG(dump_spell_check_callbacks) | |
| 181 | |
| 182 // If true, content_shell will output text for alert(), confirm(), prompt(), | |
| 183 // etc. | |
| 184 DEFINE_BOOL_LAYOUT_TEST_RUNTIME_FLAG(dump_javascript_dialogs) | |
| 185 | |
| 186 // True if the test called testRunner.setCustomTextOutput. | |
| 187 DEFINE_BOOL_LAYOUT_TEST_RUNTIME_FLAG(has_custom_text_output) | |
| 188 | |
| 189 // Contains text passed by the test to testRunner.setCustomTextOutput. | |
| 190 DEFINE_STRING_LAYOUT_TEST_RUNTIME_FLAG(custom_text_output) | |
| 191 | |
| 192 #undef DEFINE_BOOL_LAYOUT_TEST_RUNTIME_FLAG | |
| 193 #undef DEFINE_STRING_LAYOUT_TEST_RUNTIME_FLAG | |
| 194 | |
| 195 // Reports whether recursing over child frames is necessary. | |
| 196 bool dump_child_frames() const { | |
| 197 if (dump_as_text()) | |
| 198 return dump_child_frames_as_text(); | |
| 199 else if (dump_as_markup()) | |
| 200 return dump_child_frames_as_markup(); | |
| 201 else | |
| 202 return dump_child_frame_scroll_positions(); | |
| 203 } | |
| 204 | |
| 205 private: | |
| 206 TrackedDictionary dict_; | |
| 207 | |
| 208 DISALLOW_COPY_AND_ASSIGN(LayoutTestRuntimeFlags); | |
| 209 }; | |
| 210 | |
| 211 } // namespace test_runner | |
| 212 | |
| 213 #endif // COMPONENTS_TEST_RUNNER_LAYOUT_TEST_RUNTIME_FLAGS_H_ | |
| OLD | NEW |