Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 2 additions & 3 deletions app/lib/dartdoc/dartdoc_page.dart
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@
import 'package:_pub_shared/dartdoc/dartdoc_page.dart';
import 'package:path/path.dart' as p;
import 'package:pub_dev/frontend/dom/dom.dart' as d;
import 'package:pub_dev/frontend/request_context.dart';

import 'package:pub_dev/frontend/static_files.dart';
import 'package:pub_dev/service/image_proxy/backend.dart';
import 'package:pub_dev/shared/configuration.dart';
Expand Down Expand Up @@ -358,8 +358,7 @@ String _replaceImageMarkers(String html, String? imageProxyNonce) {
return html.replaceAllMapped(imageMarkerRegExp, (match) {
final originalUrl = Uri.decodeComponent(match.group(1)!);
var replacementUrl = originalUrl;
if (requestContext.experimentalFlags.isImageProxyEnabled &&
activeConfiguration.imageProxyServiceBaseUrl != null) {
if (activeConfiguration.imageProxyServiceBaseUrl != null) {
final uri = Uri.tryParse(originalUrl);
if (uri != null) {
replacementUrl = imageProxyBackend.imageProxyUrl(uri) ?? originalUrl;
Expand Down
3 changes: 0 additions & 3 deletions app/lib/frontend/handlers/experimental.dart
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,6 @@ typedef PublicFlag = ({String name, String description});

const _publicFlags = <PublicFlag>{
(name: 'example', description: 'Short description'),
(name: 'image-proxy', description: 'Use the image proxy for images'),
};

final _allFlags = <String>{
Expand Down Expand Up @@ -92,8 +91,6 @@ class ExperimentalFlags {

late final isExposeLicenseDiffEnabled = isEnabled('expose-licence-diff');

bool get isImageProxyEnabled => isEnabled('image-proxy');

String encodedAsCookie() => _enabled.join(':');

@override
Expand Down
4 changes: 1 addition & 3 deletions app/lib/shared/markdown.dart
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,6 @@ import 'package:html/dom_parsing.dart' as html_parsing;
import 'package:html/parser.dart' as html_parser;
import 'package:logging/logging.dart';
import 'package:markdown/markdown.dart' as m;
import 'package:pub_dev/frontend/request_context.dart';
import 'package:pub_dev/frontend/static_files.dart';
import 'package:pub_dev/service/image_proxy/backend.dart';
import 'package:pub_dev/shared/changelog.dart';
Expand Down Expand Up @@ -127,8 +126,7 @@ String _postProcessHtml(
var root = html_parser.parseFragment(rawHtml);

_RelativeUrlRewriter(urlResolverFn, relativeFrom).visit(root);
if (requestContext.experimentalFlags.isImageProxyEnabled &&
activeConfiguration.imageProxyServiceBaseUrl != null) {
if (activeConfiguration.imageProxyServiceBaseUrl != null) {
_ImageProxyRewriter().visit(root);
}

Expand Down
31 changes: 2 additions & 29 deletions app/test/dartdoc/dartdoc_image_proxy_test.dart
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,6 @@
// BSD-style license that can be found in the LICENSE file.

import 'package:pub_dev/dartdoc/dartdoc_page.dart';
import 'package:pub_dev/frontend/handlers/experimental.dart';
import 'package:pub_dev/frontend/request_context.dart';
import 'package:pub_dev/service/image_proxy/backend.dart';
import 'package:pub_dev/shared/configuration.dart';
Expand All @@ -19,9 +18,7 @@ void main() {
);

registerActiveConfiguration(config);
registerRequestContext(
RequestContext(experimentalFlags: ExperimentalFlags({'image-proxy'})),
);
registerRequestContext(RequestContext());
registerImageProxyBackend(_FakeImageProxyBackend());

final imageProxyNonce = '1234567890abcdef1234567890abcdef';
Expand All @@ -41,38 +38,14 @@ void main() {

scopedTest('normal double curlies are preserved', () async {
registerActiveConfiguration(Configuration.test());
registerRequestContext(
RequestContext(experimentalFlags: ExperimentalFlags.empty),
);
registerRequestContext(RequestContext());

final sidebar = DartDocSidebar(
content: '<p>Some text with {{marker}} and }} and {{.</p>',
imageProxyNonce: 'imageProxyNonce',
);
expect(sidebar.render(), contains('{{marker}} and }} and {{'));
});

scopedTest('dartdoc images use original URL if proxy is disabled', () async {
final config = Configuration.test(
primarySiteUri: Uri.parse('https://pub.dev/'),
imageProxyServiceBaseUrl: 'https://proxy.pub.dev',
);

registerActiveConfiguration(config);
registerRequestContext(
RequestContext(experimentalFlags: ExperimentalFlags.empty),
);
registerImageProxyBackend(_FakeImageProxyBackend());

final imageProxyNonce = 'imageProxyNonce';
final sidebar = DartDocSidebar(
content:
'<img src="{$imageProxyNonce}:{https%3A%2F%2Fexample.com%2Fimage.png}">',
imageProxyNonce: imageProxyNonce,
);
final rendered = sidebar.render();
expect(rendered, contains('src="https://example.com/image.png"'));
});
}

class _FakeImageProxyBackend implements ImageProxyBackend {
Expand Down
35 changes: 4 additions & 31 deletions app/test/shared/markdown_image_proxy_test.dart
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,6 @@
// BSD-style license that can be found in the LICENSE file.

import 'package:gcloud/service_scope.dart';
import 'package:pub_dev/frontend/handlers/experimental.dart';
import 'package:pub_dev/frontend/request_context.dart';
import 'package:pub_dev/service/image_proxy/backend.dart';
import 'package:pub_dev/shared/configuration.dart';
Expand All @@ -19,9 +18,7 @@ void main() {

await fork(() async {
registerActiveConfiguration(config);
registerRequestContext(
RequestContext(experimentalFlags: ExperimentalFlags({'image-proxy'})),
);
registerRequestContext(RequestContext());
registerImageProxyBackend(_FakeImageProxyBackend());

final html = markdownToHtml('![text](https://example.com/image.png)');
Expand All @@ -42,9 +39,7 @@ void main() {

await fork(() async {
registerActiveConfiguration(config);
registerRequestContext(
RequestContext(experimentalFlags: ExperimentalFlags({'image-proxy'})),
);
registerRequestContext(RequestContext());
registerImageProxyBackend(_FakeImageProxyBackend());

for (final host in [
Expand All @@ -62,24 +57,6 @@ void main() {
});
});

test('images are NOT proxied when experiment is disabled', () async {
final config = Configuration.test(
primarySiteUri: Uri.parse('https://pub.dev/'),
imageProxyServiceBaseUrl: 'https://proxy.pub.dev',
);

await fork(() async {
registerActiveConfiguration(config);
registerRequestContext(
RequestContext(experimentalFlags: ExperimentalFlags.empty),
);
registerImageProxyBackend(_FakeImageProxyBackend());

final html = markdownToHtml('![text](https://example.com/image.png)');
expect(html, contains('src="https://example.com/image.png"'));
});
});

test('image tag is removed if proxying fails', () async {
final config = Configuration.test(
primarySiteUri: Uri.parse('https://pub.dev/'),
Expand All @@ -88,9 +65,7 @@ void main() {

await fork(() async {
registerActiveConfiguration(config);
registerRequestContext(
RequestContext(experimentalFlags: ExperimentalFlags({'image-proxy'})),
);
registerRequestContext(RequestContext());
registerImageProxyBackend(_NullImageProxyBackend());

final html = markdownToHtml('![text](https://example.com/image.png)');
Expand All @@ -107,9 +82,7 @@ void main() {

await fork(() async {
registerActiveConfiguration(config);
registerRequestContext(
RequestContext(experimentalFlags: ExperimentalFlags({'image-proxy'})),
);
registerRequestContext(RequestContext());
registerImageProxyBackend(_FakeImageProxyBackend());

final html = markdownToHtml('![text](ftp://example.com/image.png)');
Expand Down
Loading