OLD | NEW |
---|---|
1 // Copyright 2015 The Chromium Authors. All rights reserved. | 1 // Copyright 2015 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/desktop_capture/desktop_capture_base.h" | 5 #include "chrome/browser/extensions/api/desktop_capture/desktop_capture_base.h" |
6 | 6 |
7 #include <tuple> | 7 #include <tuple> |
8 #include <utility> | 8 #include <utility> |
9 | 9 |
10 #include "base/strings/utf_string_conversions.h" | 10 #include "base/strings/utf_string_conversions.h" |
(...skipping 58 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
69 bool DesktopCaptureChooseDesktopMediaFunctionBase::Execute( | 69 bool DesktopCaptureChooseDesktopMediaFunctionBase::Execute( |
70 const std::vector<api::desktop_capture::DesktopCaptureSourceType>& sources, | 70 const std::vector<api::desktop_capture::DesktopCaptureSourceType>& sources, |
71 content::WebContents* web_contents, | 71 content::WebContents* web_contents, |
72 const GURL& origin, | 72 const GURL& origin, |
73 const base::string16 target_name) { | 73 const base::string16 target_name) { |
74 // Register to be notified when the tab is closed. | 74 // Register to be notified when the tab is closed. |
75 Observe(web_contents); | 75 Observe(web_contents); |
76 | 76 |
77 bool show_screens = false; | 77 bool show_screens = false; |
78 bool show_windows = false; | 78 bool show_windows = false; |
79 bool show_tabs = false; | |
Sergey Ulanov
2016/01/13 22:53:16
remove this. You don't need any changes in this fi
GeorgeZ
2016/01/13 23:15:53
Done.
| |
79 | 80 |
80 for (auto source_type : sources) { | 81 for (auto source_type : sources) { |
81 switch (source_type) { | 82 switch (source_type) { |
82 case api::desktop_capture::DESKTOP_CAPTURE_SOURCE_TYPE_NONE: | 83 case api::desktop_capture::DESKTOP_CAPTURE_SOURCE_TYPE_NONE: |
83 error_ = kInvalidSourceNameError; | 84 error_ = kInvalidSourceNameError; |
84 return false; | 85 return false; |
85 | 86 |
86 case api::desktop_capture::DESKTOP_CAPTURE_SOURCE_TYPE_SCREEN: | 87 case api::desktop_capture::DESKTOP_CAPTURE_SOURCE_TYPE_SCREEN: |
87 show_screens = true; | 88 show_screens = true; |
88 break; | 89 break; |
89 | 90 |
90 case api::desktop_capture::DESKTOP_CAPTURE_SOURCE_TYPE_WINDOW: | 91 case api::desktop_capture::DESKTOP_CAPTURE_SOURCE_TYPE_WINDOW: |
91 show_windows = true; | 92 show_windows = true; |
92 break; | 93 break; |
93 | 94 |
94 case api::desktop_capture::DESKTOP_CAPTURE_SOURCE_TYPE_TAB: | 95 case api::desktop_capture::DESKTOP_CAPTURE_SOURCE_TYPE_TAB: |
95 error_ = kTabCaptureNotSupportedError; | 96 error_ = kTabCaptureNotSupportedError; |
96 return false; | 97 return false; |
98 break; | |
97 } | 99 } |
98 } | 100 } |
99 | 101 |
100 if (!show_screens && !show_windows) { | 102 if (!show_screens && !show_windows && !show_tabs) { |
101 error_ = kEmptySourcesListError; | 103 error_ = kEmptySourcesListError; |
102 return false; | 104 return false; |
103 } | 105 } |
104 | 106 |
105 const gfx::NativeWindow parent_window = | 107 const gfx::NativeWindow parent_window = |
106 web_contents->GetTopLevelNativeWindow(); | 108 web_contents->GetTopLevelNativeWindow(); |
107 scoped_ptr<DesktopMediaList> media_list; | 109 scoped_ptr<DesktopMediaList> media_list; |
108 if (g_picker_factory) { | 110 if (g_picker_factory) { |
109 media_list = g_picker_factory->CreateModel( | 111 media_list = g_picker_factory->CreateModel( |
110 show_screens, show_windows); | 112 show_screens, show_windows); |
111 picker_ = g_picker_factory->CreatePicker(); | 113 picker_ = g_picker_factory->CreatePicker(); |
112 } else { | 114 } else { |
113 #if defined(USE_ASH) | 115 #if defined(USE_ASH) |
114 if (chrome::IsNativeWindowInAsh(parent_window)) { | 116 if (chrome::IsNativeWindowInAsh(parent_window)) { |
115 media_list.reset(new DesktopMediaListAsh( | 117 media_list.reset(new DesktopMediaListAsh( |
116 (show_screens ? DesktopMediaListAsh::SCREENS : 0) | | 118 (show_screens ? DesktopMediaListAsh::SCREENS : 0) | |
117 (show_windows ? DesktopMediaListAsh::WINDOWS : 0))); | 119 (show_windows ? DesktopMediaListAsh::WINDOWS : 0))); |
118 } | 120 } |
119 #endif | 121 #endif |
120 if (!media_list) { | 122 if (!media_list) { |
121 webrtc::DesktopCaptureOptions options = | 123 webrtc::DesktopCaptureOptions options = |
122 webrtc::DesktopCaptureOptions::CreateDefault(); | 124 webrtc::DesktopCaptureOptions::CreateDefault(); |
123 options.set_disable_effects(false); | 125 options.set_disable_effects(false); |
124 scoped_ptr<webrtc::ScreenCapturer> screen_capturer( | 126 scoped_ptr<webrtc::ScreenCapturer> screen_capturer( |
125 show_screens ? webrtc::ScreenCapturer::Create(options) : NULL); | 127 show_screens ? webrtc::ScreenCapturer::Create(options) : NULL); |
126 scoped_ptr<webrtc::WindowCapturer> window_capturer( | 128 scoped_ptr<webrtc::WindowCapturer> window_capturer( |
127 show_windows ? webrtc::WindowCapturer::Create(options) : NULL); | 129 show_windows ? webrtc::WindowCapturer::Create(options) : NULL); |
128 | |
129 media_list.reset(new NativeDesktopMediaList(std::move(screen_capturer), | 130 media_list.reset(new NativeDesktopMediaList(std::move(screen_capturer), |
130 std::move(window_capturer))); | 131 std::move(window_capturer))); |
131 } | 132 } |
132 | 133 |
133 // DesktopMediaPicker is implemented only for Windows, OSX and | 134 // DesktopMediaPicker is implemented only for Windows, OSX and |
134 // Aura Linux builds. | 135 // Aura Linux builds. |
135 // TODO(bshe): Use ANDROID_JAVA_UI flag here after it landed. | 136 // TODO(bshe): Use ANDROID_JAVA_UI flag here after it landed. |
136 #if (defined(TOOLKIT_VIEWS) && !defined(OS_ANDROID)) || defined(OS_MACOSX) | 137 #if (defined(TOOLKIT_VIEWS) && !defined(OS_ANDROID)) || defined(OS_MACOSX) |
137 // TODO(bshe): This is called if chrome.desktopCapture.chooseDesktopMedia | 138 // TODO(bshe): This is called if chrome.desktopCapture.chooseDesktopMedia |
138 // or chrome.webrtcDesktopCapturePrivate.chooseDesktopMedia are called by | 139 // or chrome.webrtcDesktopCapturePrivate.chooseDesktopMedia are called by |
(...skipping 95 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
234 | 235 |
235 void DesktopCaptureRequestsRegistry::CancelRequest(int process_id, | 236 void DesktopCaptureRequestsRegistry::CancelRequest(int process_id, |
236 int request_id) { | 237 int request_id) { |
237 RequestsMap::iterator it = requests_.find(RequestId(process_id, request_id)); | 238 RequestsMap::iterator it = requests_.find(RequestId(process_id, request_id)); |
238 if (it != requests_.end()) | 239 if (it != requests_.end()) |
239 it->second->Cancel(); | 240 it->second->Cancel(); |
240 } | 241 } |
241 | 242 |
242 | 243 |
243 } // namespace extensions | 244 } // namespace extensions |
OLD | NEW |