← Back to team overview

ubuntu-sdk-team team mailing list archive

[Merge] lp:~ubuntu-sdk-team/ubuntu-ui-toolkit/organizedCrime into lp:ubuntu-ui-toolkit/staging

 

Christian Dywan has proposed merging lp:~ubuntu-sdk-team/ubuntu-ui-toolkit/organizedCrime into lp:ubuntu-ui-toolkit/staging.

Commit message:
Initialize UCApplication with no side effects

Requested reviews:
  Ubuntu SDK team (ubuntu-sdk-team)
Related bugs:
  Bug #1662868 in ubuntu-ui-toolkit (Ubuntu): "Changes to organizationName management break qt-labs-settings"
  https://bugs.launchpad.net/ubuntu/+source/ubuntu-ui-toolkit/+bug/1662868

For more details, see:
https://code.launchpad.net/~ubuntu-sdk-team/ubuntu-ui-toolkit/organizedCrime/+merge/316825
-- 
Your team Ubuntu SDK team is requested to review the proposed merge of lp:~ubuntu-sdk-team/ubuntu-ui-toolkit/organizedCrime into lp:ubuntu-ui-toolkit/staging.
=== modified file 'src/UbuntuToolkit/ucapplication.cpp'
--- src/UbuntuToolkit/ucapplication.cpp	2017-01-12 15:20:31 +0000
+++ src/UbuntuToolkit/ucapplication.cpp	2017-02-09 11:08:07 +0000
@@ -39,8 +39,6 @@
 UCApplication::UCApplication(QObject* parent) : QObject(parent), m_context(0)
                                                                , m_inputMethod(QGuiApplication::inputMethod())
 {
-    // Unset organization by default to skip an extra folder component
-    QCoreApplication::setOrganizationName(QStringLiteral(""));
     // Make sure we receive application name changes from C++ modules
     connect(QCoreApplication::instance(), &QCoreApplication::applicationNameChanged,
             this, &UCApplication::applicationNameChanged);
@@ -70,7 +68,6 @@
        to how Unity uses it to distinguish running applications.
      */
     QCoreApplication::setApplicationName(applicationName);
-    QCoreApplication::setOrganizationName(QCoreApplication::organizationName());
     /*
        Ensure that LocalStorage and WebKit use the same location
        Docs are ambiguous: in practise applicationName is ignored by default

=== modified file 'src/UbuntuToolkit/ucmainwindow.cpp'
--- src/UbuntuToolkit/ucmainwindow.cpp	2017-01-18 17:23:48 +0000
+++ src/UbuntuToolkit/ucmainwindow.cpp	2017-02-09 11:08:07 +0000
@@ -163,11 +163,7 @@
         return;
 
     d->m_applicationName = applicationName;
-
-    if (applicationName != QStringLiteral("")) {
-        UbuntuI18n::instance()->setDomain(applicationName);
-        UCApplication::instance()->setApplicationName(applicationName);
-    }
+    updateApplication(applicationName, d->m_organizationName);
     Q_EMIT applicationNameChanged(applicationName);
 }
 
@@ -192,11 +188,17 @@
         return;
 
     d->m_organizationName = organizationName;
+    updateApplication(d->m_applicationName, organizationName);
+    Q_EMIT organizationNameChanged(organizationName);
+}
 
-    if (organizationName != QStringLiteral("")) {
+void UCMainWindow::updateApplication(QString applicationName, QString organizationName)
+{
+    if (applicationName != QStringLiteral("")) {
+        UbuntuI18n::instance()->setDomain(applicationName);
         QCoreApplication::setOrganizationName(organizationName);
+        UCApplication::instance()->setApplicationName(applicationName);
     }
-    Q_EMIT organizationNameChanged(organizationName);
 }
 
 /*!

=== modified file 'src/UbuntuToolkit/ucmainwindow_p.h'
--- src/UbuntuToolkit/ucmainwindow_p.h	2017-01-16 16:52:57 +0000
+++ src/UbuntuToolkit/ucmainwindow_p.h	2017-02-09 11:08:07 +0000
@@ -76,6 +76,8 @@
 #endif
 
 private:
+    void updateApplication(QString applicationName, QString organizationName);
+
     Q_DECLARE_PRIVATE(UCMainWindow)
 };
 

=== modified file 'tests/unit/mainwindow/VisualRoot.qml'
--- tests/unit/mainwindow/VisualRoot.qml	2017-01-16 14:18:21 +0000
+++ tests/unit/mainwindow/VisualRoot.qml	2017-02-09 11:08:07 +0000
@@ -20,7 +20,6 @@
 
 MainWindow {
     objectName: "visualRoot"
-    applicationName: "org.gnu.wildebeest"
     visualRoot: myRoot
 
     Rectangle {

=== modified file 'tests/unit/mainwindow/tst_mainwindow.cpp'
--- tests/unit/mainwindow/tst_mainwindow.cpp	2017-01-16 17:44:23 +0000
+++ tests/unit/mainwindow/tst_mainwindow.cpp	2017-02-09 11:08:07 +0000
@@ -33,10 +33,7 @@
 #include <QtCore/QCryptographicHash>
 #include <QtCore/QSettings>
 
-#include <QtQuick/QQuickItem>
-#include <QtQuick/QQuickView>
 #include <QtGui/QGuiApplication>
-#include <QtQml/QQmlEngine>
 #include <QtQml/QQmlContext>
 #include <QtQml/QQmlComponent>
 
@@ -103,18 +100,23 @@
 
 private Q_SLOTS:
 
-    void initTestCase()
-    {
-    }
-
-    void cleanupTestCase()
-    {
+    void cleanup()
+    {
+     // UCApplication::instance()->setApplicationName(QStringLiteral(""));
+        // Delete engine, and thereby also the UCApplication instance
+        QObject* engine(UCApplication::instance()->parent());
+        delete engine;
+        QCoreApplication::setApplicationName(QStringLiteral(""));
+        QCoreApplication::setOrganizationName(QStringLiteral(""));
     }
 
     // Note: tests/unit/mainview13 contains the UCApplication bits
 
     void testCase_AppName()
     {
+        // Sanity check: no name set yet
+        QCOMPARE(QStringLiteral("mainwindow"), QCoreApplication::applicationName());
+
         QString applicationName("org.gnu.wildebeest");
         QQuickWindow *mainWindow(loadTest("AppName.qml"));
         QVERIFY(mainWindow);
@@ -125,6 +127,9 @@
 
     void testCase_OrganizationName()
     {
+        // Sanity check: no organization set yet
+        QCOMPARE(QStringLiteral(""), QCoreApplication::organizationName());
+
         QString applicationName("tv.island.pacific");
         QString organizationName("pacifist");
         QQuickWindow *mainWindow(loadTest("OrganizationName.qml"));
@@ -135,9 +140,28 @@
         QCOMPARE(organizationName, QCoreApplication::organizationName());
     }
 
+    void testCase_NoOrganizationName()
+    {
+        // Sanity check: no organization set yet
+        QCOMPARE(QStringLiteral(""), QCoreApplication::organizationName());
+
+        // Custom values set outside of QML
+        QString applicationName("com.example.random");
+        QString organizationName(QStringLiteral("Example"));
+        QCoreApplication::setApplicationName(applicationName);
+        QCoreApplication::setOrganizationName(organizationName);
+
+        QQuickWindow *mainWindow(loadTest("VisualRoot.qml"));
+        QVERIFY(mainWindow);
+        // MainView shouldn't interfere as applicationName wasn't set in QML
+        QCOMPARE(QStringLiteral(""), mainWindow->property("applicationName").toString());
+        QCOMPARE(applicationName, QCoreApplication::applicationName());
+        QCOMPARE(organizationName, QCoreApplication::organizationName());
+        QCOMPARE(QStringLiteral(""), mainWindow->property("organizationName").toString());
+    }
+
     void testCase_VisualRoot()
     {
-        QString applicationName("tv.island.pacific");
         QQuickWindow *mainWindow(loadTest("VisualRoot.qml"));
         QVERIFY(mainWindow);
         QQuickItem* myLabel(testItem(mainWindow, "myLabel"));


Follow ups