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