diff options
-rw-r--r-- | src/corelib/io/qsettings.cpp | 18 | ||||
-rw-r--r-- | src/corelib/io/qsettings_p.h | 15 | ||||
-rw-r--r-- | tests/auto/corelib/io/qsettings/tst_qsettings.cpp | 61 |
3 files changed, 88 insertions, 6 deletions
diff --git a/src/corelib/io/qsettings.cpp b/src/corelib/io/qsettings.cpp index 122fe9f512..c23d2a22e1 100644 --- a/src/corelib/io/qsettings.cpp +++ b/src/corelib/io/qsettings.cpp @@ -1156,6 +1156,7 @@ QConfFileSettingsPrivate::QConfFileSettingsPrivate(QSettings::Format format, org = QLatin1String("Unknown Organization"); } +#if !defined(Q_OS_BLACKBERRY) QString appFile = org + QDir::separator() + application + extension; QString orgFile = org + extension; @@ -1170,6 +1171,13 @@ QConfFileSettingsPrivate::QConfFileSettingsPrivate(QSettings::Format format, if (!application.isEmpty()) confFiles[F_System | F_Application].reset(QConfFile::fromName(systemPath + appFile, false)); confFiles[F_System | F_Organization].reset(QConfFile::fromName(systemPath + orgFile, false)); +#else + QString confName = getPath(format, QSettings::UserScope) + org; + if (!application.isEmpty()) + confName += QDir::separator() + application; + confName += extension; + confFiles[SandboxConfFile].reset(QConfFile::fromName(confName, true)); +#endif for (i = 0; i < NumConfFiles; ++i) { if (confFiles[i]) { @@ -2430,6 +2438,16 @@ void QConfFileSettingsPrivate::ensureSectionParsed(QConfFile *confFile, running. Also, the locking isn't performed when accessing \c .plist files. + \o On the BlackBerry platform, applications run in a sandbox. They are not + allowed to read or write outside of this sandbox. This involves the + following limitations: + \list + \o As there is only a single scope the scope is simply ignored. + \o The \l{Fallback Mechanism} is not applied, i.e. only a single + location is considered. + \o It is advised against setting and using custom file paths. + \endlist + \endlist \sa QVariant, QSessionManager, {Settings Editor Example}, {Application Example} diff --git a/src/corelib/io/qsettings_p.h b/src/corelib/io/qsettings_p.h index 22c43b1348..eb2b1633c5 100644 --- a/src/corelib/io/qsettings_p.h +++ b/src/corelib/io/qsettings_p.h @@ -239,11 +239,16 @@ public: because their values are respectively 1 and 2. */ enum { - F_Application = 0x0, - F_Organization = 0x1, - F_User = 0x0, - F_System = 0x2, - NumConfFiles = 4 +#if !defined(Q_OS_BLACKBERRY) + F_Application = 0x0, + F_Organization = 0x1, + F_User = 0x0, + F_System = 0x2, + NumConfFiles = 4 +#else + SandboxConfFile = 0, + NumConfFiles = 1 +#endif }; QSettings::Format format; diff --git a/tests/auto/corelib/io/qsettings/tst_qsettings.cpp b/tests/auto/corelib/io/qsettings/tst_qsettings.cpp index 1cf15e898f..b975474c8f 100644 --- a/tests/auto/corelib/io/qsettings/tst_qsettings.cpp +++ b/tests/auto/corelib/io/qsettings/tst_qsettings.cpp @@ -368,11 +368,11 @@ void tst_QSettings::ctor() QVERIFY(settings3.applicationName() == "KillerAPP"); QVERIFY(settings4.applicationName().isEmpty()); +#if !defined(Q_OS_BLACKBERRY) /* Go forwards. */ settings4.setValue("key 1", QString("doodah")); - QCOMPARE(settings1.value("key 1").toString(), QString("doodah")); QCOMPARE(settings2.value("key 1").toString(), QString("doodah")); QCOMPARE(settings3.value("key 1").toString(), QString("doodah")); @@ -425,6 +425,22 @@ void tst_QSettings::ctor() QCOMPARE(settings2.value("key 1").toString(), QString("bilboh")); QCOMPARE(settings3.value("key 1").toString(), QString("catha")); QCOMPARE(settings4.value("key 1").toString(), QString("quirko")); +#else + /* + No fallback mechanism and a single scope on Blackberry OS + */ + settings2.setValue("key 1", QString("whoa")); + QCOMPARE(settings2.value("key 1").toString(), QString("whoa")); + QCOMPARE(settings4.value("key 1").toString(), QString("whoa")); + QVERIFY(!settings1.contains("key 1")); + QVERIFY(!settings3.contains("key 1")); + + settings1.setValue("key 1", QString("blah")); + QCOMPARE(settings1.value("key 1").toString(), QString("blah")); + QCOMPARE(settings2.value("key 1").toString(), QString("whoa")); + QCOMPARE(settings3.value("key 1").toString(), QString("blah")); + QCOMPARE(settings4.value("key 1").toString(), QString("whoa")); +#endif /* Test the copies again. @@ -461,10 +477,17 @@ void tst_QSettings::ctor() QSettings settings3(format, QSettings::SystemScope, "software.org", "KillerAPP"); QSettings settings4(format, QSettings::SystemScope, "software.org"); +#if !defined(Q_OS_BLACKBERRY) QCOMPARE(settings1.value("key 1").toString(), QString("gurgle")); QCOMPARE(settings2.value("key 1").toString(), QString("bilboh")); QCOMPARE(settings3.value("key 1").toString(), QString("catha")); QCOMPARE(settings4.value("key 1").toString(), QString("quirko")); +#else + QCOMPARE(settings1.value("key 1").toString(), QString("blah")); + QCOMPARE(settings2.value("key 1").toString(), QString("whoa")); + QCOMPARE(settings3.value("key 1").toString(), QString("blah")); + QCOMPARE(settings4.value("key 1").toString(), QString("whoa")); +#endif /* Test problem keys. @@ -1246,6 +1269,8 @@ void tst_QSettings::remove() settings1.setValue("key 1", "gurgle"); QCOMPARE(settings1.value("key 1").toString(), QString("gurgle")); QCOMPARE(settings2.value("key 1").toString(), QString("whoa")); + +#if !defined(Q_OS_BLACKBERRY) QCOMPARE(settings3.value("key 1").toString(), QString("blah")); QCOMPARE(settings4.value("key 1").toString(), QString("doodah")); @@ -1272,6 +1297,14 @@ void tst_QSettings::remove() QVERIFY(!settings2.contains("key 1")); QVERIFY(!settings3.contains("key 1")); QVERIFY(!settings4.contains("key 1")); +#else + settings1.remove("key 1"); + QCOMPARE(settings2.value("key 1").toString(), QString("whoa")); + + settings2.remove("key 1"); + QVERIFY(!settings1.contains("key 1")); + QVERIFY(!settings2.contains("key 1")); +#endif /* Get ready for the next part of the test. @@ -1566,6 +1599,7 @@ void tst_QSettings::setFallbacksEnabled() main associated file when fallbacks are turned off. */ +#if !defined(Q_OS_BLACKBERRY) QCOMPARE(settings1.value("key 1").toString(), QString("alpha")); QCOMPARE(settings2.value("key 1").toString(), QString("beta")); QCOMPARE(settings3.value("key 1").toString(), QString("gamma")); @@ -1595,6 +1629,22 @@ void tst_QSettings::setFallbacksEnabled() QCOMPARE(settings1.value("key 5").toString(), QString("")); QVERIFY(settings1.contains("key 1")); QVERIFY(!settings1.contains("key 5")); +#else + QCOMPARE(settings1.value("key 1").toString(), QString("gamma")); + QCOMPARE(settings2.value("key 1").toString(), QString("delta")); + QCOMPARE(settings3.value("key 1").toString(), QString("gamma")); + QCOMPARE(settings4.value("key 1").toString(), QString("delta")); + + QCOMPARE(settings1.value("key 2").toString(), QString("gamma")); + QCOMPARE(settings2.value("key 2").toString(), QString("beta")); + QCOMPARE(settings3.value("key 2").toString(), QString("gamma")); + QCOMPARE(settings4.value("key 2").toString(), QString("beta")); + + QCOMPARE(settings1.value("key 3").toString(), QString("gamma")); + QCOMPARE(settings2.value("key 3").toString(), QString("delta")); + QCOMPARE(settings3.value("key 3").toString(), QString("gamma")); + QCOMPARE(settings4.value("key 3").toString(), QString("delta")); +#endif } void tst_QSettings::testChildKeysAndGroups_data() @@ -2288,6 +2338,7 @@ void tst_QSettings::testArrays() } settings2.endArray(); +#if !defined (Q_OS_BLACKBERRY) size1 = settings1.beginReadArray("strings"); QCOMPARE(size1, 3); @@ -2298,6 +2349,7 @@ void tst_QSettings::testArrays() QCOMPARE(str, fiveStrings.at(i)); } settings1.endArray(); +#endif } #ifdef QT_BUILD_INTERNAL @@ -2970,6 +3022,7 @@ void tst_QSettings::setPath() path checks that it has no bad side effects. */ for (int i = 0; i < 2; ++i) { +#if !defined(Q_OS_BLACKBERRY) #if !defined(Q_OS_WIN) && !defined(Q_OS_MAC) TEST_PATH(i == 0, "conf", NativeFormat, UserScope, "alpha") TEST_PATH(i == 0, "conf", NativeFormat, SystemScope, "beta") @@ -2980,6 +3033,12 @@ void tst_QSettings::setPath() TEST_PATH(i == 0, "custom1", CustomFormat1, SystemScope, "zeta") TEST_PATH(i == 0, "custom2", CustomFormat2, UserScope, "eta") TEST_PATH(i == 0, "custom2", CustomFormat2, SystemScope, "iota") +#else // Q_OS_BLACKBERRY: no system scope + TEST_PATH(i == 0, "conf", NativeFormat, UserScope, "alpha") + TEST_PATH(i == 0, "ini", IniFormat, UserScope, "gamma") + TEST_PATH(i == 0, "custom1", CustomFormat1, UserScope, "epsilon") + TEST_PATH(i == 0, "custom2", CustomFormat2, UserScope, "eta") +#endif } } |