| 93 | } |
| 94 | |
| 95 | void GM_Downloader::requireDownloaded() |
| 96 | { |
| 97 | Q_ASSERT(m_reply == qobject_cast<QNetworkReply*>(sender())); |
| 98 | |
| 99 | deleteLater(); |
| 100 | m_reply->deleteLater(); |
| 101 | |
| 102 | if (m_reply != qobject_cast<QNetworkReply*>(sender())) { |
| 103 | Q_EMIT error(); |
| 104 | return; |
| 105 | } |
| 106 | |
| 107 | if (m_reply->error() != QNetworkReply::NoError) { |
| 108 | qWarning() << "GreaseMonkey: Cannot download require script" << m_reply->errorString(); |
| 109 | Q_EMIT error(); |
| 110 | return; |
| 111 | } |
| 112 | |
| 113 | const QByteArray response = QString::fromUtf8(m_reply->readAll()).toUtf8(); |
| 114 | |
| 115 | if (response.isEmpty()) { |
| 116 | qWarning() << "GreaseMonkey: Empty script downloaded" << m_reply->request().url(); |
| 117 | Q_EMIT error(); |
| 118 | return; |
| 119 | } |
| 120 | |
| 121 | QSettings settings(m_manager->settingsPath() + QL1S("/greasemonkey/requires/requires.ini"), QSettings::IniFormat); |
| 122 | settings.beginGroup("Files"); |
| 123 | |
| 124 | if (m_fileName.isEmpty()) { |
| 125 | m_fileName = settings.value(m_reply->request().url().toString()).toString(); |
| 126 | if (m_fileName.isEmpty()) { |
| 127 | QString name = QFileInfo(m_reply->request().url().path()).fileName(); |
| 128 | if (name.isEmpty()) { |
| 129 | name = QSL("require.js"); |
| 130 | } else if (!name.endsWith(QL1S(".js"))) { |
| 131 | name.append(QSL(".js")); |
| 132 | } |
| 133 | const QString filePath = m_manager->settingsPath() + QL1S("/greasemonkey/requires/") + name; |
| 134 | m_fileName = QzTools::ensureUniqueFilename(filePath, QSL("%1")); |
| 135 | } |
| 136 | if (!QFileInfo(m_fileName).isAbsolute()) { |
| 137 | m_fileName.prepend(m_manager->settingsPath() + QL1S("/greasemonkey/requires/")); |
| 138 | } |
| 139 | } |
| 140 | |
| 141 | QFile file(m_fileName); |
| 142 | |
| 143 | if (!file.open(QFile::WriteOnly)) { |
| 144 | qWarning() << "GreaseMonkey: Cannot open file for writing" << m_fileName; |
| 145 | Q_EMIT error(); |
| 146 | return; |
| 147 | } |
| 148 | |
| 149 | file.write(response); |
| 150 | file.close(); |
| 151 | |
| 152 | settings.setValue(m_reply->request().url().toString(), QFileInfo(m_fileName).fileName()); |
nothing calls this directly
no test coverage detected