File indexing completed on 2024-05-19 16:41:36
0001 /* 0002 SPDX-FileCopyrightText: 2007 Glenn Ergeerts <glenn.ergeerts@telenet.be> 0003 SPDX-FileCopyrightText: 2012 Marco Gulino <marco.gulino@xpeppers.com> 0004 0005 SPDX-License-Identifier: LGPL-2.0-or-later 0006 */ 0007 0008 #include "chromefindprofile.h" 0009 #include "bookmarksrunner_defs.h" 0010 #include "faviconfromblob.h" 0011 #include <QDebug> 0012 #include <QFileInfo> 0013 #include <QJsonDocument> 0014 #include <QJsonObject> 0015 #include <QVariantMap> 0016 0017 FindChromeProfile::FindChromeProfile(const QString &applicationName, const QString &homeDirectory, QObject *parent) 0018 : QObject(parent) 0019 , m_applicationName(applicationName) 0020 , m_homeDirectory(homeDirectory) 0021 { 0022 } 0023 0024 QList<Profile> FindChromeProfile::find() 0025 { 0026 QString configDirectory = QStringLiteral("%1/.config/%2").arg(m_homeDirectory, m_applicationName); 0027 QString localStateFileName = QStringLiteral("%1/Local State").arg(configDirectory); 0028 0029 QList<Profile> profiles; 0030 0031 QFile localStateFile(localStateFileName); 0032 0033 if (!localStateFile.open(QIODevice::ReadOnly | QIODevice::Text)) { 0034 return profiles; 0035 } 0036 QJsonDocument jdoc = QJsonDocument::fromJson(localStateFile.readAll()); 0037 0038 if (jdoc.isNull()) { 0039 qDebug() << "error opening " << QFileInfo(localStateFile).absoluteFilePath(); 0040 return profiles; 0041 } 0042 0043 QVariantMap localState = jdoc.object().toVariantMap(); 0044 QVariantMap profilesConfig = localState.value(QStringLiteral("profile")).toMap().value(QStringLiteral("info_cache")).toMap(); 0045 0046 for (const QString &profile : profilesConfig.keys()) { 0047 const QString profilePath = QStringLiteral("%1/%2").arg(configDirectory, profile); 0048 const QString profileBookmarksPath = QStringLiteral("%1/%2").arg(profilePath, QStringLiteral("Bookmarks")); 0049 profiles << Profile(profileBookmarksPath, profile, FaviconFromBlob::chrome(profilePath, this)); 0050 } 0051 0052 return profiles; 0053 }