OLD | NEW |
| (Empty) |
1 // Copyright 2013 The Chromium Authors. All rights reserved. | |
2 // Use of this source code is governed by a BSD-style license that can be | |
3 // found in the LICENSE file. | |
4 | |
5 #include "chrome/browser/chromeos/extensions/file_manager/file_manager_installer
.h" | |
6 | |
7 #include "base/strings/stringprintf.h" | |
8 #include "chrome/browser/profiles/profile.h" | |
9 #include "content/public/browser/web_contents.h" | |
10 | |
11 namespace file_manager { | |
12 | |
13 namespace { | |
14 const char kWebContentsDestroyedError[] = "WebContents is destroyed."; | |
15 } // namespace | |
16 | |
17 class FileManagerInstaller::WebContentsObserver | |
18 : public content::WebContentsObserver { | |
19 | |
20 public: | |
21 explicit WebContentsObserver( | |
22 content::WebContents* web_contents, | |
23 FileManagerInstaller* parent) | |
24 : content::WebContentsObserver(web_contents), | |
25 parent_(parent) { | |
26 } | |
27 | |
28 protected: | |
29 // content::WebContentsObserver implementation. | |
30 virtual void WebContentsDestroyed( | |
31 content::WebContents* web_contents) OVERRIDE { | |
32 parent_->OnWebContentsDestroyed(web_contents); | |
33 } | |
34 | |
35 private: | |
36 FileManagerInstaller* parent_; | |
37 | |
38 DISALLOW_IMPLICIT_CONSTRUCTORS(WebContentsObserver); | |
39 }; | |
40 | |
41 FileManagerInstaller::FileManagerInstaller( | |
42 content::WebContents* web_contents, | |
43 const std::string& webstore_item_id, | |
44 Profile* profile, | |
45 const Callback& callback) | |
46 : extensions::WebstoreStandaloneInstaller( | |
47 webstore_item_id, | |
48 profile, | |
49 callback), | |
50 callback_(callback), | |
51 web_contents_(web_contents), | |
52 web_contents_observer_(new WebContentsObserver(web_contents, this)) { | |
53 } | |
54 | |
55 FileManagerInstaller::~FileManagerInstaller() {} | |
56 | |
57 bool FileManagerInstaller::CheckRequestorAlive() const { | |
58 // The tab may have gone away - cancel installation in that case. | |
59 return web_contents_ != NULL; | |
60 } | |
61 | |
62 const GURL& FileManagerInstaller::GetRequestorURL() const { | |
63 return GURL::EmptyGURL(); | |
64 } | |
65 | |
66 scoped_ptr<ExtensionInstallPrompt::Prompt> | |
67 FileManagerInstaller::CreateInstallPrompt() const { | |
68 scoped_ptr<ExtensionInstallPrompt::Prompt> prompt( | |
69 new ExtensionInstallPrompt::Prompt( | |
70 ExtensionInstallPrompt::INLINE_INSTALL_PROMPT)); | |
71 | |
72 prompt->SetInlineInstallWebstoreData(localized_user_count(), | |
73 show_user_count(), | |
74 average_rating(), | |
75 rating_count()); | |
76 return prompt.Pass(); | |
77 } | |
78 | |
79 bool FileManagerInstaller::ShouldShowPostInstallUI() const { | |
80 return false; | |
81 } | |
82 | |
83 bool FileManagerInstaller::ShouldShowAppInstalledBubble() const { | |
84 return false; | |
85 } | |
86 | |
87 content::WebContents* FileManagerInstaller::GetWebContents() const { | |
88 return web_contents_; | |
89 } | |
90 | |
91 bool FileManagerInstaller::CheckInlineInstallPermitted( | |
92 const base::DictionaryValue& webstore_data, | |
93 std::string* error) const { | |
94 DCHECK(error != NULL); | |
95 DCHECK(error->empty()); | |
96 return true; | |
97 } | |
98 | |
99 bool FileManagerInstaller::CheckRequestorPermitted( | |
100 const base::DictionaryValue& webstore_data, | |
101 std::string* error) const { | |
102 DCHECK(error != NULL); | |
103 DCHECK(error->empty()); | |
104 return true; | |
105 } | |
106 | |
107 void FileManagerInstaller::OnWebContentsDestroyed( | |
108 content::WebContents* web_contents) { | |
109 callback_.Run(false, kWebContentsDestroyedError); | |
110 AbortInstall(); | |
111 } | |
112 | |
113 } // namespace file_manager | |
OLD | NEW |