1ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen// Copyright (c) 2011 The Chromium Authors. All rights reserved.
2bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen// Use of this source code is governed by a BSD-style license that can be
3bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen// found in the LICENSE file.
4bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen
5ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen#include "chrome/browser/chromeos/login/help_app_launcher.h"
6ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen
7bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen#include <string>
8bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen
9ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen#include "base/stringprintf.h"
103f50c38dc070f4bb515c1b64450dae14f316474eKristian Monsen#include "base/utf_string_conversions.h"
11ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen#include "chrome/browser/extensions/extension_service.h"
12ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen#include "chrome/browser/profiles/profile.h"
13ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen#include "chrome/browser/profiles/profile_manager.h"
14bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen#include "grit/generated_resources.h"
1572a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen#include "ui/base/l10n/l10n_util.h"
16bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen
17bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsennamespace {
18bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen
19ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsenconst char kHelpAppFormat[] =
20ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen    "chrome-extension://honijodknafkokifofgiaalefdiedpko/oobe.html?id=%d";
21bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen
22ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen}
23ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen
24ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsennamespace chromeos {
25bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen
26bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen///////////////////////////////////////////////////////////////////////////////
27bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen// HelpApp, public:
28bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen
29bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian MonsenHelpAppLauncher::HelpAppLauncher(gfx::NativeWindow parent_window)
30ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen    : parent_window_(parent_window) {
31bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen}
32bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen
33bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsenvoid HelpAppLauncher::ShowHelpTopic(HelpTopic help_topic_id) {
34ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen  Profile* profile = ProfileManager::GetDefaultProfile();
35ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen  ExtensionService* service = profile->GetExtensionService();
36ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen
37ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen  DCHECK(service);
38ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen  if (!service)
39bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen    return;
40bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen
41ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen  GURL url(base::StringPrintf(kHelpAppFormat,
42ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen                              static_cast<int>(help_topic_id)));
43ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen  // HelpApp component extension presents only in official builds so we can
44ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen  // show help only when the extensions is installed.
45ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen  if (service->GetExtensionByURL(url))
46ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen    ShowHelpTopicDialog(GURL(url));
47bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen}
48bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen
49bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen///////////////////////////////////////////////////////////////////////////////
50bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen// HelpApp, private:
51bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen
52bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsenvoid HelpAppLauncher::ShowHelpTopicDialog(const GURL& topic_url) {
5372a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen  DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI));
54ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen  dialog_.reset(new LoginHtmlDialog(
55ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen      this,
56ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen      parent_window_,
57ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen      UTF16ToWide(
58ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen          l10n_util::GetStringUTF16(IDS_LOGIN_OOBE_HELP_DIALOG_TITLE)),
59ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen      topic_url,
60ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen      LoginHtmlDialog::STYLE_BUBBLE));
61bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen  dialog_->Show();
62bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen}
63bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen
64bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen}  // namespace chromeos
65