1ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen// Copyright (c) 2011 The Chromium Authors. All rights reserved. 2c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// Use of this source code is governed by a BSD-style license that can be 3c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// found in the LICENSE file. 4c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 5c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch#include "chrome/browser/web_applications/web_app.h" 6c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 7c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch#include "base/file_path.h" 8c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch#include "base/string_util.h" 93345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick#include "base/utf_string_conversions.h" 10ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen#include "chrome/browser/ui/tab_contents/test_tab_contents_wrapper.h" 11ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen#include "chrome/browser/ui/web_applications/web_app_ui.h" 12ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen#include "chrome/common/extensions/extension_messages.h" 13c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch#include "chrome/test/testing_profile.h" 14dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen#include "content/browser/browser_thread.h" 15c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch#include "testing/gtest/include/gtest/gtest.h" 16c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 17ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsenclass WebApplicationTest : public TabContentsWrapperTestHarness { 18c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch public: 19c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch WebApplicationTest() 20ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen : TabContentsWrapperTestHarness(), 21731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick ui_thread_(BrowserThread::UI, &message_loop_) { 22c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch } 23c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 24c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch private: 25c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch // Supply our own profile so we use the correct profile data. The test harness 26c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch // is not supposed to overwrite a profile if it's already created. 27c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch virtual void SetUp() { 28c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch profile_.reset(new TestingProfile()); 29c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 30ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen TabContentsWrapperTestHarness::SetUp(); 31c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch } 32c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 33c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch virtual void TearDown() { 34ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen TabContentsWrapperTestHarness::TearDown(); 35c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 36c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch profile_.reset(NULL); 37c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch } 38c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 39731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick BrowserThread ui_thread_; 40c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch}; 41c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 42c407dc5cd9bdc5668497f21b26b09d988ab439deBen MurdochTEST_F(WebApplicationTest, GetShortcutInfoForTab) { 43c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch const string16 title = ASCIIToUTF16("TEST_TITLE"); 44c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch const string16 description = ASCIIToUTF16("TEST_DESCRIPTION"); 45c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch const GURL url("http://www.foo.com/bar"); 464a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch WebApplicationInfo web_app_info; 47c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch web_app_info.title = title; 48c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch web_app_info.description = description; 49c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch web_app_info.app_url = url; 50c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 51c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch rvh()->TestOnMessageReceived( 52ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen ExtensionHostMsg_DidGetApplicationInfo(0, 0, web_app_info)); 53c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch ShellIntegration::ShortcutInfo info; 54ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen web_app::GetShortcutInfoForTab(contents_wrapper(), &info); 55c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 56c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch EXPECT_EQ(title, info.title); 57c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch EXPECT_EQ(description, info.description); 58c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch EXPECT_EQ(url, info.url); 59c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch} 60c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 61c407dc5cd9bdc5668497f21b26b09d988ab439deBen MurdochTEST_F(WebApplicationTest, GetDataDir) { 62c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch FilePath test_path(FILE_PATH_LITERAL("/path/to/test")); 63c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch FilePath result = web_app::GetDataDir(test_path); 64c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch test_path = test_path.AppendASCII("Web Applications"); 65c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch EXPECT_EQ(test_path.value(), result.value()); 66c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch} 67