OLD | NEW |
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #include "chrome/browser/extensions/tab_helper.h" | 5 #include "chrome/browser/extensions/tab_helper.h" |
6 | 6 |
7 #include "base/logging.h" | 7 #include "base/logging.h" |
8 #include "base/memory/ptr_util.h" | 8 #include "base/memory/ptr_util.h" |
9 #include "base/strings/string_util.h" | 9 #include "base/strings/string_util.h" |
10 #include "base/strings/utf_string_conversions.h" | 10 #include "base/strings/utf_string_conversions.h" |
(...skipping 180 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
191 registrar_.Add(this, | 191 registrar_.Add(this, |
192 content::NOTIFICATION_LOAD_STOP, | 192 content::NOTIFICATION_LOAD_STOP, |
193 content::Source<NavigationController>( | 193 content::Source<NavigationController>( |
194 &web_contents->GetController())); | 194 &web_contents->GetController())); |
195 } | 195 } |
196 | 196 |
197 TabHelper::~TabHelper() { | 197 TabHelper::~TabHelper() { |
198 RemoveScriptExecutionObserver(ActivityLog::GetInstance(profile_)); | 198 RemoveScriptExecutionObserver(ActivityLog::GetInstance(profile_)); |
199 } | 199 } |
200 | 200 |
201 void TabHelper::CreateApplicationShortcuts() { | |
202 DCHECK(CanCreateApplicationShortcuts()); | |
203 if (pending_web_app_action_ != NONE) | |
204 return; | |
205 | |
206 // Start fetching web app info for CreateApplicationShortcut dialog and show | |
207 // the dialog when the data is available in OnDidGetApplicationInfo. | |
208 GetApplicationInfo(CREATE_SHORTCUT); | |
209 } | |
210 | |
211 void TabHelper::CreateHostedAppFromWebContents() { | 201 void TabHelper::CreateHostedAppFromWebContents() { |
212 DCHECK(CanCreateBookmarkApp()); | 202 DCHECK(CanCreateBookmarkApp()); |
213 if (pending_web_app_action_ != NONE) | 203 if (pending_web_app_action_ != NONE) |
214 return; | 204 return; |
215 | 205 |
216 // Start fetching web app info for CreateApplicationShortcut dialog and show | 206 // Start fetching web app info for CreateApplicationShortcut dialog and show |
217 // the dialog when the data is available in OnDidGetApplicationInfo. | 207 // the dialog when the data is available in OnDidGetApplicationInfo. |
218 GetApplicationInfo(CREATE_HOSTED_APP); | 208 GetApplicationInfo(CREATE_HOSTED_APP); |
219 } | 209 } |
220 | 210 |
221 bool TabHelper::CanCreateApplicationShortcuts() const { | |
222 #if defined(OS_MACOSX) | |
223 return false; | |
224 #else | |
225 return web_app::IsValidUrl(web_contents()->GetURL()); | |
226 #endif | |
227 } | |
228 | |
229 bool TabHelper::CanCreateBookmarkApp() const { | 211 bool TabHelper::CanCreateBookmarkApp() const { |
230 return !profile_->IsGuestSession() && | 212 return !profile_->IsGuestSession() && |
231 !profile_->IsSystemProfile() && | 213 !profile_->IsSystemProfile() && |
232 IsValidBookmarkAppUrl(web_contents()->GetURL()); | 214 IsValidBookmarkAppUrl(web_contents()->GetURL()); |
233 } | 215 } |
234 | 216 |
235 void TabHelper::AddScriptExecutionObserver(ScriptExecutionObserver* observer) { | 217 void TabHelper::AddScriptExecutionObserver(ScriptExecutionObserver* observer) { |
236 script_execution_observers_.AddObserver(observer); | 218 script_execution_observers_.AddObserver(observer); |
237 } | 219 } |
238 | 220 |
(...skipping 152 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
391 void TabHelper::OnDidGetWebApplicationInfo(const WebApplicationInfo& info) { | 373 void TabHelper::OnDidGetWebApplicationInfo(const WebApplicationInfo& info) { |
392 web_app_info_ = info; | 374 web_app_info_ = info; |
393 | 375 |
394 NavigationEntry* entry = | 376 NavigationEntry* entry = |
395 web_contents()->GetController().GetLastCommittedEntry(); | 377 web_contents()->GetController().GetLastCommittedEntry(); |
396 if (!entry || last_committed_nav_entry_unique_id_ != entry->GetUniqueID()) | 378 if (!entry || last_committed_nav_entry_unique_id_ != entry->GetUniqueID()) |
397 return; | 379 return; |
398 last_committed_nav_entry_unique_id_ = 0; | 380 last_committed_nav_entry_unique_id_ = 0; |
399 | 381 |
400 switch (pending_web_app_action_) { | 382 switch (pending_web_app_action_) { |
401 #if !defined(OS_MACOSX) | |
402 case CREATE_SHORTCUT: { | |
403 chrome::ShowCreateWebAppShortcutsDialog( | |
404 web_contents()->GetTopLevelNativeWindow(), | |
405 web_contents()); | |
406 break; | |
407 } | |
408 #endif | |
409 case CREATE_HOSTED_APP: { | 383 case CREATE_HOSTED_APP: { |
410 if (web_app_info_.app_url.is_empty()) | 384 if (web_app_info_.app_url.is_empty()) |
411 web_app_info_.app_url = web_contents()->GetURL(); | 385 web_app_info_.app_url = web_contents()->GetURL(); |
412 | 386 |
413 if (web_app_info_.title.empty()) | 387 if (web_app_info_.title.empty()) |
414 web_app_info_.title = web_contents()->GetTitle(); | 388 web_app_info_.title = web_contents()->GetTitle(); |
415 if (web_app_info_.title.empty()) | 389 if (web_app_info_.title.empty()) |
416 web_app_info_.title = base::UTF8ToUTF16(web_app_info_.app_url.spec()); | 390 web_app_info_.title = base::UTF8ToUTF16(web_app_info_.app_url.spec()); |
417 | 391 |
418 bookmark_app_helper_.reset( | 392 bookmark_app_helper_.reset( |
(...skipping 263 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
682 } | 656 } |
683 } | 657 } |
684 | 658 |
685 void TabHelper::SetTabId(content::RenderFrameHost* render_frame_host) { | 659 void TabHelper::SetTabId(content::RenderFrameHost* render_frame_host) { |
686 render_frame_host->Send( | 660 render_frame_host->Send( |
687 new ExtensionMsg_SetTabId(render_frame_host->GetRoutingID(), | 661 new ExtensionMsg_SetTabId(render_frame_host->GetRoutingID(), |
688 SessionTabHelper::IdForTab(web_contents()))); | 662 SessionTabHelper::IdForTab(web_contents()))); |
689 } | 663 } |
690 | 664 |
691 } // namespace extensions | 665 } // namespace extensions |
OLD | NEW |