Changeset View
Changeset View
Standalone View
Standalone View
tests/kded/serializertest.cpp
Show First 20 Lines • Show All 102 Lines • ▼ Show 20 Line(s) | |||||
103 | { | 103 | { | ||
104 | qputenv("KSCREEN_LOGGING", "false"); | 104 | qputenv("KSCREEN_LOGGING", "false"); | ||
105 | Serializer::setConfigPath(QStringLiteral(TEST_DATA "/serializerdata/")); | 105 | Serializer::setConfigPath(QStringLiteral(TEST_DATA "/serializerdata/")); | ||
106 | } | 106 | } | ||
107 | 107 | | |||
108 | void TestSerializer::testSimpleConfig() | 108 | void TestSerializer::testSimpleConfig() | ||
109 | { | 109 | { | ||
110 | KScreen::ConfigPtr config = createConfig(true, false); | 110 | KScreen::ConfigPtr config = createConfig(true, false); | ||
111 | config = Serializer::config(config, QStringLiteral("simpleConfig.json")); | 111 | config = Serializer::loadConfig(config, QStringLiteral("simpleConfig.json")); | ||
112 | QVERIFY(config); | 112 | QVERIFY(config); | ||
113 | 113 | | |||
114 | QCOMPARE(config->connectedOutputs().count(), 1); | 114 | QCOMPARE(config->connectedOutputs().count(), 1); | ||
115 | 115 | | |||
116 | auto output = config->connectedOutputs().first(); | 116 | auto output = config->connectedOutputs().first(); | ||
117 | QCOMPARE(output->name(), QLatin1String("OUTPUT-1")); | 117 | QCOMPARE(output->name(), QLatin1String("OUTPUT-1")); | ||
118 | QCOMPARE(output->currentModeId(), QLatin1String("MODE-4")); | 118 | QCOMPARE(output->currentModeId(), QLatin1String("MODE-4")); | ||
119 | QCOMPARE(output->currentMode()->size(), QSize(1920, 1280)); | 119 | QCOMPARE(output->currentMode()->size(), QSize(1920, 1280)); | ||
120 | QCOMPARE(output->isEnabled(), true); | 120 | QCOMPARE(output->isEnabled(), true); | ||
121 | QCOMPARE(output->rotation(), KScreen::Output::None); | 121 | QCOMPARE(output->rotation(), KScreen::Output::None); | ||
122 | QCOMPARE(output->pos(), QPoint(0, 0)); | 122 | QCOMPARE(output->pos(), QPoint(0, 0)); | ||
123 | QCOMPARE(output->isPrimary(), true); | 123 | QCOMPARE(output->isPrimary(), true); | ||
124 | 124 | | |||
125 | auto screen = config->screen(); | 125 | auto screen = config->screen(); | ||
126 | QCOMPARE(screen->currentSize(), QSize(1920, 1280)); | 126 | QCOMPARE(screen->currentSize(), QSize(1920, 1280)); | ||
127 | } | 127 | } | ||
128 | 128 | | |||
129 | void TestSerializer::testTwoScreenConfig() | 129 | void TestSerializer::testTwoScreenConfig() | ||
130 | { | 130 | { | ||
131 | KScreen::ConfigPtr config = createConfig(true, true); | 131 | KScreen::ConfigPtr config = createConfig(true, true); | ||
132 | config = Serializer::config(config, QStringLiteral("twoScreenConfig.json")); | 132 | config = Serializer::loadConfig(config, QStringLiteral("twoScreenConfig.json")); | ||
133 | QVERIFY(config); | 133 | QVERIFY(config); | ||
134 | 134 | | |||
135 | QCOMPARE(config->connectedOutputs().count(), 2); | 135 | QCOMPARE(config->connectedOutputs().count(), 2); | ||
136 | 136 | | |||
137 | auto output = config->connectedOutputs().first(); | 137 | auto output = config->connectedOutputs().first(); | ||
138 | QCOMPARE(output->name(), QLatin1String("OUTPUT-1")); | 138 | QCOMPARE(output->name(), QLatin1String("OUTPUT-1")); | ||
139 | QCOMPARE(output->currentModeId(), QLatin1String("MODE-4")); | 139 | QCOMPARE(output->currentModeId(), QLatin1String("MODE-4")); | ||
140 | QCOMPARE(output->currentMode()->size(), QSize(1920, 1280)); | 140 | QCOMPARE(output->currentMode()->size(), QSize(1920, 1280)); | ||
Show All 13 Lines | |||||
154 | 154 | | |||
155 | auto screen = config->screen(); | 155 | auto screen = config->screen(); | ||
156 | QCOMPARE(screen->currentSize(), QSize(3200, 1280)); | 156 | QCOMPARE(screen->currentSize(), QSize(3200, 1280)); | ||
157 | } | 157 | } | ||
158 | 158 | | |||
159 | void TestSerializer::testRotatedScreenConfig() | 159 | void TestSerializer::testRotatedScreenConfig() | ||
160 | { | 160 | { | ||
161 | KScreen::ConfigPtr config = createConfig(true, true); | 161 | KScreen::ConfigPtr config = createConfig(true, true); | ||
162 | config = Serializer::config(config, QStringLiteral("rotatedScreenConfig.json")); | 162 | config = Serializer::loadConfig(config, QStringLiteral("rotatedScreenConfig.json")); | ||
163 | QVERIFY(config); | 163 | QVERIFY(config); | ||
164 | 164 | | |||
165 | QCOMPARE(config->connectedOutputs().count(), 2); | 165 | QCOMPARE(config->connectedOutputs().count(), 2); | ||
166 | 166 | | |||
167 | auto output = config->connectedOutputs().first(); | 167 | auto output = config->connectedOutputs().first(); | ||
168 | QCOMPARE(output->name(), QLatin1String("OUTPUT-1")); | 168 | QCOMPARE(output->name(), QLatin1String("OUTPUT-1")); | ||
169 | QCOMPARE(output->currentModeId(), QLatin1String("MODE-4")); | 169 | QCOMPARE(output->currentModeId(), QLatin1String("MODE-4")); | ||
170 | QCOMPARE(output->currentMode()->size(), QSize(1920, 1280)); | 170 | QCOMPARE(output->currentMode()->size(), QSize(1920, 1280)); | ||
Show All 13 Lines | |||||
184 | 184 | | |||
185 | auto screen = config->screen(); | 185 | auto screen = config->screen(); | ||
186 | QCOMPARE(screen->currentSize(), QSize(2944, 1280)); | 186 | QCOMPARE(screen->currentSize(), QSize(2944, 1280)); | ||
187 | } | 187 | } | ||
188 | 188 | | |||
189 | void TestSerializer::testDisabledScreenConfig() | 189 | void TestSerializer::testDisabledScreenConfig() | ||
190 | { | 190 | { | ||
191 | KScreen::ConfigPtr config = createConfig(true, true); | 191 | KScreen::ConfigPtr config = createConfig(true, true); | ||
192 | config = Serializer::config(config, QStringLiteral("disabledScreenConfig.json")); | 192 | config = Serializer::loadConfig(config, QStringLiteral("disabledScreenConfig.json")); | ||
193 | QVERIFY(config); | 193 | QVERIFY(config); | ||
194 | 194 | | |||
195 | QCOMPARE(config->connectedOutputs().count(), 2); | 195 | QCOMPARE(config->connectedOutputs().count(), 2); | ||
196 | 196 | | |||
197 | auto output = config->connectedOutputs().first(); | 197 | auto output = config->connectedOutputs().first(); | ||
198 | QCOMPARE(output->name(), QLatin1String("OUTPUT-1")); | 198 | QCOMPARE(output->name(), QLatin1String("OUTPUT-1")); | ||
199 | QCOMPARE(output->currentModeId(), QLatin1String("MODE-4")); | 199 | QCOMPARE(output->currentModeId(), QLatin1String("MODE-4")); | ||
200 | QCOMPARE(output->currentMode()->size(), QSize(1920, 1280)); | 200 | QCOMPARE(output->currentMode()->size(), QSize(1920, 1280)); | ||
201 | QCOMPARE(output->isEnabled(), true); | 201 | QCOMPARE(output->isEnabled(), true); | ||
202 | QCOMPARE(output->rotation(), KScreen::Output::None); | 202 | QCOMPARE(output->rotation(), KScreen::Output::None); | ||
203 | QCOMPARE(output->pos(), QPoint(0, 0)); | 203 | QCOMPARE(output->pos(), QPoint(0, 0)); | ||
204 | QCOMPARE(output->isPrimary(), true); | 204 | QCOMPARE(output->isPrimary(), true); | ||
205 | 205 | | |||
206 | output = config->connectedOutputs().last(); | 206 | output = config->connectedOutputs().last(); | ||
207 | QCOMPARE(output->name(), QLatin1String("OUTPUT-2")); | 207 | QCOMPARE(output->name(), QLatin1String("OUTPUT-2")); | ||
208 | QCOMPARE(output->isEnabled(), false); | 208 | QCOMPARE(output->isEnabled(), false); | ||
209 | 209 | | |||
210 | auto screen = config->screen(); | 210 | auto screen = config->screen(); | ||
211 | QCOMPARE(screen->currentSize(), QSize(1920, 1280)); | 211 | QCOMPARE(screen->currentSize(), QSize(1920, 1280)); | ||
212 | } | 212 | } | ||
213 | 213 | | |||
214 | void TestSerializer::testConfig404() | 214 | void TestSerializer::testConfig404() | ||
215 | { | 215 | { | ||
216 | KScreen::ConfigPtr config = createConfig(true, true); | 216 | KScreen::ConfigPtr config = createConfig(true, true); | ||
217 | config = Serializer::config(config, QStringLiteral("filenotfoundConfig.json")); | 217 | config = Serializer::loadConfig(config, QStringLiteral("filenotfoundConfig.json")); | ||
218 | QVERIFY(!config); | 218 | QVERIFY(!config); | ||
219 | QVERIFY(config.isNull()); | 219 | QVERIFY(config.isNull()); | ||
220 | } | 220 | } | ||
221 | 221 | | |||
222 | void TestSerializer::testCorruptConfig() | 222 | void TestSerializer::testCorruptConfig() | ||
223 | { | 223 | { | ||
224 | KScreen::ConfigPtr config = createConfig(true, true); | 224 | KScreen::ConfigPtr config = createConfig(true, true); | ||
225 | config = Serializer::config(config, QStringLiteral("corruptConfig.json")); | 225 | config = Serializer::loadConfig(config, QStringLiteral("corruptConfig.json")); | ||
226 | QVERIFY(config); | 226 | QVERIFY(config); | ||
227 | QCOMPARE(config->outputs().count(), 2); | 227 | QCOMPARE(config->outputs().count(), 2); | ||
228 | QVERIFY(config->isValid()); | 228 | QVERIFY(config->isValid()); | ||
229 | } | 229 | } | ||
230 | 230 | | |||
231 | void TestSerializer::testCorruptEmptyConfig() | 231 | void TestSerializer::testCorruptEmptyConfig() | ||
232 | { | 232 | { | ||
233 | KScreen::ConfigPtr config = createConfig(true, true); | 233 | KScreen::ConfigPtr config = createConfig(true, true); | ||
234 | config = Serializer::config(config, QStringLiteral("corruptEmptyConfig.json")); | 234 | config = Serializer::loadConfig(config, QStringLiteral("corruptEmptyConfig.json")); | ||
235 | QVERIFY(config); | 235 | QVERIFY(config); | ||
236 | QCOMPARE(config->outputs().count(), 2); | 236 | QCOMPARE(config->outputs().count(), 2); | ||
237 | QVERIFY(config->isValid()); | 237 | QVERIFY(config->isValid()); | ||
238 | } | 238 | } | ||
239 | 239 | | |||
240 | void TestSerializer::testCorruptUselessConfig() | 240 | void TestSerializer::testCorruptUselessConfig() | ||
241 | { | 241 | { | ||
242 | KScreen::ConfigPtr config = createConfig(true, true); | 242 | KScreen::ConfigPtr config = createConfig(true, true); | ||
243 | config = Serializer::config(config, QStringLiteral("corruptUselessConfig.json")); | 243 | config = Serializer::loadConfig(config, QStringLiteral("corruptUselessConfig.json")); | ||
244 | QVERIFY(config); | 244 | QVERIFY(config); | ||
245 | QCOMPARE(config->outputs().count(), 2); | 245 | QCOMPARE(config->outputs().count(), 2); | ||
246 | QVERIFY(config->isValid()); | 246 | QVERIFY(config->isValid()); | ||
247 | } | 247 | } | ||
248 | 248 | | |||
249 | void TestSerializer::testNullConfig() | 249 | void TestSerializer::testNullConfig() | ||
250 | { | 250 | { | ||
251 | KScreen::ConfigPtr nullConfig; | 251 | KScreen::ConfigPtr nullConfig; | ||
252 | QVERIFY(!nullConfig); | 252 | QVERIFY(!nullConfig); | ||
253 | 253 | | |||
254 | // Null configs have empty configIds | 254 | // Null configs have empty configIds | ||
255 | QVERIFY(Serializer::configId(nullConfig).isEmpty()); | 255 | QVERIFY(Serializer::configId(nullConfig).isEmpty()); | ||
256 | 256 | | |||
257 | // Load config from a file not found results in a nullptr | 257 | // Load config from a file not found results in a nullptr | ||
258 | KScreen::ConfigPtr config = createConfig(true, true); | 258 | KScreen::ConfigPtr config = createConfig(true, true); | ||
259 | QVERIFY(!Serializer::config(config, QString())); | 259 | QVERIFY(!Serializer::loadConfig(config, QString())); | ||
260 | 260 | | |||
261 | // Wrong config file name should fail to save | 261 | // Wrong config file name should fail to save | ||
262 | QCOMPARE(Serializer::saveConfig(config, QString()), false); | 262 | QCOMPARE(Serializer::saveConfig(config, QString()), false); | ||
263 | } | 263 | } | ||
264 | 264 | | |||
265 | void TestSerializer::testIdenticalOutputs() | 265 | void TestSerializer::testIdenticalOutputs() | ||
266 | { | 266 | { | ||
267 | // Test configuration of a video wall with 6 identical outputs connected | 267 | // Test configuration of a video wall with 6 identical outputs connected | ||
▲ Show 20 Lines • Show All 86 Lines • ▼ Show 20 Line(s) | |||||
354 | QHash<QString, QPoint> positions; | 354 | QHash<QString, QPoint> positions; | ||
355 | positions[QStringLiteral("DisplayPort-0")] = QPoint(0, 1080); | 355 | positions[QStringLiteral("DisplayPort-0")] = QPoint(0, 1080); | ||
356 | positions[QStringLiteral("DisplayPort-1")] = QPoint(2100, 30); | 356 | positions[QStringLiteral("DisplayPort-1")] = QPoint(2100, 30); | ||
357 | positions[QStringLiteral("DisplayPort-2")] = QPoint(2100, 1080); | 357 | positions[QStringLiteral("DisplayPort-2")] = QPoint(2100, 1080); | ||
358 | positions[QStringLiteral("DisplayPort-3")] = QPoint(4020, 0); | 358 | positions[QStringLiteral("DisplayPort-3")] = QPoint(4020, 0); | ||
359 | positions[QStringLiteral("DVI-0")] = QPoint(4020, 1080); | 359 | positions[QStringLiteral("DVI-0")] = QPoint(4020, 1080); | ||
360 | positions[QStringLiteral("DVI-1")] = QPoint(0, 0); | 360 | positions[QStringLiteral("DVI-1")] = QPoint(0, 0); | ||
361 | 361 | | |||
362 | config = Serializer::config(config, QStringLiteral("outputgrid_2x3.json")); | 362 | config = Serializer::loadConfig(config, QStringLiteral("outputgrid_2x3.json")); | ||
363 | QVERIFY(config); | 363 | QVERIFY(config); | ||
364 | 364 | | |||
365 | QCOMPARE(config->connectedOutputs().count(), 6); | 365 | QCOMPARE(config->connectedOutputs().count(), 6); | ||
366 | Q_FOREACH (auto output, config->connectedOutputs()) { | 366 | Q_FOREACH (auto output, config->connectedOutputs()) { | ||
367 | QVERIFY(positions.keys().contains(output->name())); | 367 | QVERIFY(positions.keys().contains(output->name())); | ||
368 | QVERIFY(output->name() != output->hash()); | 368 | QVERIFY(output->name() != output->hash()); | ||
369 | QCOMPARE(positions[output->name()], output->pos()); | 369 | QCOMPARE(positions[output->name()], output->pos()); | ||
370 | QCOMPARE(output->currentMode()->size(), QSize(1920, 1080)); | 370 | QCOMPARE(output->currentMode()->size(), QSize(1920, 1080)); | ||
371 | QCOMPARE(output->currentMode()->refreshRate(), 60.0); | 371 | QCOMPARE(output->currentMode()->refreshRate(), 60.0); | ||
372 | QVERIFY(output->isEnabled()); | 372 | QVERIFY(output->isEnabled()); | ||
373 | } | 373 | } | ||
374 | QCOMPARE(config->screen()->currentSize(), QSize(5940, 2160)); | 374 | QCOMPARE(config->screen()->currentSize(), QSize(5940, 2160)); | ||
375 | } | 375 | } | ||
376 | 376 | | |||
377 | void TestSerializer::testMoveConfig() | 377 | void TestSerializer::testMoveConfig() | ||
378 | { | 378 | { | ||
379 | // Test if restoring a config using Serializer::moveConfig(src, dest) works | 379 | // Test if restoring a config using Serializer::moveConfig(src, dest) works | ||
380 | // https://bugs.kde.org/show_bug.cgi?id=353029 | 380 | // https://bugs.kde.org/show_bug.cgi?id=353029 | ||
381 | 381 | | |||
382 | // Load a dualhead config | 382 | // Load a dualhead config | ||
383 | KScreen::ConfigPtr config = createConfig(true, true); | 383 | KScreen::ConfigPtr config = createConfig(true, true); | ||
384 | config = Serializer::config(config, QStringLiteral("twoScreenConfig.json")); | 384 | config = Serializer::loadConfig(config, QStringLiteral("twoScreenConfig.json")); | ||
385 | QVERIFY(config); | 385 | QVERIFY(config); | ||
386 | 386 | | |||
387 | // Make sure we don't write into TEST_DATA | 387 | // Make sure we don't write into TEST_DATA | ||
388 | QStandardPaths::setTestModeEnabled(true); | 388 | QStandardPaths::setTestModeEnabled(true); | ||
389 | Serializer::setConfigPath(QStandardPaths::writableLocation(QStandardPaths::GenericDataLocation) % QStringLiteral("/kscreen/")); | 389 | Serializer::setConfigPath(QStandardPaths::writableLocation(QStandardPaths::GenericDataLocation) % QStringLiteral("/kscreen/")); | ||
390 | 390 | | |||
391 | // Basic assumptions for the remainder of our tests, this is the situation where the lid is opened | 391 | // Basic assumptions for the remainder of our tests, this is the situation where the lid is opened | ||
392 | QCOMPARE(config->connectedOutputs().count(), 2); | 392 | QCOMPARE(config->connectedOutputs().count(), 2); | ||
Show All 32 Lines | |||||
425 | // Switcheroo... | 425 | // Switcheroo... | ||
426 | QVERIFY(Serializer::moveConfig(QStringLiteral("0xdeadbeef_lidOpened"), QStringLiteral("0xdeadbeef"))); | 426 | QVERIFY(Serializer::moveConfig(QStringLiteral("0xdeadbeef_lidOpened"), QStringLiteral("0xdeadbeef"))); | ||
427 | 427 | | |||
428 | // Check actual files, src should be gone, dest must exist | 428 | // Check actual files, src should be gone, dest must exist | ||
429 | QVERIFY(!openCfg.exists()); | 429 | QVERIFY(!openCfg.exists()); | ||
430 | QVERIFY(closedCfg.exists()); | 430 | QVERIFY(closedCfg.exists()); | ||
431 | 431 | | |||
432 | // Now load the resulting config and make sure the laptop panel is enabled and primary again | 432 | // Now load the resulting config and make sure the laptop panel is enabled and primary again | ||
433 | config = Serializer::config(config, QStringLiteral("0xdeadbeef")); | 433 | config = Serializer::loadConfig(config, QStringLiteral("0xdeadbeef")); | ||
434 | 434 | | |||
435 | output = config->connectedOutputs().first(); | 435 | output = config->connectedOutputs().first(); | ||
436 | QCOMPARE(output->name(), QLatin1String("OUTPUT-1")); | 436 | QCOMPARE(output->name(), QLatin1String("OUTPUT-1")); | ||
437 | QCOMPARE(output->isEnabled(), true); | 437 | QCOMPARE(output->isEnabled(), true); | ||
438 | QCOMPARE(output->isPrimary(), true); | 438 | QCOMPARE(output->isPrimary(), true); | ||
439 | 439 | | |||
440 | output2 = config->connectedOutputs().last(); | 440 | output2 = config->connectedOutputs().last(); | ||
441 | QCOMPARE(output2->name(), QLatin1String("OUTPUT-2")); | 441 | QCOMPARE(output2->name(), QLatin1String("OUTPUT-2")); | ||
442 | QCOMPARE(output2->isEnabled(), true); | 442 | QCOMPARE(output2->isEnabled(), true); | ||
443 | QCOMPARE(output2->isPrimary(), false); | 443 | QCOMPARE(output2->isPrimary(), false); | ||
444 | 444 | | |||
445 | // Make sure we don't screw up when there's no _lidOpened config | 445 | // Make sure we don't screw up when there's no _lidOpened config | ||
446 | QVERIFY(!Serializer::moveConfig(QStringLiteral("0xdeadbeef_lidOpened"), QStringLiteral("0xdeadbeef"))); | 446 | QVERIFY(!Serializer::moveConfig(QStringLiteral("0xdeadbeef_lidOpened"), QStringLiteral("0xdeadbeef"))); | ||
447 | 447 | | |||
448 | config = Serializer::config(config, QStringLiteral("0xdeadbeef")); | 448 | config = Serializer::loadConfig(config, QStringLiteral("0xdeadbeef")); | ||
449 | 449 | | |||
450 | output = config->connectedOutputs().first(); | 450 | output = config->connectedOutputs().first(); | ||
451 | QCOMPARE(output->name(), QLatin1String("OUTPUT-1")); | 451 | QCOMPARE(output->name(), QLatin1String("OUTPUT-1")); | ||
452 | QCOMPARE(output->isEnabled(), true); | 452 | QCOMPARE(output->isEnabled(), true); | ||
453 | QCOMPARE(output->isPrimary(), true); | 453 | QCOMPARE(output->isPrimary(), true); | ||
454 | 454 | | |||
455 | output2 = config->connectedOutputs().last(); | 455 | output2 = config->connectedOutputs().last(); | ||
456 | QCOMPARE(output2->name(), QLatin1String("OUTPUT-2")); | 456 | QCOMPARE(output2->name(), QLatin1String("OUTPUT-2")); | ||
457 | QCOMPARE(output2->isEnabled(), true); | 457 | QCOMPARE(output2->isEnabled(), true); | ||
458 | QCOMPARE(output2->isPrimary(), false); | 458 | QCOMPARE(output2->isPrimary(), false); | ||
459 | 459 | | |||
460 | Serializer::setConfigPath(QStringLiteral(TEST_DATA "/serializerdata/")); | 460 | Serializer::setConfigPath(QStringLiteral(TEST_DATA "/serializerdata/")); | ||
461 | } | 461 | } | ||
462 | 462 | | |||
463 | void TestSerializer::testFixedConfig() | 463 | void TestSerializer::testFixedConfig() | ||
464 | { | 464 | { | ||
465 | // Load a dualhead config | 465 | // Load a dualhead config | ||
466 | KScreen::ConfigPtr config = createConfig(true, true); | 466 | KScreen::ConfigPtr config = createConfig(true, true); | ||
467 | config = Serializer::config(config, QStringLiteral("twoScreenConfig.json")); | 467 | config = Serializer::loadConfig(config, QStringLiteral("twoScreenConfig.json")); | ||
468 | QVERIFY(config); | 468 | QVERIFY(config); | ||
469 | 469 | | |||
470 | // Make sure we don't write into TEST_DATA | 470 | // Make sure we don't write into TEST_DATA | ||
471 | QStandardPaths::setTestModeEnabled(true); | 471 | QStandardPaths::setTestModeEnabled(true); | ||
472 | Serializer::setConfigPath(QStandardPaths::writableLocation(QStandardPaths::GenericDataLocation) % QStringLiteral("/kscreen/")); | 472 | Serializer::setConfigPath(QStandardPaths::writableLocation(QStandardPaths::GenericDataLocation) % QStringLiteral("/kscreen/")); | ||
473 | // save config as the current one, this is the config we don't want restored, and which we'll overwrite | 473 | // save config as the current one, this is the config we don't want restored, and which we'll overwrite | ||
474 | Serializer::saveConfig(config, Serializer::sFixedConfig); | 474 | Serializer::saveConfig(config, Serializer::sFixedConfig); | ||
475 | 475 | | |||
Show All 9 Lines |