Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(90)

Side by Side Diff: chrome/browser/extensions/api/tabs/tabs_api.cc

Issue 543873002: Add ChromeExtensionFunctionDetails (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 6 years, 3 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
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/api/tabs/tabs_api.h" 5 #include "chrome/browser/extensions/api/tabs/tabs_api.h"
6 6
7 #include <algorithm> 7 #include <algorithm>
8 #include <limits> 8 #include <limits>
9 #include <vector> 9 #include <vector>
10 10
(...skipping 1615 matching lines...) Expand 10 before | Expand all | Expand 10 after
1626 } 1626 }
1627 1627
1628 void TabsDetectLanguageFunction::GotLanguage(const std::string& language) { 1628 void TabsDetectLanguageFunction::GotLanguage(const std::string& language) {
1629 SetResult(new base::StringValue(language.c_str())); 1629 SetResult(new base::StringValue(language.c_str()));
1630 SendResponse(true); 1630 SendResponse(true);
1631 1631
1632 Release(); // Balanced in Run() 1632 Release(); // Balanced in Run()
1633 } 1633 }
1634 1634
1635 ExecuteCodeInTabFunction::ExecuteCodeInTabFunction() 1635 ExecuteCodeInTabFunction::ExecuteCodeInTabFunction()
1636 : execute_tab_id_(-1) { 1636 : chrome_details_(this), execute_tab_id_(-1) {
1637 } 1637 }
1638 1638
1639 ExecuteCodeInTabFunction::~ExecuteCodeInTabFunction() {} 1639 ExecuteCodeInTabFunction::~ExecuteCodeInTabFunction() {}
1640 1640
1641 bool ExecuteCodeInTabFunction::HasPermission() { 1641 bool ExecuteCodeInTabFunction::HasPermission() {
1642 if (Init() && 1642 if (Init() &&
1643 extension_->permissions_data()->HasAPIPermissionForTab( 1643 extension_->permissions_data()->HasAPIPermissionForTab(
1644 execute_tab_id_, APIPermission::kTab)) { 1644 execute_tab_id_, APIPermission::kTab)) {
1645 return true; 1645 return true;
1646 } 1646 }
1647 return ExtensionFunction::HasPermission(); 1647 return ExtensionFunction::HasPermission();
1648 } 1648 }
1649 1649
1650 bool ExecuteCodeInTabFunction::CanExecuteScriptOnPage() { 1650 bool ExecuteCodeInTabFunction::CanExecuteScriptOnPage() {
1651 content::WebContents* contents = NULL; 1651 content::WebContents* contents = NULL;
1652 1652
1653 // If |tab_id| is specified, look for the tab. Otherwise default to selected 1653 // If |tab_id| is specified, look for the tab. Otherwise default to selected
1654 // tab in the current window. 1654 // tab in the current window.
1655 CHECK_GE(execute_tab_id_, 0); 1655 CHECK_GE(execute_tab_id_, 0);
1656 if (!GetTabById(execute_tab_id_, 1656 if (!GetTabById(execute_tab_id_,
1657 GetProfile(), 1657 chrome_details_.GetProfile(),
1658 include_incognito(), 1658 include_incognito(),
1659 NULL, 1659 NULL,
1660 NULL, 1660 NULL,
1661 &contents, 1661 &contents,
1662 NULL, 1662 NULL,
1663 &error_)) { 1663 &error_)) {
1664 return false; 1664 return false;
1665 } 1665 }
1666 1666
1667 CHECK(contents); 1667 CHECK(contents);
(...skipping 12 matching lines...) Expand all
1680 } 1680 }
1681 1681
1682 return true; 1682 return true;
1683 } 1683 }
1684 1684
1685 ScriptExecutor* ExecuteCodeInTabFunction::GetScriptExecutor() { 1685 ScriptExecutor* ExecuteCodeInTabFunction::GetScriptExecutor() {
1686 Browser* browser = NULL; 1686 Browser* browser = NULL;
1687 content::WebContents* contents = NULL; 1687 content::WebContents* contents = NULL;
1688 1688
1689 bool success = GetTabById(execute_tab_id_, 1689 bool success = GetTabById(execute_tab_id_,
1690 GetProfile(), 1690 chrome_details_.GetProfile(),
1691 include_incognito(), 1691 include_incognito(),
1692 &browser, 1692 &browser,
1693 NULL, 1693 NULL,
1694 &contents, 1694 &contents,
1695 NULL, 1695 NULL,
1696 &error_) && 1696 &error_) &&
1697 contents && browser; 1697 contents && browser;
1698 1698
1699 if (!success) 1699 if (!success)
1700 return NULL; 1700 return NULL;
1701 1701
1702 return TabHelper::FromWebContents(contents)->script_executor(); 1702 return TabHelper::FromWebContents(contents)->script_executor();
1703 } 1703 }
1704 1704
1705 bool ExecuteCodeInTabFunction::IsWebView() const { 1705 bool ExecuteCodeInTabFunction::IsWebView() const {
1706 return false; 1706 return false;
1707 } 1707 }
1708 1708
1709 const GURL& ExecuteCodeInTabFunction::GetWebViewSrc() const { 1709 const GURL& ExecuteCodeInTabFunction::GetWebViewSrc() const {
1710 return GURL::EmptyGURL(); 1710 return GURL::EmptyGURL();
1711 } 1711 }
1712 1712
1713 bool TabsExecuteScriptFunction::ShouldInsertCSS() const {
1714 return false;
1715 }
1716
1717 void TabsExecuteScriptFunction::OnExecuteCodeFinished(
1718 const std::string& error,
1719 const GURL& on_url,
1720 const base::ListValue& result) {
1721 if (error.empty())
1722 SetResult(result.DeepCopy());
1723 ExecuteCodeInTabFunction::OnExecuteCodeFinished(error, on_url, result);
1724 }
1725
1726 bool ExecuteCodeInTabFunction::Init() { 1713 bool ExecuteCodeInTabFunction::Init() {
scheib 2014/09/05 03:17:22 Thanks for fixing other member's order to match de
Ken Rockot(use gerrit already) 2014/09/05 16:47:39 Done.
1727 if (details_.get()) 1714 if (details_.get())
1728 return true; 1715 return true;
1729 1716
1730 // |tab_id| is optional so it's ok if it's not there. 1717 // |tab_id| is optional so it's ok if it's not there.
1731 int tab_id = -1; 1718 int tab_id = -1;
1732 if (args_->GetInteger(0, &tab_id)) 1719 if (args_->GetInteger(0, &tab_id))
1733 EXTENSION_FUNCTION_VALIDATE(tab_id >= 0); 1720 EXTENSION_FUNCTION_VALIDATE(tab_id >= 0);
1734 1721
1735 // |details| are not optional. 1722 // |details| are not optional.
1736 base::DictionaryValue* details_value = NULL; 1723 base::DictionaryValue* details_value = NULL;
1737 if (!args_->GetDictionary(1, &details_value)) 1724 if (!args_->GetDictionary(1, &details_value))
1738 return false; 1725 return false;
1739 scoped_ptr<InjectDetails> details(new InjectDetails()); 1726 scoped_ptr<InjectDetails> details(new InjectDetails());
1740 if (!InjectDetails::Populate(*details_value, details.get())) 1727 if (!InjectDetails::Populate(*details_value, details.get()))
1741 return false; 1728 return false;
1742 1729
1743 // If the tab ID wasn't given then it needs to be converted to the 1730 // If the tab ID wasn't given then it needs to be converted to the
1744 // currently active tab's ID. 1731 // currently active tab's ID.
1745 if (tab_id == -1) { 1732 if (tab_id == -1) {
1746 Browser* browser = GetCurrentBrowser(); 1733 Browser* browser = chrome_details_.GetCurrentBrowser();
1747 if (!browser) 1734 if (!browser)
1748 return false; 1735 return false;
1749 content::WebContents* web_contents = NULL; 1736 content::WebContents* web_contents = NULL;
1750 if (!ExtensionTabUtil::GetDefaultTab(browser, &web_contents, &tab_id)) 1737 if (!ExtensionTabUtil::GetDefaultTab(browser, &web_contents, &tab_id))
1751 return false; 1738 return false;
1752 } 1739 }
1753 1740
1754 execute_tab_id_ = tab_id; 1741 execute_tab_id_ = tab_id;
1755 details_ = details.Pass(); 1742 details_ = details.Pass();
1756 return true; 1743 return true;
1757 } 1744 }
1758 1745
1746 bool TabsExecuteScriptFunction::ShouldInsertCSS() const {
1747 return false;
1748 }
1749
1750 void TabsExecuteScriptFunction::OnExecuteCodeFinished(
1751 const std::string& error,
1752 const GURL& on_url,
1753 const base::ListValue& result) {
1754 if (error.empty())
1755 SetResult(result.DeepCopy());
1756 ExecuteCodeInTabFunction::OnExecuteCodeFinished(error, on_url, result);
1757 }
1758
1759 bool TabsInsertCSSFunction::ShouldInsertCSS() const { 1759 bool TabsInsertCSSFunction::ShouldInsertCSS() const {
1760 return true; 1760 return true;
1761 } 1761 }
1762 1762
1763 content::WebContents* ZoomAPIFunction::GetWebContents(int tab_id) { 1763 content::WebContents* ZoomAPIFunction::GetWebContents(int tab_id) {
1764 content::WebContents* web_contents = NULL; 1764 content::WebContents* web_contents = NULL;
1765 if (tab_id != -1) { 1765 if (tab_id != -1) {
1766 // We assume this call leaves web_contents unchanged if it is unsuccessful. 1766 // We assume this call leaves web_contents unchanged if it is unsuccessful.
1767 GetTabById(tab_id, 1767 GetTabById(tab_id,
1768 GetProfile(), 1768 GetProfile(),
(...skipping 126 matching lines...) Expand 10 before | Expand all | Expand 10 after
1895 ZoomController::ZoomMode zoom_mode = zoom_controller->zoom_mode(); 1895 ZoomController::ZoomMode zoom_mode = zoom_controller->zoom_mode();
1896 api::tabs::ZoomSettings zoom_settings; 1896 api::tabs::ZoomSettings zoom_settings;
1897 ZoomModeToZoomSettings(zoom_mode, &zoom_settings); 1897 ZoomModeToZoomSettings(zoom_mode, &zoom_settings);
1898 1898
1899 results_ = api::tabs::GetZoomSettings::Results::Create(zoom_settings); 1899 results_ = api::tabs::GetZoomSettings::Results::Create(zoom_settings);
1900 SendResponse(true); 1900 SendResponse(true);
1901 return true; 1901 return true;
1902 } 1902 }
1903 1903
1904 } // namespace extensions 1904 } // namespace extensions
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698