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

Unified Diff: chrome/browser/chromeos/app_mode/kiosk_app_manager_browsertest.cc

Issue 137343003: kiosk: Do update check during launch. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: for #1 comments, use default for empty update url and skip for bad update url Created 6 years, 11 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/chromeos/app_mode/kiosk_app_manager_browsertest.cc
diff --git a/chrome/browser/chromeos/app_mode/kiosk_app_manager_browsertest.cc b/chrome/browser/chromeos/app_mode/kiosk_app_manager_browsertest.cc
index ad615533b491d37c7d9ab88a3810ab5af0ff08f1..8fe5ca4c27b12e0ad4293205089e505b6929a04f 100644
--- a/chrome/browser/chromeos/app_mode/kiosk_app_manager_browsertest.cc
+++ b/chrome/browser/chromeos/app_mode/kiosk_app_manager_browsertest.cc
@@ -5,6 +5,8 @@
#include "chrome/browser/chromeos/app_mode/kiosk_app_manager.h"
#include "base/command_line.h"
+#include "base/file_util.h"
+#include "base/files/scoped_temp_dir.h"
#include "base/message_loop/message_loop.h"
#include "base/path_service.h"
#include "base/prefs/scoped_user_pref_update.h"
@@ -15,11 +17,13 @@
#include "chrome/browser/chromeos/policy/device_local_account.h"
#include "chrome/browser/chromeos/settings/cros_settings.h"
#include "chrome/browser/policy/browser_policy_connector.h"
+#include "chrome/browser/ui/browser.h"
#include "chrome/common/chrome_paths.h"
#include "chrome/common/chrome_switches.h"
#include "chrome/test/base/in_process_browser_test.h"
#include "chromeos/settings/cros_settings_names.h"
#include "content/public/test/test_utils.h"
+#include "extensions/common/extension.h"
#include "net/base/host_port_pair.h"
#include "net/dns/mock_host_resolver.h"
#include "net/test/embedded_test_server/embedded_test_server.h"
@@ -60,6 +64,27 @@ void OnEnterpriseDeviceLock(
runner_quit_task.Run();
}
+scoped_refptr<extensions::Extension> MakeApp(const std::string& name,
+ const std::string& version,
+ const std::string& url,
+ const std::string& id) {
+ std::string err;
+ base::DictionaryValue value;
+ value.SetString("name", name);
+ value.SetString("version", version);
+ value.SetString("app.launch.web_url", url);
+ scoped_refptr<extensions::Extension> app =
+ extensions::Extension::Create(
+ base::FilePath(),
+ extensions::Manifest::INTERNAL,
+ value,
+ extensions::Extension::WAS_INSTALLED_BY_DEFAULT,
+ id,
+ &err);
+ EXPECT_EQ(err, "");
+ return app;
+}
+
class TestKioskAppManagerObserver : public KioskAppManagerObserver {
public:
explicit TestKioskAppManagerObserver(KioskAppManager* manager)
@@ -153,6 +178,8 @@ class KioskAppManagerTest : public InProcessBrowserTest {
// spawning sandbox host process. See crbug.com/322732.
embedded_test_server()->StopThread();
+ ASSERT_TRUE(temp_dir_.CreateUniqueTempDir());
+
InProcessBrowserTest::SetUp();
}
@@ -198,8 +225,6 @@ class KioskAppManagerTest : public InProcessBrowserTest {
return str;
}
- KioskAppManager* manager() const { return KioskAppManager::Get(); }
-
// Locks device for enterprise.
policy::EnterpriseInstallAttributes::LockResult LockDeviceForEnterprise() {
scoped_ptr<policy::EnterpriseInstallAttributes::LockResult> lock_result(
@@ -219,7 +244,49 @@ class KioskAppManagerTest : public InProcessBrowserTest {
return *lock_result.get();
}
+ void SetExistingApp(const std::string& app_id,
+ const std::string& app_name,
+ const std::string& icon_file_name) {
+ base::FilePath test_dir;
+ ASSERT_TRUE(PathService::Get(chrome::DIR_TEST_DATA, &test_dir));
+ base::FilePath data_dir = test_dir.AppendASCII("chromeos/app_mode/");
+
+ // Copy the icon file to temp dir for using because ClearAppData test
+ // deletes it.
+ base::FilePath icon_path = temp_dir_.path().AppendASCII(icon_file_name);
+ base::CopyFile(data_dir.AppendASCII(icon_file_name), icon_path);
+
+ scoped_ptr<base::DictionaryValue> apps_dict(new base::DictionaryValue);
+ apps_dict->SetString(app_id + ".name", app_name);
+ apps_dict->SetString(app_id + ".icon", icon_path.MaybeAsASCII());
+
+ PrefService* local_state = g_browser_process->local_state();
+ DictionaryPrefUpdate dict_update(local_state,
+ KioskAppManager::kKioskDictionaryName);
+ dict_update->Set(KioskAppManager::kKeyApps, apps_dict.release());
+
+ // Make the app appear in device settings.
+ base::ListValue device_local_accounts;
+ scoped_ptr<base::DictionaryValue> entry(new base::DictionaryValue);
+ entry->SetStringWithoutPathExpansion(
+ kAccountsPrefDeviceLocalAccountsKeyId,
+ app_id + "_id");
+ entry->SetIntegerWithoutPathExpansion(
+ kAccountsPrefDeviceLocalAccountsKeyType,
+ policy::DeviceLocalAccount::TYPE_KIOSK_APP);
+ entry->SetStringWithoutPathExpansion(
+ kAccountsPrefDeviceLocalAccountsKeyKioskAppId,
+ app_id);
+ device_local_accounts.Append(entry.release());
+ CrosSettings::Get()->Set(kAccountsPrefDeviceLocalAccounts,
+ device_local_accounts);
+ }
+
+ KioskAppManager* manager() const { return KioskAppManager::Get(); }
+
private:
+ base::ScopedTempDir temp_dir_;
+
DISALLOW_COPY_AND_ASSIGN(KioskAppManagerTest);
};
@@ -272,36 +339,37 @@ IN_PROC_BROWSER_TEST_F(KioskAppManagerTest, Basic) {
}
IN_PROC_BROWSER_TEST_F(KioskAppManagerTest, LoadCached) {
- base::FilePath test_dir;
- ASSERT_TRUE(PathService::Get(chrome::DIR_TEST_DATA, &test_dir));
- base::FilePath data_dir = test_dir.AppendASCII("chromeos/app_mode/");
+ SetExistingApp("app_1", "Cached App1 Name", "red16x16.png");
+
+ AppDataLoadWaiter waiter(manager());
+ waiter.Wait();
+ EXPECT_TRUE(waiter.loaded());
+
+ KioskAppManager::Apps apps;
+ manager()->GetApps(&apps);
+ EXPECT_EQ(1u, apps.size());
+ EXPECT_EQ("app_1", apps[0].app_id);
+ EXPECT_EQ("Cached App1 Name", apps[0].name);
+ EXPECT_EQ(gfx::Size(16, 16), apps[0].icon.size());
+}
- scoped_ptr<base::DictionaryValue> apps_dict(new base::DictionaryValue);
- apps_dict->SetString("app_1.name", "App1 Name");
- std::string icon_path =
- base::StringPrintf("%s/red16x16.png", data_dir.value().c_str());
- apps_dict->SetString("app_1.icon", icon_path);
+IN_PROC_BROWSER_TEST_F(KioskAppManagerTest, ClearAppData) {
+ SetExistingApp("app_1", "Cached App1 Name", "red16x16.png");
PrefService* local_state = g_browser_process->local_state();
- DictionaryPrefUpdate dict_update(local_state,
- KioskAppManager::kKioskDictionaryName);
- dict_update->Set(KioskAppManager::kKeyApps, apps_dict.release());
-
- // Make the app appear in device settings.
- base::ListValue device_local_accounts;
- scoped_ptr<base::DictionaryValue> entry(new base::DictionaryValue);
- entry->SetStringWithoutPathExpansion(
- kAccountsPrefDeviceLocalAccountsKeyId,
- "app_1_id");
- entry->SetIntegerWithoutPathExpansion(
- kAccountsPrefDeviceLocalAccountsKeyType,
- policy::DeviceLocalAccount::TYPE_KIOSK_APP);
- entry->SetStringWithoutPathExpansion(
- kAccountsPrefDeviceLocalAccountsKeyKioskAppId,
- "app_1");
- device_local_accounts.Append(entry.release());
- CrosSettings::Get()->Set(kAccountsPrefDeviceLocalAccounts,
- device_local_accounts);
+ const base::DictionaryValue* dict =
+ local_state->GetDictionary(KioskAppManager::kKioskDictionaryName);
+ const base::DictionaryValue* apps_dict;
+ EXPECT_TRUE(dict->GetDictionary(KioskAppManager::kKeyApps, &apps_dict));
+ EXPECT_TRUE(apps_dict->HasKey("app_1"));
+
+ manager()->ClearAppData("app_1");
+
+ EXPECT_FALSE(apps_dict->HasKey("app_1"));
+}
+
+IN_PROC_BROWSER_TEST_F(KioskAppManagerTest, UpdateAppDataFromProfile) {
+ SetExistingApp("app_1", "Cached App1 Name", "red16x16.png");
AppDataLoadWaiter waiter(manager());
waiter.Wait();
@@ -311,8 +379,20 @@ IN_PROC_BROWSER_TEST_F(KioskAppManagerTest, LoadCached) {
manager()->GetApps(&apps);
EXPECT_EQ(1u, apps.size());
EXPECT_EQ("app_1", apps[0].app_id);
- EXPECT_EQ("App1 Name", apps[0].name);
- EXPECT_EQ(gfx::Size(16, 16), apps[0].icon.size());
+ EXPECT_EQ("Cached App1 Name", apps[0].name);
+
+ scoped_refptr<extensions::Extension> updated_app =
+ MakeApp("Updated App1 Name", "2.0", "http://localhost/", "app_1");
+ manager()->UpdateAppDataFromProfile(
+ "app_1", browser()->profile(), updated_app.get());
+
+ waiter.Wait();
+ EXPECT_TRUE(waiter.loaded());
+
+ manager()->GetApps(&apps);
+ EXPECT_EQ(1u, apps.size());
+ EXPECT_EQ("app_1", apps[0].app_id);
+ EXPECT_EQ("Updated App1 Name", apps[0].name);
}
IN_PROC_BROWSER_TEST_F(KioskAppManagerTest, BadApp) {
« no previous file with comments | « chrome/browser/chromeos/app_mode/kiosk_app_manager.cc ('k') | chrome/browser/chromeos/app_mode/kiosk_app_update_service.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698