| 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/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 784 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 795 | 795 |
| 796 bool TabsQueryFunction::RunSync() { | 796 bool TabsQueryFunction::RunSync() { |
| 797 scoped_ptr<tabs::Query::Params> params(tabs::Query::Params::Create(*args_)); | 797 scoped_ptr<tabs::Query::Params> params(tabs::Query::Params::Create(*args_)); |
| 798 EXTENSION_FUNCTION_VALIDATE(params.get()); | 798 EXTENSION_FUNCTION_VALIDATE(params.get()); |
| 799 | 799 |
| 800 bool loading_status_set = params->query_info.status != | 800 bool loading_status_set = params->query_info.status != |
| 801 tabs::Query::Params::QueryInfo::STATUS_NONE; | 801 tabs::Query::Params::QueryInfo::STATUS_NONE; |
| 802 bool loading = params->query_info.status == | 802 bool loading = params->query_info.status == |
| 803 tabs::Query::Params::QueryInfo::STATUS_LOADING; | 803 tabs::Query::Params::QueryInfo::STATUS_LOADING; |
| 804 | 804 |
| 805 // It is o.k. to use URLPattern::SCHEME_ALL here because this function does | 805 URLPatternSet url_patterns; |
| 806 // not grant access to the content of the tabs, only to seeing their URLs and | 806 if (params->query_info.url.get()) { |
| 807 // meta data. | 807 std::vector<std::string> url_pattern_strings; |
| 808 URLPattern url_pattern(URLPattern::SCHEME_ALL, "<all_urls>"); | 808 if (params->query_info.url->as_string) |
| 809 if (params->query_info.url.get()) | 809 url_pattern_strings.push_back(*params->query_info.url->as_string); |
| 810 url_pattern = URLPattern(URLPattern::SCHEME_ALL, *params->query_info.url); | 810 else if (params->query_info.url->as_strings) |
| 811 url_pattern_strings.swap(*params->query_info.url->as_strings); |
| 812 // It is o.k. to use URLPattern::SCHEME_ALL here because this function does |
| 813 // not grant access to the content of the tabs, only to seeing their URLs |
| 814 // and meta data. |
| 815 if (!url_patterns.Populate(url_pattern_strings, URLPattern::SCHEME_ALL, |
| 816 true, &error_)) { |
| 817 return false; |
| 818 } |
| 819 } |
| 811 | 820 |
| 812 std::string title; | 821 std::string title; |
| 813 if (params->query_info.title.get()) | 822 if (params->query_info.title.get()) |
| 814 title = *params->query_info.title; | 823 title = *params->query_info.title; |
| 815 | 824 |
| 816 int window_id = extension_misc::kUnknownWindowId; | 825 int window_id = extension_misc::kUnknownWindowId; |
| 817 if (params->query_info.window_id.get()) | 826 if (params->query_info.window_id.get()) |
| 818 window_id = *params->query_info.window_id; | 827 window_id = *params->query_info.window_id; |
| 819 | 828 |
| 820 int index = -1; | 829 int index = -1; |
| (...skipping 65 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 886 | 895 |
| 887 if (!MatchesBool(params->query_info.pinned.get(), | 896 if (!MatchesBool(params->query_info.pinned.get(), |
| 888 tab_strip->IsTabPinned(i))) { | 897 tab_strip->IsTabPinned(i))) { |
| 889 continue; | 898 continue; |
| 890 } | 899 } |
| 891 | 900 |
| 892 if (!title.empty() && !MatchPattern(web_contents->GetTitle(), | 901 if (!title.empty() && !MatchPattern(web_contents->GetTitle(), |
| 893 base::UTF8ToUTF16(title))) | 902 base::UTF8ToUTF16(title))) |
| 894 continue; | 903 continue; |
| 895 | 904 |
| 896 if (!url_pattern.MatchesURL(web_contents->GetURL())) | 905 if (!url_patterns.is_empty() && |
| 906 !url_patterns.MatchesURL(web_contents->GetURL())) |
| 897 continue; | 907 continue; |
| 898 | 908 |
| 899 if (loading_status_set && loading != web_contents->IsLoading()) | 909 if (loading_status_set && loading != web_contents->IsLoading()) |
| 900 continue; | 910 continue; |
| 901 | 911 |
| 902 result->Append(ExtensionTabUtil::CreateTabValue( | 912 result->Append(ExtensionTabUtil::CreateTabValue( |
| 903 web_contents, tab_strip, i, extension())); | 913 web_contents, tab_strip, i, extension())); |
| 904 } | 914 } |
| 905 } | 915 } |
| 906 | 916 |
| (...skipping 1008 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1915 ZoomController::ZoomMode zoom_mode = zoom_controller->zoom_mode(); | 1925 ZoomController::ZoomMode zoom_mode = zoom_controller->zoom_mode(); |
| 1916 api::tabs::ZoomSettings zoom_settings; | 1926 api::tabs::ZoomSettings zoom_settings; |
| 1917 ZoomModeToZoomSettings(zoom_mode, &zoom_settings); | 1927 ZoomModeToZoomSettings(zoom_mode, &zoom_settings); |
| 1918 | 1928 |
| 1919 results_ = api::tabs::GetZoomSettings::Results::Create(zoom_settings); | 1929 results_ = api::tabs::GetZoomSettings::Results::Create(zoom_settings); |
| 1920 SendResponse(true); | 1930 SendResponse(true); |
| 1921 return true; | 1931 return true; |
| 1922 } | 1932 } |
| 1923 | 1933 |
| 1924 } // namespace extensions | 1934 } // namespace extensions |
| OLD | NEW |