Chromium Code Reviews| 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 |