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

Side by Side Diff: extensions/browser/api/app_window/app_window_api.cc

Issue 1211003006: [Extensions OOPI] Update app window bindings for OOPI (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 5 years, 5 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 "extensions/browser/api/app_window/app_window_api.h" 5 #include "extensions/browser/api/app_window/app_window_api.h"
6 6
7 #include "base/command_line.h" 7 #include "base/command_line.h"
8 #include "base/strings/string_number_conversions.h" 8 #include "base/strings/string_number_conversions.h"
9 #include "base/strings/string_util.h" 9 #include "base/strings/string_util.h"
10 #include "base/time/time.h" 10 #include "base/time/time.h"
11 #include "base/values.h" 11 #include "base/values.h"
12 #include "content/public/browser/notification_registrar.h" 12 #include "content/public/browser/notification_registrar.h"
13 #include "content/public/browser/notification_types.h" 13 #include "content/public/browser/notification_types.h"
14 #include "content/public/browser/render_frame_host.h" 14 #include "content/public/browser/render_frame_host.h"
15 #include "content/public/browser/render_process_host.h" 15 #include "content/public/browser/render_process_host.h"
16 #include "content/public/browser/render_view_host.h"
17 #include "content/public/browser/web_contents.h" 16 #include "content/public/browser/web_contents.h"
18 #include "content/public/common/url_constants.h" 17 #include "content/public/common/url_constants.h"
19 #include "extensions/browser/app_window/app_window.h" 18 #include "extensions/browser/app_window/app_window.h"
20 #include "extensions/browser/app_window/app_window_client.h" 19 #include "extensions/browser/app_window/app_window_client.h"
21 #include "extensions/browser/app_window/app_window_contents.h" 20 #include "extensions/browser/app_window/app_window_contents.h"
22 #include "extensions/browser/app_window/app_window_registry.h" 21 #include "extensions/browser/app_window/app_window_registry.h"
23 #include "extensions/browser/app_window/native_app_window.h" 22 #include "extensions/browser/app_window/native_app_window.h"
24 #include "extensions/browser/extensions_browser_client.h" 23 #include "extensions/browser/extensions_browser_client.h"
25 #include "extensions/common/api/app_window.h" 24 #include "extensions/common/api/app_window.h"
26 #include "extensions/common/features/simple_feature.h" 25 #include "extensions/common/features/simple_feature.h"
(...skipping 102 matching lines...) Expand 10 before | Expand all | Expand 10 after
129 // Don't create app window if the system is shutting down. 128 // Don't create app window if the system is shutting down.
130 if (ExtensionsBrowserClient::Get()->IsShuttingDown()) 129 if (ExtensionsBrowserClient::Get()->IsShuttingDown())
131 return false; 130 return false;
132 131
133 scoped_ptr<Create::Params> params(Create::Params::Create(*args_)); 132 scoped_ptr<Create::Params> params(Create::Params::Create(*args_));
134 EXTENSION_FUNCTION_VALIDATE(params.get()); 133 EXTENSION_FUNCTION_VALIDATE(params.get());
135 134
136 GURL url = extension()->GetResourceURL(params->url); 135 GURL url = extension()->GetResourceURL(params->url);
137 // Allow absolute URLs for component apps, otherwise prepend the extension 136 // Allow absolute URLs for component apps, otherwise prepend the extension
138 // path. 137 // path.
138 // TODO(devlin): Investigate if this is still used. If not, kill it dead!
139 GURL absolute = GURL(params->url); 139 GURL absolute = GURL(params->url);
140 if (absolute.has_scheme()) { 140 if (absolute.has_scheme()) {
141 if (extension()->location() == Manifest::COMPONENT) { 141 if (extension()->location() == Manifest::COMPONENT) {
142 url = absolute; 142 url = absolute;
143 } else { 143 } else {
144 // Show error when url passed isn't local. 144 // Show error when url passed isn't local.
145 error_ = app_window_constants::kInvalidUrlParameter; 145 error_ = app_window_constants::kInvalidUrlParameter;
146 return false; 146 return false;
147 } 147 }
148 } 148 }
(...skipping 15 matching lines...) Expand all
164 create_params.window_key = *options->id; 164 create_params.window_key = *options->id;
165 165
166 if (options->singleton && *options->singleton == false) { 166 if (options->singleton && *options->singleton == false) {
167 WriteToConsole( 167 WriteToConsole(
168 content::CONSOLE_MESSAGE_LEVEL_WARNING, 168 content::CONSOLE_MESSAGE_LEVEL_WARNING,
169 "The 'singleton' option in chrome.apps.window.create() is deprecated!" 169 "The 'singleton' option in chrome.apps.window.create() is deprecated!"
170 " Change your code to no longer rely on this."); 170 " Change your code to no longer rely on this.");
171 } 171 }
172 172
173 if (!options->singleton || *options->singleton) { 173 if (!options->singleton || *options->singleton) {
174 AppWindow* window = AppWindowRegistry::Get(browser_context()) 174 AppWindow* existing_window =
175 ->GetAppWindowForAppAndKey( 175 AppWindowRegistry::Get(browser_context())
176 extension_id(), create_params.window_key); 176 ->GetAppWindowForAppAndKey(extension_id(),
177 if (window) { 177 create_params.window_key);
178 content::RenderViewHost* created_view = 178 if (existing_window) {
179 window->web_contents()->GetRenderViewHost(); 179 content::RenderFrameHost* existing_frame =
180 int view_id = MSG_ROUTING_NONE; 180 existing_window->web_contents()->GetMainFrame();
181 int frame_id = MSG_ROUTING_NONE;
181 if (render_frame_host()->GetProcess()->GetID() == 182 if (render_frame_host()->GetProcess()->GetID() ==
182 created_view->GetProcess()->GetID()) { 183 existing_frame->GetProcess()->GetID()) {
183 view_id = created_view->GetRoutingID(); 184 frame_id = existing_frame->GetRoutingID();
184 } 185 }
185 186
186 if (!options->hidden.get() || !*options->hidden.get()) { 187 if (!options->hidden.get() || !*options->hidden.get()) {
187 if (options->focused.get() && !*options->focused.get()) 188 if (options->focused.get() && !*options->focused.get())
188 window->Show(AppWindow::SHOW_INACTIVE); 189 existing_window->Show(AppWindow::SHOW_INACTIVE);
189 else 190 else
190 window->Show(AppWindow::SHOW_ACTIVE); 191 existing_window->Show(AppWindow::SHOW_ACTIVE);
191 } 192 }
192 193
193 base::DictionaryValue* result = new base::DictionaryValue; 194 base::DictionaryValue* result = new base::DictionaryValue;
194 result->Set("viewId", new base::FundamentalValue(view_id)); 195 result->Set("frameId", new base::FundamentalValue(frame_id));
195 window->GetSerializedState(result); 196 existing_window->GetSerializedState(result);
196 result->SetBoolean("existingWindow", true); 197 result->SetBoolean("existingWindow", true);
197 // TODO(benwells): Remove HTML titlebar injection. 198 // TODO(benwells): Remove HTML titlebar injection.
198 result->SetBoolean("injectTitlebar", false); 199 result->SetBoolean("injectTitlebar", false);
199 SetResult(result); 200 SetResult(result);
200 SendResponse(true); 201 SendResponse(true);
201 return true; 202 return true;
202 } 203 }
203 } 204 }
204 } 205 }
205 206
(...skipping 131 matching lines...) Expand 10 before | Expand all | Expand 10 after
337 338
338 AppWindow* app_window = 339 AppWindow* app_window =
339 AppWindowClient::Get()->CreateAppWindow(browser_context(), extension()); 340 AppWindowClient::Get()->CreateAppWindow(browser_context(), extension());
340 app_window->Init(url, new AppWindowContentsImpl(app_window), create_params); 341 app_window->Init(url, new AppWindowContentsImpl(app_window), create_params);
341 342
342 if (ExtensionsBrowserClient::Get()->IsRunningInForcedAppMode() && 343 if (ExtensionsBrowserClient::Get()->IsRunningInForcedAppMode() &&
343 !app_window->is_ime_window()) { 344 !app_window->is_ime_window()) {
344 app_window->ForcedFullscreen(); 345 app_window->ForcedFullscreen();
345 } 346 }
346 347
347 content::RenderViewHost* created_view = 348 content::RenderFrameHost* created_frame =
348 app_window->web_contents()->GetRenderViewHost(); 349 app_window->web_contents()->GetMainFrame();
349 int view_id = MSG_ROUTING_NONE; 350 int frame_id = MSG_ROUTING_NONE;
350 if (create_params.creator_process_id == created_view->GetProcess()->GetID()) 351 if (create_params.creator_process_id == created_frame->GetProcess()->GetID())
351 view_id = created_view->GetRoutingID(); 352 frame_id = created_frame->GetRoutingID();
352 353
353 base::DictionaryValue* result = new base::DictionaryValue; 354 base::DictionaryValue* result = new base::DictionaryValue;
354 result->Set("viewId", new base::FundamentalValue(view_id)); 355 result->Set("frameId", new base::FundamentalValue(frame_id));
355 result->Set("injectTitlebar", 356 result->Set("injectTitlebar",
356 new base::FundamentalValue(inject_html_titlebar_)); 357 new base::FundamentalValue(inject_html_titlebar_));
357 result->Set("id", new base::StringValue(app_window->window_key())); 358 result->Set("id", new base::StringValue(app_window->window_key()));
358 app_window->GetSerializedState(result); 359 app_window->GetSerializedState(result);
359 SetResult(result); 360 SetResult(result);
360 361
361 if (AppWindowRegistry::Get(browser_context()) 362 if (AppWindowRegistry::Get(browser_context())
362 ->HadDevToolsAttached(created_view)) { 363 ->HadDevToolsAttached(app_window->web_contents())) {
363 AppWindowClient::Get()->OpenDevToolsWindow( 364 AppWindowClient::Get()->OpenDevToolsWindow(
364 app_window->web_contents(), 365 app_window->web_contents(),
365 base::Bind(&AppWindowCreateFunction::SendResponse, this, true)); 366 base::Bind(&AppWindowCreateFunction::SendResponse, this, true));
366 return true; 367 return true;
367 } 368 }
368 369
369 SendResponse(true); 370 SendResponse(true);
370 app_window->WindowEventsReady(); 371 app_window->WindowEventsReady();
371 372
372 return true; 373 return true;
(...skipping 174 matching lines...) Expand 10 before | Expand all | Expand 10 after
547 548
548 if (options.frame->as_frame_options->inactive_color.get()) { 549 if (options.frame->as_frame_options->inactive_color.get()) {
549 error_ = app_window_constants::kInactiveColorWithoutColor; 550 error_ = app_window_constants::kInactiveColorWithoutColor;
550 return false; 551 return false;
551 } 552 }
552 553
553 return true; 554 return true;
554 } 555 }
555 556
556 } // namespace extensions 557 } // namespace extensions
OLDNEW
« no previous file with comments | « content/renderer/render_frame_impl.cc ('k') | extensions/browser/app_window/app_window_contents.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698