Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(1385)

Unified Diff: chrome/browser/component_updater/swiftshader_component_installer.cc

Issue 334783002: Componentize component_updater: Move some paths/constants to component. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 6 years, 6 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: chrome/browser/component_updater/swiftshader_component_installer.cc
diff --git a/chrome/browser/component_updater/swiftshader_component_installer.cc b/chrome/browser/component_updater/swiftshader_component_installer.cc
index e4c410aeab2f28d4612bccf452c466a581cee8e7..e448dda12feb311119d07c35d512c5a061daf104 100644
--- a/chrome/browser/component_updater/swiftshader_component_installer.cc
+++ b/chrome/browser/component_updater/swiftshader_component_installer.cc
@@ -19,7 +19,6 @@
#include "base/strings/string_util.h"
#include "base/values.h"
#include "chrome/browser/component_updater/component_updater_service.h"
-#include "chrome/common/chrome_paths.h"
#include "content/public/browser/browser_thread.h"
#include "content/public/browser/gpu_data_manager.h"
#include "content/public/browser/gpu_data_manager_observer.h"
@@ -46,28 +45,25 @@ const base::FilePath::CharType kSwiftShaderGlesName[] =
const char kSwiftShaderManifestName[] = "SwiftShader";
+#if defined(ENABLE_SWIFTSHADER)
const base::FilePath::CharType kSwiftShaderBaseDirectory[] =
FILE_PATH_LITERAL("SwiftShader");
+#endif // ENABLE_SWIFTSHADER
// If we don't have a SwiftShader component, this is the version we claim.
const char kNullVersion[] = "0.0.0.0";
-// The base directory on windows looks like:
-// <profile>\AppData\Local\Google\Chrome\User Data\SwiftShader\.
-base::FilePath GetSwiftShaderBaseDirectory() {
- base::FilePath result;
- PathService::Get(chrome::DIR_USER_DATA, &result);
- return result.Append(kSwiftShaderBaseDirectory);
-}
-
// SwiftShader has version encoded in the path itself
// so we need to enumerate the directories to find the full path.
// On success it returns something like:
// <profile>\AppData\Local\Google\Chrome\User Data\SwiftShader\10.3.44.555\.
-bool GetLatestSwiftShaderDirectory(base::FilePath* result,
+// Return true if a SwiftShader directory newer than |latest| was found.
+// |result| must be initially an empty directory.
+bool GetLatestSwiftShaderDirectory(const base::FilePath& base_dir,
+ base::FilePath* result,
Version* latest,
std::vector<base::FilePath>* older_dirs) {
- base::FilePath base_dir = GetSwiftShaderBaseDirectory();
+ DCHECK(result->empty());
bool found = false;
base::FileEnumerator file_enumerator(
base_dir, false, base::FileEnumerator::DIRECTORIES);
@@ -79,7 +75,7 @@ bool GetLatestSwiftShaderDirectory(base::FilePath* result,
if (version.CompareTo(*latest) > 0 &&
base::PathExists(path.Append(kSwiftShaderEglName)) &&
base::PathExists(path.Append(kSwiftShaderGlesName))) {
- if (found && older_dirs)
+ if (found && older_dirs && !result->empty())
older_dirs->push_back(*result);
*latest = version;
*result = path;
@@ -99,7 +95,8 @@ void RegisterSwiftShaderWithChrome(const base::FilePath& path) {
class SwiftShaderComponentInstaller : public ComponentInstaller {
public:
- explicit SwiftShaderComponentInstaller(const Version& version);
+ explicit SwiftShaderComponentInstaller(const base::FilePath& base_dir,
+ const Version& version);
virtual ~SwiftShaderComponentInstaller() {}
@@ -112,12 +109,15 @@ class SwiftShaderComponentInstaller : public ComponentInstaller {
base::FilePath* installed_file) OVERRIDE;
private:
+ const base::FilePath base_dir_;
Version current_version_;
};
SwiftShaderComponentInstaller::SwiftShaderComponentInstaller(
+ const base::FilePath& base_dir,
const Version& version)
- : current_version_(version) {
+ : base_dir_(base_dir),
+ current_version_(version) {
DCHECK(version.IsValid());
}
@@ -143,8 +143,7 @@ bool SwiftShaderComponentInstaller::Install(
!base::PathExists(unpack_path.Append(kSwiftShaderGlesName)))
return false;
// Passed the basic tests. Time to install it.
- base::FilePath path =
- GetSwiftShaderBaseDirectory().AppendASCII(version.GetString());
+ base::FilePath path = base_dir_.AppendASCII(version.GetString());
if (base::PathExists(path))
return false;
if (!base::Move(unpack_path, path))
@@ -163,13 +162,14 @@ bool SwiftShaderComponentInstaller::GetInstalledFile(
return false;
}
-void FinishSwiftShaderUpdateRegistration(ComponentUpdateService* cus,
+void FinishSwiftShaderUpdateRegistration(const base::FilePath& base_dir,
+ ComponentUpdateService* cus,
const Version& version) {
DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI));
CrxComponent swiftshader;
swiftshader.name = "Swift Shader";
- swiftshader.installer = new SwiftShaderComponentInstaller(version);
+ swiftshader.installer = new SwiftShaderComponentInstaller(base_dir, version);
swiftshader.version = version;
swiftshader.pk_hash.assign(kSha2Hash, &kSha2Hash[sizeof(kSha2Hash)]);
if (cus->RegisterComponent(swiftshader) != ComponentUpdateService::kOk) {
@@ -179,15 +179,20 @@ void FinishSwiftShaderUpdateRegistration(ComponentUpdateService* cus,
class UpdateChecker : public content::GpuDataManagerObserver {
public:
- explicit UpdateChecker(ComponentUpdateService* cus);
+ explicit UpdateChecker(ComponentUpdateService* cus,
+ const base::FilePath& base_dir);
virtual void OnGpuInfoUpdate() OVERRIDE;
private:
ComponentUpdateService* cus_;
+ const base::FilePath base_dir_;
};
-UpdateChecker::UpdateChecker(ComponentUpdateService* cus) : cus_(cus) {
+UpdateChecker::UpdateChecker(ComponentUpdateService* cus,
+ const base::FilePath& base_dir)
+ : cus_(cus),
+ base_dir_(base_dir) {
}
void UpdateChecker::OnGpuInfoUpdate() {
@@ -198,15 +203,16 @@ void UpdateChecker::OnGpuInfoUpdate() {
gpu_data_manager->ShouldUseSwiftShader()) {
gpu_data_manager->RemoveObserver(this);
DCHECK(BrowserThread::CurrentlyOn(BrowserThread::FILE));
- base::FilePath path = GetSwiftShaderBaseDirectory();
+ base::FilePath latest_dir;
Version version(kNullVersion);
- GetLatestSwiftShaderDirectory(&path, &version, NULL);
+ GetLatestSwiftShaderDirectory(base_dir_, &latest_dir, &version, NULL);
BrowserThread::PostTask(
BrowserThread::UI,
FROM_HERE,
- base::Bind(&FinishSwiftShaderUpdateRegistration, cus_, version));
+ base::Bind(&FinishSwiftShaderUpdateRegistration, base_dir_, cus_,
+ version));
}
}
@@ -214,24 +220,27 @@ void UpdateChecker::OnGpuInfoUpdate() {
// Check if there already is a version of swiftshader installed,
// and if so register it.
-void RegisterSwiftShaderPath(ComponentUpdateService* cus) {
+void RegisterSwiftShaderPath(ComponentUpdateService* cus,
+ const base::FilePath& user_data_dir) {
DCHECK(BrowserThread::CurrentlyOn(BrowserThread::FILE));
- base::FilePath path = GetSwiftShaderBaseDirectory();
- if (!base::PathExists(path)) {
- if (!base::CreateDirectory(path)) {
+ base::FilePath base_dir = user_data_dir.Append(kSwiftShaderBaseDirectory);
+ if (!base::PathExists(base_dir)) {
+ if (!base::CreateDirectory(base_dir)) {
NOTREACHED() << "Could not create SwiftShader directory.";
return;
}
}
+ base::FilePath latest_dir;
Version version(kNullVersion);
std::vector<base::FilePath> older_dirs;
- if (GetLatestSwiftShaderDirectory(&path, &version, &older_dirs))
+ if (GetLatestSwiftShaderDirectory(&latest_dir, &version, &older_dirs))
BrowserThread::PostTask(BrowserThread::UI,
FROM_HERE,
- base::Bind(&RegisterSwiftShaderWithChrome, path));
+ base::Bind(&RegisterSwiftShaderWithChrome,
+ latest_dir));
- UpdateChecker* update_checker = new UpdateChecker(cus);
+ UpdateChecker* update_checker = new UpdateChecker(cus, base_dir);
GpuDataManager::GetInstance()->AddObserver(update_checker);
update_checker->OnGpuInfoUpdate();
// We leak update_checker here, because it has to stick around for the life
@@ -249,7 +258,8 @@ void RegisterSwiftShaderPath(ComponentUpdateService* cus) {
} // namespace
-void RegisterSwiftShaderComponent(ComponentUpdateService* cus) {
+void RegisterSwiftShaderComponent(ComponentUpdateService* cus,
+ const base::FilePath& user_data_dir) {
#if defined(ENABLE_SWIFTSHADER)
base::CPU cpu;

Powered by Google App Engine
This is Rietveld 408576698